11305 sujets

JavaScript, DOM et API Web HTML5

Salut à tous,
je prévient d'avance je suis une quiche en ajax, mais j'essaye de faire des trucs Smiley smile .
voila ce qui m'amène.
j'ai une Bdd avec des résultats sous forme de tableau a pointé ligne par ligne avec des boutons oui/non dans un back-office.
je voudrait mettre en place ces boutons oui/non en ajax.
voici mon code:

...
$lepointage =  $data['pointage'];
				if ($lepointage=='oui'){
				$lepointage = '<button type="button" onclick="theval(this)" id="'.$idfac.'" class="btn btn-success btn-sm">Oui</button>';
				}else{
				$lepointage = '<button type="button" onclick="theval(this)" id="'.$idfac.'" class="btn btn-danger btn-sm">non</button>';
				}
echo'<td class="text-center">'.$lepointage.'</td>...


ensuite le script

function theval(element) {
var id = element.id;
var theval = new XMLHttpRequest();
theval.open("GET", "compta/js-pointer.php?formid=" + id, true);
theval.send(null);
}

et la page de traitement js-pointer.php

    if( isset($_POST['formid']) && $_POST['formid']!="" ){
	$lefinal = $_POST['formid'];
	
	$req = $mysqli->query("SELECT * FROM compta WHERE id=$lefinal") or die ('Erreur SQL !<br />'.$sql.'<br />'.$mysqli->error);

 	while($data = mysqli_fetch_array($req))
		{
		$thepointage =  $data['pointage'];
			if($thepointage == 'oui'){
				$sql1 ="UPDATE compta SET pointage='non' WHERE id='$lefinal' ";
				$req1= $mysqli->query($sql1) or die ('Erreur SQL1 !<br />'.$sql1.'<br />'.$mysqli->error);
			}elseif($thepointage == 'non'){
				$sql2 ="UPDATE compta SET pointage='oui' WHERE id='$lefinal' ";
				$req2= $mysqli->query($sql2) or die ('Erreur SQL2 !<br />'.$sql2.'<br />'.$mysqli->error);
			}
		}
        
    }


donc quand je clique je n'ai pas d'erreur console mais l'update de la bdd ne se fait pas.
c'est ou que j'ai merdé ...
Merci d'avance de votre aide.
Cdt
Bonjour,

Tu envoies ta requête ajax avec la méthode GET et le paramètre formid dans l'URL, il faut donc utiliser $_GET à la place $_POST dans ton code php.

Attention aux éventuelles injections sql, si le paramètre formid est un nombre entier, tu pourrais utiliser au minimum intval() pour filtrer ce paramètre.

En plus de la console, penses à utiliser l'onglet Réseau dans les outils de dév de ton navigateur pour analyser la requête ajax et son retour.