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
le javascript (vous reconnaitrez le code de siddh)
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>';
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
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); }
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.
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"])); ?>![]()
Partager