Execution de requetes SQL via Ajax
12 messages
• Page 1 sur 1
-

ygalr22 - WRInaute discret

- Messages: 140
- Inscription: 9 Jan 2008
Execution de requetes SQL via Ajax
Bonjour à tous,
Voila, j'essaye de mettre à jour un champ dans une table de ma BDD.
En gros, lorsque l'utilisateur clique sur un bouton, le champ (int) de la Table doit s'incrémenter de +1.
Pour ce faire, j'essaye (je dit bien j'essaye!
) d'utiliser Ajax.
Donc voila ou j'en suis:
Dans mon code PHP, le lien sur lequel j'appelle une fonction JavaScript:
($Rea_Num est le numéro du commentaire à recommander)
La Fonction appelée lors du click:
Et mon script "Recommander.php":
Donc voila, je ne sais pas si mon code est bon, je n'ai pas d'erreur dans la Console, mais apparemment la requête ne s'exécute pas puisque le champ de la table n'est pas mis à jour.
Si quelqu'un peut m'éclairer, je débute en Ajax
Merci!
Voila, j'essaye de mettre à jour un champ dans une table de ma BDD.
En gros, lorsque l'utilisateur clique sur un bouton, le champ (int) de la Table doit s'incrémenter de +1.
Pour ce faire, j'essaye (je dit bien j'essaye!
Donc voila ou j'en suis:
Dans mon code PHP, le lien sur lequel j'appelle une fonction JavaScript:
($Rea_Num est le numéro du commentaire à recommander)
- Code: Tout sélectionner
<a href=\"#Comm_$Rea_Num\" id=BoutonPlus class=BulleValid onclick=\"RecoReac('$Rea_Num')\";>
<span>Recommander ce commentaire</span>
</a>
La Fonction appelée lors du click:
- Code: Tout sélectionner
function RecoReac(NumReac){
var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
xhr_object.open("POST", "Recommander.php", true);
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
var data = "NUMREAC="+NumReac;
xhr_object.send(data);
}
Et mon script "Recommander.php":
- Code: Tout sélectionner
<?php
header('Content-type: text/html; charset=iso-8859-1');
INCLUDE_ONCE("Script.php");
//On récupere le numéro du commentaire à recommander
$NumReac=$_POST['NUMREAC'];
//On augmente le nombre de recommandations.
//Requete:
$Req="UPDATE `reactions`
SET `Rea_Reco` =Rea_Reco+1
WHERE `Rea_Num` =$NumReac;" ;
//on exécute la requete
Requete($Req, $G_Pointeur);//Exécution de la requete
?>
Donc voila, je ne sais pas si mon code est bon, je n'ai pas d'erreur dans la Console, mais apparemment la requête ne s'exécute pas puisque le champ de la table n'est pas mis à jour.
Si quelqu'un peut m'éclairer, je débute en Ajax
Merci!
-

ygalr22 - WRInaute discret

- Messages: 140
- Inscription: 9 Jan 2008
Salut et merci de ta réponse rapide!
Firebug? Je ne connais pas, je vais tester!
Pour l'idée des print_r($_POST), je fait un echo des données en POST, et cela n'affiche rien...
En fait lorsque je clique sur le lien je reste sur la même page.
Sinon mon code semble correct?
EDIT: Je viens de tester Firebug... Nikel ce petit truc, merci!
J'ai une ligne d'erreur dans l'onglet réseau:
POST Recommander.php
[mon site]/Articles/Recommander.php
404 Not Found
Je pense voir d'où cela vient, je regarde et te redis.
Firebug? Je ne connais pas, je vais tester!
Pour l'idée des print_r($_POST), je fait un echo des données en POST, et cela n'affiche rien...
En fait lorsque je clique sur le lien je reste sur la même page.
Sinon mon code semble correct?
EDIT: Je viens de tester Firebug... Nikel ce petit truc, merci!
J'ai une ligne d'erreur dans l'onglet réseau:
POST Recommander.php
[mon site]/Articles/Recommander.php
404 Not Found
Je pense voir d'où cela vient, je regarde et te redis.
Dernière édition par ygalr22 le Lun Nov 03, 2008 17:56, édité 1 fois.
-

ygalr22 - WRInaute discret

- Messages: 140
- Inscription: 9 Jan 2008
Ok, ca marche à moitié depuis que j'ai apporté une petite modification:
Dans le code Javascript apres la ligne "xhr_object.open("POST", "../Script/Recommander.php", true);" :
La mise à jour du champ de la table se fait bien, mais pour que la modification soit visible pour l'utilisateur celui-ci doit recharger la page...
J'aimerais que cela ce fasse automatiquement, comment faire?
Dans le code Javascript apres la ligne "xhr_object.open("POST", "../Script/Recommander.php", true);" :
- Code: Tout sélectionner
xhr_object.onreadystatechange = function anonymous() {
if(xhr_object.readyState == 4)
eval(xhr_object.responseText);
}
La mise à jour du champ de la table se fait bien, mais pour que la modification soit visible pour l'utilisateur celui-ci doit recharger la page...
J'aimerais que cela ce fasse automatiquement, comment faire?
-

UsagiYojimbo - WRInaute accro

- Messages: 8575
- Inscription: 23 Nov 2005
Bein une fois l'enregistrement fait, tu réactualises la div qui affiche ton compteur (cf propriété JS innerHTML).
-

UsagiYojimbo - WRInaute accro

- Messages: 8575
- Inscription: 23 Nov 2005
Bein oui si t'as div possède un id unique, tu peux tout à fait ne modifier que le contenu de celle-ci.
-

UsagiYojimbo - WRInaute accro

- Messages: 8575
- Inscription: 23 Nov 2005
En quoi cela t'obligerait t'il à rééxécuter des requêtes ? Il te suffit de récupérer, lors de l'appel à ta fonction php qui met à jour ta table, la valeur a laquelle cette table a été mise à jour, et d'afficher cette valeur dans ta div.
-

ygalr22 - WRInaute discret

- Messages: 140
- Inscription: 9 Jan 2008
Re!
Je serait obligé de (ré)exécuter certaines requêtes car le fait de modifier la donnée en Ajax, modifie toute une partie de ma page est changée, donc elle doit être rechargée.
(ce qui est faisable avec ajax, mais plus fastidieux qu'un simple reload)
Enfin dites moi si je me trompe, peut être mon problème est très (trop?) spécifique.
Je serait obligé de (ré)exécuter certaines requêtes car le fait de modifier la donnée en Ajax, modifie toute une partie de ma page est changée, donc elle doit être rechargée.
(ce qui est faisable avec ajax, mais plus fastidieux qu'un simple reload)
Enfin dites moi si je me trompe, peut être mon problème est très (trop?) spécifique.
-

Bacteries - WRInaute passionné

- Messages: 1369
- Inscription: 27 Mai 2004
Non c'est plutôt générique.
Le plus simple : appeller un script PHP qui te retourne le HTML à intégrer à ta page.
Tu récupère le "text" de ton appel Ajax et tu le mets dans le innerHTML de ta div.
Et ça tu peux le faire après la MAJ dans ta table, donc tout en un.
Le plus simple : appeller un script PHP qui te retourne le HTML à intégrer à ta page.
Tu récupère le "text" de ton appel Ajax et tu le mets dans le innerHTML de ta div.
Et ça tu peux le faire après la MAJ dans ta table, donc tout en un.
12 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
