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] Réponse XML pour autocomplétion


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2006
    Messages : 75
    Points : 59
    Points
    59
    Par défaut [AJAX] Réponse XML pour autocomplétion
    Bonjour à tous,

    Source : AJAX - une autocomplétion pas à pas (Denis Cabasson)

    J'essaie en vain depuis hier de modifier ce tutoriel afin d'obtenir les données d'une base MySql et je bloque toujours sur la réponse XML.

    Le fichier options.php stocke une liste de mots dans un tableau qui est ensuite transformé en fichier XML. C'est ce fichier XML qui sert à afficher l'autocomplétion dans le champs de saisit.

    J'ai modifié ce fichier de manière à ce que la liste des mots provienne d'une base MySql. L'extraction des données ne pose pas de problème. Je crée un tableau avec les mots tirés de la bd et le fichier XML est bien généré... mais l'autocomplétion ne fonctionne pas.

    J'ai l'impression que je ne génère pas le fichier XML correctement. Quelqu'un saurait il me dire d'où vient mon erreur ?

    La liste de mots en dur dans le fichier ressemble à ça au départ dans le tutoriel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $liste = array("abeille","abricot","acheter","acheteur","adjectif","adroit");
    Ce qui donne un fichier XML comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version='1.0' encoding='UTF-8' ?>
    <options>
      <option>abeille</option>
      <option>abricot</option>
      <option>acheter</option>
      <option>acheteur</option>
      <option>adjectif</option>
      <option>adroit</option>
    </options>
    Pour ma part, j'ai remplacé la liste "en dur" par le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $valeurs = "";
    $n = 0;
     
    //Sélection des valeurs de la base de données
    $requete_aliments = "SELECT * FROM fromages ORDER BY fromage_libelle ASC";
    $resultat_aliments = requete_SQL($requete_aliments);
     
    while ($donnees_aliments = mysql_fetch_array($resultat_aliments)) {
    	$liste[$n] = $donnees_aliments["fromage_libelle"];
    	$n++;
    }
    Ce qui me donne le résultat XML suivant (et qui me parait propre)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version='1.0' encoding='UTF-8' ?>
    <options>
      <option>Cantadou</option>
      <option>Chavroux</option>
      <option>Saint Moret</option>
      <option>Vache qui rit</option>
    </options>
    Est-ce que je fais une erreur sur la génération du XML ?
    Avec mon code l'autocomplétion ne fonctionne tout simplement pas, aucun choix n'est affiché dans la liste lorsque je saisit des lettres dans le champ.

    Merci par avance à ceux qui pourront m'aider à trouver une solution.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Août 2006
    Messages : 40
    Points : 43
    Points
    43
    Par défaut
    donnes des précisions sur ton prog javascript qui lance la génération de ton xml please ?

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2006
    Messages : 75
    Points : 59
    Points
    59
    Par défaut Je n'ai pas modifié la partie qui génère le XML
    Voici la totalité du code de option.php.
    Je tiens à préciser que je n'ai pas modifié la partie du code qui génère le XML (et qui provient directement des sources téléchargées du tutoriel). Je n'ai fait qu'ajouter une requête pour aller chercher les données dans une table, afin de stocker ses données dans le tableau qui est justement utilisé par le fonction qui génère le XML.

    J'espère que je suis clair et que ça répond à ta question

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <?php
     
    header('Content-Type: text/xml;charset=utf-8');
    echo(utf8_encode("<?xml version='1.0' encoding='UTF-8' ?><options>"));
    if (isset($_GET['debut'])) {
        $debut = utf8_decode($_GET['debut']);
    } else {
        $debut = "";
    }
    $debut = strtolower($debut);
     
    include("fichiers-communs/inc-fonctions.php");
     
    //Connexion à la base
    connexion_BD("mabase");
     
    $valeurs = "";
    $n = 0;
     
    //Sélection des valeurs de la base de données
    $requete_aliments = "SELECT * FROM fromages ORDER BY fromage_libelle ASC";
    $resultat_aliments = requete_SQL($requete_aliments);
     
    while ($donnees_aliments = mysql_fetch_array($resultat_aliments)) {
    	//$valeurs = $valeurs.$donnees_aliments["fromage_libelle"];
     
    	$liste[$n] = $donnees_aliments["fromage_libelle"];
    	$n++;
    }
     
    function generateOptions($debut,$liste) {
        $MAX_RETURN = 10;
        $i = 0;
        foreach ($liste as $element) {
            if ($i<$MAX_RETURN && substr($element, 0, strlen($debut))==$debut) {
                echo(utf8_encode("<option>".$element."</option>"));
                $i++;
            }
        }
    }
     
    generateOptions($debut,$liste);
     
     
    echo("</options>");
     
     
    //Fermeture de la connexion
    deconnexion_DB();
    ?>

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2006
    Messages : 75
    Points : 59
    Points
    59
    Par défaut La solution est là
    Après des heures de recherche et de prise de tête dans le code (je précise que je ne suis pas performant en Javascript donc ça n'aide pas), je viens de me rendre compte de la source du problème.

    Mes modifications fonctionnement "parfaitement", mais il faut simplement savoir que les données de la base ne doivent COMMENCER par une majuscule... mais elles peuvent par contre contenir des majuscules après. L'autocompletion fonctionne très bien désormais, sans avoir changé une virgule dans le code, j'ai simplement supprimé toute majuscule en début de mot dans le contenu de mes champs.

    En espérant que cette "astuce" puisse servir à d'autres.

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

Discussions similaires

  1. Réponse XML pour un composant HTTPService
    Par luilui dans le forum Flex
    Réponses: 0
    Dernier message: 05/06/2009, 15h25
  2. [AJAX] Firefox tronque ma réponse XML alors que IE non
    Par phxGolden dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 22/05/2007, 11h20
  3. [AJAX] Réponse XML
    Par sylsau dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/12/2006, 23h50
  4. [AJAX] Réponse XML - Functions Javascript
    Par ..:: Atchoum ::.. dans le forum Général JavaScript
    Réponses: 24
    Dernier message: 24/01/2006, 03h02

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