Bonjour,
Je souhaitais faire la mise à jour d'une table mysql avec une méthode ajax (pas très pure ).
Alors voilà sur ma page php un tableau avec avec des radiobutton; et je voudrais quant je clique sur l'un d'eux, mettre à jour ma table.
page.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
echo '<tr><td>...</td>
			<td>...</td>
			<td>
<input type="radio" name="fragment_ref" id="fragment_ref" value="'.$B3['ID'].'" '.($B3['fragment_ref']===true?'checked':'').' onchange="changeFragmentRef('.$B3['ID_citation'].', '.$B3['ID'].')"/>
			</td>
			</tr>';
le javascript (vous reconnaitrez le code de siddh)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
function getXhr(){
	var xhr = null;
	if(window.XMLHttpRequest) // Firefox et autres
		xhr = new XMLHttpRequest();
	else if(window.ActiveXObject){ // Internet Explorer
		try {
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			xhr = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	else { // XMLHttpRequest non supporté par le navigateur
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
		xhr = false;
	}
	return xhr;
}
 
/**
* Méthode qui sera appelée sur le onchange du select
*/
function changeFragmentRef(id_cit, frag_ref){
 
	var xhr = getXhr();
	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function(){
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhr.readyState == 4 && xhr.status == 200){
			alert('Mise à jour du fragment de référence ok');
		}
	}
 
	// Ici on va voir comment faire du post
	xhr.open("POST","action_ajax.php",true);
 
	// ne pas oublier ça pour le post
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
 
	//  poster les arguments
	xhr.send("fragment_ref="+frag_ref+"&id_cit="+id_cit);
	alert("id_cit = "+id_cit+" et frag_ref = "+frag_ref);
}
et la page php, action_ajax.php, qui devrait faire l'action qu'elle ne fait pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
<?php
$db = new db();
$sql='UPDATE citations SET ID_fragment_ref = :ID_fragment_ref 
                WHERE ID = :id_citation';
$req = $db->res->prepare($sql);
$temp = $req->execute(array('ID_fragment_ref' => $_POST["fragment_ref"], 'id_citation' => $_POST["id_cit"]));
?>
Mais je n'ai aucun message d'erreur, et la table n'est pas mise à jour; je précise que les 2 variables, id_cit et frag_ref, sont définit.