Execution de requetes SQL via Ajax

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par ygalr22, 3 Novembre 2008.

  1. ygalr22
    ygalr22 WRInaute discret
    Inscrit:
    9 Janvier 2008
    Messages:
    127
    J'aime reçus:
    0
    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)
    Code:
                          
    <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:
    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:
    <?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!
     
  2. Bacteries
    Bacteries WRInaute passionné
    Inscrit:
    27 Mai 2004
    Messages:
    1 259
    J'aime reçus:
    0
    Tu utilises firebug?
    Dans l'onglet réseau tu peux voir ce qui est envoyé à ta page Recommander.php et voir les paramètre, réponse, ...

    Cherche de ce coté à mon avis (ou met des print_r($_POST) sur ta page PHP).
     
  3. ygalr22
    ygalr22 WRInaute discret
    Inscrit:
    9 Janvier 2008
    Messages:
    127
    J'aime reçus:
    0
    Salut et merci de ta réponse rapide!

    Firebug? Je ne connais pas, je vais tester! :oops:

    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.
     
  4. ygalr22
    ygalr22 WRInaute discret
    Inscrit:
    9 Janvier 2008
    Messages:
    127
    J'aime reçus:
    0
    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);" :
    Code:
    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?
     
  5. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 874
    J'aime reçus:
    71
    Bein une fois l'enregistrement fait, tu réactualises la div qui affiche ton compteur (cf propriété JS innerHTML).
     
  6. ygalr22
    ygalr22 WRInaute discret
    Inscrit:
    9 Janvier 2008
    Messages:
    127
    J'aime reçus:
    0
    Salut!

    C'est faisable de réactualiser juste la div???
    Pour le moment je réactualise la page, du coup je vois pas trop l'intérêt de Ajax dans ce cas! ;)
     
  7. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 874
    J'aime reçus:
    71
    Bein oui si t'as div possède un id unique, tu peux tout à fait ne modifier que le contenu de celle-ci.
     
  8. ygalr22
    ygalr22 WRInaute discret
    Inscrit:
    9 Janvier 2008
    Messages:
    127
    J'aime reçus:
    0
    C'est pas faux, mais ça oblige à réexecuter des requêtes...
    Quest-ce qui est le plus ourd? Recharger une page ou exécuter une requête? :roll:
    Bon Ok!, je m'y met!!

    Merci pour le coup de main!
     
  9. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 874
    J'aime reçus:
    71
    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.
     
  10. ygalr22
    ygalr22 WRInaute discret
    Inscrit:
    9 Janvier 2008
    Messages:
    127
    J'aime reçus:
    0
    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.
     
  11. Bacteries
    Bacteries WRInaute passionné
    Inscrit:
    27 Mai 2004
    Messages:
    1 259
    J'aime reçus:
    0
    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.
     
  12. ygalr22
    ygalr22 WRInaute discret
    Inscrit:
    9 Janvier 2008
    Messages:
    127
    J'aime reçus:
    0
    Ok, merci je vais essayer ca!
     
Chargement...
Similar Threads - Execution requetes SQL Forum Date
Comment stopper l'exécution de script ajax Développement d'un site Web ou d'une appli mobile 21 Avril 2019
Exécution requête sur bouton sur une ligne tableau Administration d'un site Web 5 Juillet 2017
Stopper execution $.ajax() après un clic Développement d'un site Web ou d'une appli mobile 5 Mars 2017
exécution programme binaire sur des systèmes d'exploitation Débuter en référencement 5 Novembre 2014
"max execution time" et hébergement mutualisé Administration d'un site Web 19 Février 2014
MySQL différence d'exécution Développement d'un site Web ou d'une appli mobile 15 Janvier 2013
Optimiser l'éxécution du JS Développement d'un site Web ou d'une appli mobile 21 Août 2012
Demande de conseils sur execution Java Script Demandes d'avis et de conseils sur vos sites 13 Avril 2012
Temps d'éxécution requête mysql vraiment contre intuitif Développement d'un site Web ou d'une appli mobile 9 Novembre 2011
Execution de code HTML brute Administration d'un site Web 13 Juin 2011
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice