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

JavaScript Discussion :

[AJAX] PHP - AJAX


Sujet :

JavaScript

  1. #1
    Membre actif
    Profil pro
    Employé
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Par défaut [AJAX] PHP - AJAX
    Hello à tous,
    je suis un train d'essayer de programmer une page web en PHP/AJAX qui se connecterait à une BD MySQL.
    Je me suis largement inspiré du cours : Introduction à AJAX et interaction avec PHP de Gaël Donat.
    J'ai trois page :
    - la page principale HTML
    - la page javascript qui s'occupe de gérer l'ajax proprement dit
    - la page PHP qui se connecte à la BD MySQL et qui renvoie le résultat d'un SELECT à la fonction Javascript en format XML.

    Mon problème, c'est que je n'ai aucun feedback quand au résultat obtenu. La table sur laquelle porte la requête SQL contient 4 champs mais aucun n'est affiché par la fonction Javascript.
    Pourtant, quand j'encadre mon code PHP par des balises html, head, body et que je regarde le résultat, les 4 résultats apparaissent bien.
    De même, quand je fais porter ma fonction Javascript sur un fichier XML au lieu de sur mon fichier PHP, j'ai bien un résultat.
    Là où ça coince, c'est quand j'utilise ma fonction Javascript ET mon code PHP ensemble...

    Mon code :
    HTML
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link rel="stylesheet" type="text/css" href="styles.css">
    <title>Bienvenue</title>
    </head>

    <div id="contenu">

    <?php

    $mysql_host = "monserveur";
    $mysql_user = "monuser";
    $mysql_password = "monpass";
    $mysql_db = "madb";

    $connexion = mysql_connect($mysql_host,$mysql_user,$mysql_password) or die ('Error connecting to mysql');
    if ($connexion != 0)
    {
    echo ("Connexion établie");
    }

    mysql_select_db($mysql_db);

    $mon_champ = isset($_POST['mon_champ']) ? $_POST['mon_champ'] : '';

    if ($mon_champ)
    {
    $table = "Messages";
    $requete = "INSERT INTO Messages(NumMess,Mess) VALUES ('','$mon_champ')";
    $resultat = mysql_query($requete) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    echo ("Résultat : $resultat - Champ = $mon_champ");
    }

    ?>

    <script type="text/javascript" src="ajax_script.js"></script>

    <p>
    <a href="javascript:ajax();">Refresh</a>
    </p>


    <form method="POST">
    <input name="mon_champ" type="text" >
    <input type="submit" value="OK" >
    </form>
    </div>
    </body>
    </html>

    JAVASCRIPT
    function ajax()
    {
    var xhr=null;

    if (window.XMLHttpRequest) {
    xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xhr.onreadystatechange = function() { alert_ajax(xhr); };

    xhr.open("GET", "http://belotte.net84.net/reponse.php", true);
    xhr.send(null);
    }

    function alert_ajax(xhr)
    {
    var docXML= xhr.responseXML;
    var items = docXML.getElementsByTagName("donnee");

    //alert(items.length);
    for (i=0;i<items.length;i++)
    {
    alert (items.item(i).firstChild.data);
    }
    }

    PHP
    <?php
    header('Content-Type: text/xml');
    echo("<?xml version=\"1.0\"?><exemple>");

    //on connecte a la BDD
    $dbhost="monserveur";
    $dbuser="monuser";
    $dbpass="monpass";
    $mysql_db = "madb";

    $dblink=mysql_connect($dbhost,$dbuser,$dbpass);
    mysql_select_db($mysql_db);

    $query = "SELECT * FROM Messages";
    $result = mysql_query($query,$dblink) or die (mysql_error($dblink));

    while ($row = mysql_fetch_array($result))
    {
    echo("<donnee>".$row[0]."</donnee>");

    }
    echo("</exemple>");

    ?>




    Quand je valide la ligne mise en commentaire (en gras) dans mon code Javascript, il m'affiche 0. Autrement dit, il n'a aucune donnée.

    Mes infos de connexions sont correctes, de même que les noms de mes fichiers (je les ai vérifiés plusieurs fois).

    Là je ne sais vraiment plus où j'ai fais une erreur.
    Je débute en PHP et en javascript donc c'est peut-être une erreur toute bête...

    Si quelqu'un pouvait me filer un petit coup de pouce ça m'arrangerait énormément.

    Merci pour votre aide,
    Heydrickx

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 183
    Par défaut
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

    Rajoute ça entre ces deux lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xhr.open("GET", "http://belotte.net84.net/reponse.php", true);
    xhr.send(null);
    Ça ne devrait pas résoudre ton problème mais bon fais le quand même.

    Sinon qu'est ce que c'est la fonction alert_ajax ? Ça fait partie du noyau JavaScript ou c'est une fonction à toi ?

    NB : Les balises code ne sont pas un luxe ... uses en s'il te plait

  3. #3
    Membre actif
    Profil pro
    Employé
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Employé

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Par défaut
    Merci pour ta réponse. Je viens d'ajouter la ligne que tu m'as donnée à l'endroit que tu m'as donné, et comme tu me l'avais dis, ça n'a pas arrangé mon problème (mais ça tu l'avais prévu).
    Est-ce que tu peux me dire ce que fait cette nouvelle ligne ?

    La fonction alert_ajax est une fonction à moi (enfin ce n'est pas moi qui l'ai pondue de toutes pièces mais elle n'est pas inhérente à Javascript).

    Désolé pour les balises de code... promis je ferai attention pour les prochaines...

  4. #4
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    C' est plutot ce bout de code qui attire mon attention :
    et dans le php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $mon_champ = isset($_POST['mon_champ']) ? $_POST['mon_champ'] : '';
     
    if ($mon_champ)
    {
    tu envoie une requete en post sur une page php sans queryString (enfin je fait allusion à get) par xhr.send(null). Ce qui veut dire que $_POST['nom_champ'] vaudra toujours null.
    Pour reparer ça, je te propose de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xhr.send(document.getElementById('nom_champ').value);
    A condition que tu ecris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <form method="POST">
    <input name="mon_champ" id="nom_champ" type="text" >
    <input type="submit" value="OK" >
    </form>
    Priere de bien presenter ton post. La prochaine fois, je n' y jetterai meme pas un coup d' oeil.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 183
    Par défaut
    La ligne spécifie l'encode du fichier que tu appelles

    Voili voilou

Discussions similaires

  1. Unserialize(urldecode()) php, ajax, php
    Par hannibal974 dans le forum Bibliothèques et frameworks
    Réponses: 23
    Dernier message: 25/05/2014, 12h43
  2. Réponses: 0
    Dernier message: 21/06/2012, 12h22
  3. [AJAX] PHP avec ajax(makerequest)
    Par Benjiijneb dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 11/04/2006, 16h53
  4. Config IIS pour PHP / Ajax
    Par didjac dans le forum IIS
    Réponses: 1
    Dernier message: 02/04/2006, 10h03
  5. [Rico] Afficher depuis d'une liste deroulante (PHP+AJAX)
    Par maxis dans le forum Bibliothèques & Frameworks
    Réponses: 9
    Dernier message: 27/02/2006, 12h47

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