IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] Récupérer le résultat d'une requête mySql stockée dans un fichier PHP


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Par défaut [AJAX] Récupérer le résultat d'une requête mySql stockée dans un fichier PHP
    Bonjour,

    Pour développer un module Prestashop ( slider lié à une base mySql ) il me reste une étape que je n'arrive pas à franchir.

    Je souhaite passer une requête Ajax (sans jQuery), qui aille exécuter un fichier PHP contenant une requête mySql. Je voudrais ensuite pouvoir traiter la réponse de cette requête dans le Javascript (informations textuelles uniquement ).

    Voici le code dans mon fichier JS (juste la partie concernée):

    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
    function getXMLHttpRequest() {
    			var xhr = null;
     
    			if (window.XMLHttpRequest || window.ActiveXObject) {
    				if (window.ActiveXObject) {
    					try {
    						xhr = new ActiveXObject("Msxml2.XMLHTTP");
    					} catch(e) {
    						xhr = new ActiveXObject("Microsoft.XMLHTTP");
    					}
    				} else {
    					xhr = new XMLHttpRequest(); 
    				}
    			} else {
    				alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
    				return null;
    			}
     
    			return xhr;
    		}
     
    var xhr = getXMLHttpRequest(); 
    			xhr.open("GET", "ajaxslider.php", true);
    			xhr.send(null);
    Et voici le code de ajaxslider.php :

    Code php : 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
    <?php
     
    $slides = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
    			SELECT hs.`id_homeslider_slides` as id_slide,
    					   hssl.`image`,
    					   hss.`position`,
    					   hss.`active`,
    					   hssl.`title`,
    					   hssl.`url`,
    					   hssl.`legend`,
    					   hssl.`description`
    			FROM '._DB_PREFIX_.'homeslider hs
    			LEFT JOIN '._DB_PREFIX_.'homeslider_slides hss ON (hs.id_homeslider_slides = hss.id_homeslider_slides)
    			LEFT JOIN '._DB_PREFIX_.'homeslider_slides_lang hssl ON (hss.id_homeslider_slides = hssl.id_homeslider_slides)
    			WHERE (id_shop = '.(int)$id_shop.')
    			AND hssl.id_lang = '.(int)$id_lang.
    			($active ? ' AND hss.`active` = 1' : ' ').'
    			ORDER BY hss.position');
     
     
    		return $slides;
    ?>

    Ensuite, au chargement de la page, je vais dans Firebug qui me dit dans Headers : "status 404", puis dans Réponse, j'ai tout le code de la page d'accueil du site...

    J'ai même essayé en mettant en simple echo dans le fichier ajaxslider.php, mais idem.

    Pour la fonction getXMLHttpRequest, j'ai essayé environ 20 méthodes différentes d'Ajax pour traiter ma réponse, toute me retournent la même réponse.

    Merci d'avance :p

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Rien ne va dans ton code
    1) le php appelé doit n'avoir aucune sortie vers le client.
    il concatenes (y compris avec des "<br />" une variable par exemple
    $reponse et fait un seul echo de cette variable.
    2) dans ces conditions, si par exemple dans ta page tu as
    un DIV ID=toto tu fais ainsi
    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
     
    <script type="text/javascript">
    function maFonctionAjax()
     {
      var MonAjax;
      if (window.XMLHttpRequest){ MonAjax = new XMLHttpRequest();}
      else if (window.ActiveXObject) {MonAjax = new ActiveXObject('Microsoft.XMLHTTP');}
      else {
        alert("Votre navigateur n'est pas adapté pour faire des requêtes AJAX..."); 
        MonAjax = false;   }
      MonAjax.open('POST',"ajaxslider.php",true);
      MonAjax.onreadystatechange = function()
      {
          if (MonAjax.readyState == 4 && MonAjax.status == 200)
          {
              document.getElementById('toto').innerHTML = MonAjax.responseText;}
          }
      }
      MonAjax.setRequestHeader('Content-type','application/x-www-form-urlencoded');
      MonAjax.send();                  
     }
    maFonctionAjax();
    </script>
    Dernière modification par Invité ; 06/02/2013 à 14h25.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Par défaut L'erreur est encore la même
    J'ai modifié le fichier php par un simple echo pour tester, mais j'ai toujours l'intégralité de la page d'acceuil de mon site dans le réponse Ajax.

    J'ai aussi relevé que je ne rentre pas dans cette boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (MonAjax.readyState == 4 && MonAjax.status == 200)
          {
              document.getElementById('toto').innerHTML = MonAjax.responseText;}
          }
    *J'ai enlever une accolade sur la ligne au dessus de MonAjax.setRequestHeader, elle était en trop je crois.

    Voici mes fichiers tels qu'ils sont maintenant :

    Fichier JS :
    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
    function maFonctionAjax()
    		{
    			var MonAjax;
    			if (window.XMLHttpRequest){ MonAjax = new XMLHttpRequest();}
    			else if (window.ActiveXObject) {MonAjax = new ActiveXObject('Microsoft.XMLHTTP');}
    			else {
    				alert("Votre navigateur n'est pas adapté pour faire des requêtes AJAX..."); 
    				MonAjax = false;   
    			}
    			MonAjax.open('POST',"ajaxslider.php",true);
    			MonAjax.onreadystatechange = function()
    			{
     
    					document.getElementById('header').innerHTML = MonAjax.responseText;
    					alert(MonAjax.responseText);
     
    			}
     
    		MonAjax.setRequestHeader('Content-type','application/x-www-form-urlencoded');
    		MonAjax.send();                  
    		}
     
    maFonctionAjax();
    ajaxslider.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
     
    echo "TEST AJAX";
     
     
    ?>

  4. #4
    Invité
    Invité(e)
    Par défaut
    Tu devrais te poser la question autrement...

    1) Pourquoi je ne rentre pas dans cette partie fondamentale

    Alors que toi tu te dis alors je vire ce truc inutile

    2) Je reçois le code du PHP zut alors ...

    Alors que moi je me dis, il travail en local et son APACHE n'est pas activé,
    donc il renvoie le PHP comme un fichier texte

    Il n'y a pas de miracle en informatique
    Christele

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Par défaut
    Apache est activé, je travaille sur un vrai serveur et en local, pour tester les deux.

    Si j'ai enlever la "partie fondamentale" c'est pour tester simplement l'affichage de responseText dans mon header.

    Et si je ne rentre pas dedans, c'est car j'ai "404 not found" dans le status.

    Des questions je crois que je m'en suis posé un tas, c'est après avoir ramé une journée complète que j'ai décidé de venir ici.

    J'ai aussi oublié de préciser que les deux fichiers sont bien situés dans le même dossier (donc en théorie le path ne pose pas de soucis)

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ah mais voilà qui est curieux,
    Tu me dis erreur 404 donc il ne trouve pas ajaxslider.php
    ors tu dis par ailleurs qu'il en affiche le code PHP

    Nous ne devons pas être loin de trouver ou ça bug !
    Peux-tu par exemple mettre (même si ce n'est pas la peine)
    le chemin complet
    "MonAjax.open('POST',"http//xxx/ccc/ajaxslider.php",true);"

    D'autre part Ajax respecte la case par exemple
    ajaxslider.php n'est pas AjaxSlider.php

    bref je dis cela pour tout envisager !

    Tiens-moi au courant
    Christele

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Récupérer le résultat d'une requête mysql dans un tableau
    Par gahmed dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/01/2017, 10h51
  2. Réponses: 10
    Dernier message: 13/09/2011, 17h24
  3. Afficher le résultat d'une requête MySQL comme dans phpMyAdmin
    Par mathieu dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 0
    Dernier message: 14/02/2011, 18h48
  4. récupérer le résultat d'une requête mysql dans un tableau en java
    Par RouRa22 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 08/01/2011, 22h36
  5. Réponses: 7
    Dernier message: 30/06/2005, 10h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo