XmlHttpRequest et PHP

XmlHttpRequest et PHP - PHP - Programmation

Marsh Posté le 02-12-2005 à 21:55:14    

Bonjour.
J'ai trouvé un tutorial sur ce site http://www.sutekidane.net/blog/creer-un-mo...est-et-php.html
 
Je veux donc faire de même pour une recherche de nom dans une base de donnée dans un premier temps.
 
Mon fichier index.php est composé comme ceci

Code :
  1. <script type="text/javascript" src="XHRConnection.js"></script>
  2. <script type="text/javascript">
  3. // Déclaration de la fonction de Callback
  4. // + ----------------------------------------------------------------------------------
  5. // + afficherResultats
  6. // + Affiche ou non le conteneur en fonction du résultat de la recherche
  7. // + ----------------------------------------------------------------------------------
  8. function afficherResultats(obj) {
  9.      // Construction des noeuds
  10.      var tabResult = obj.responseXML.getElementsByTagName('resultat');
  11.      document.getElementById('zoneResultats').innerHTML = '';
  12.      if (tabResult.length > 0) {
  13.           // On définit la hauteur de la liste en fonction du nombre de rsultats et de la hauteur de ligne
  14.           var hauteur = tabResult.length * 22;
  15.           with(document.getElementById('zoneResultats').style) {
  16.                visibility = 'visible';
  17.                height = hauteur + 'px';
  18.           };
  19.           for (var i = 0; i < tabResult.length; i++) {
  20.                resultat = tabResult.item(i);
  21.                var egt = document.createElement('li');
  22.                var lnk = document.createElement('a');
  23.                var texte = document.createTextNode(resultat.getAttribute('titre'));
  24.                lnk.appendChild(texte);
  25.                lnk.setAttribute('href', resultat.getAttribute('url'));
  26.                lnk.setAttribute('title', resultat.getAttribute('titre'));
  27.                egt.appendChild(lnk);
  28.                document.getElementById('zoneResultats').appendChild(egt);
  29.           }
  30.      }
  31.      else {
  32.           document.getElementById('zoneResultats').style.visibility = 'hidden';
  33.      }
  34. }
  35. // Déclaration de la fonction qui lance la recherche
  36. function loadData() {
  37.      // Création de l'objet
  38.      var XHR = new XHRConnection();
  39.      XHR.appendData("recherche1", document.getElementById('recherche1').value);
  40.      // On soumet la requête
  41.      // Signification des paramètres:               
  42.      //      + On indique à l'objet qu'il faut appeler le fichier search.php
  43.      //      + On utilise la méthode POST, adaptée l'envoi d'information
  44.      //      + On indique quelle fonction appeler lorsque l'opération a été effectuée
  45.      XHR.sendAndLoad("index1.php", "POST", afficherResultats);
  46. }
  47.      </script>
  48. <form id="formulaire" action="index1.php" method="post">
  49.      <fieldset>
  50.      <p>
  51.           <label for="recherche1">Saisissez les chaines à rechercher dans le champ de formulaire ci-desous :</label>
  52.           <input type="text" name="recherche1" id="recherche1" value="" onkeyup="loadData();" />
  53.      </p>
  54.      <ul id="zoneResultats" style="visibility: hidden;"></ul>
  55.      <p>
  56.           Texte à placer pour tester que les réponses s'affichent par dessus... Lorem ipsum ...
  57.      </p>
  58.      </fieldset>
  59. </form>


 
et ma page de traitement est composé comme ceci index1.php
 

Code :
  1. <html>
  2. <body>
  3. <?php
  4. // Déclaration des paramètres de connexion
  5. $host = "localhost"; 
  6. // Généralement la machine est localhost
  7. // c'est-a-dire la machine sur laquelle le script est hébergé
  8. $user = "root";
  9. $bdd = "mysql";
  10. $passwd  = "";
  11. // Connexion au serveur
  12. mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur" );
  13. mysql_select_db($bdd) or die("erreur de connexion a la base de donnees" );
  14. // Creation et envoi de la requete
  15. $recherche = $_POST['recherche1'];
  16. $query = "SELECT * FROM `nom` WHERE `nom` LIKE '%$recherche%'";
  17. $result = mysql_query($query);
  18. // Recuperation des resultats
  19. while($row = mysql_fetch_row($result)){
  20. echo "$row[0]";
  21. }
  22. // Deconnexion de la base de donnees
  23. mysql_close();
  24. ?>
  25. </body>
  26. </html>


 
J'aimerai faire pour que dès que je tape une lettre du prénom la suite s'affiche comme sur le site cité plus haut.
 
1) que me manque t'il à faire ?
 
2) mettre le code javascript dans index.php est ce le bon endroit?
 
3) A la méthode sendAndLoad faut bien que je lui passe index1.php?
 
Quand je tape un j dans mon champ recherche par exemple et que j'appuie sur entrée ca m'affiche bien jerome, c'est deja un bon début mais on ne le voit pas s'afficher dans une boite par dessus
 
Merci d'avance

Reply

Marsh Posté le 02-12-2005 à 21:55:14   

Reply

Marsh Posté le 02-12-2005 à 22:36:53    

Vois avec http://www.w3.org/TR/REC-html40/interact/scripts.html, essaye pê de changer le onkeyup par onkeydown, onkeypress ou onchange.
 
Tu peux aussi essaye les demos sur http://script.aculo.us/, ça pourrait t'interresser.


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
Reply

Marsh Posté le 03-12-2005 à 00:53:33    

Merci je vais voir ce que je peux faire avec.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed