Aller au contenu

autocomplétion


karaya

Sujets conseillés

Bonjour à tous.

Pour ma page j'ai besoin que, lors d'une saisie, les mots correspondant s'affiche sous le champ de saisie, et que l'utilisateur puisse en sélectionner un.

Pour cela j'ai une page php qui génère une page xml, et un javascript qui exploite cette page pour proposer à l'utilisateur les choix correspondant.

En déclarant un tableau fixe dans la page php ça marche:

$liste = array("choix1","choix2","choix3","choix4","choix5");

C'est en récupérant les éléments de la base de donnée que ça ne marche plus, pourtant en demandant d'afficher les 2 pages xml, générée par les 2 méthodes, elles sont exactement identiques:

$liste = array();
$query="SELECT champ1,champ2,champ3 FROM `table` ORDER BY champ1 ASC;
";
$result=mysql_query($query) or exit("echec :".mysql_error());
while ($table=mysql_fetch_array($result)){
$liste[$i]=$table[0]." ".$table[1];
$i++;
}

Voilà maintenant la partie du fichier qui crée la liste exploitée par la java script:

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>".strtolower($element)."</option>"));
           $i++;
       }
   }
}

Je vous remercie d'avoir pris le temps de lire mon message, et je vous remercie d'avance pour toutes les réponses éventuelles. En espérant que vous puissez m'aidez à résoudre mon problème.

Lien vers le commentaire
Partager sur d’autres sites

c'est justement de ce tuto que je me suis inspiré. J'utilise le même fichier php à la seule différence que je change la création de la liste. Et en faisant ça ça ne marche plus.

Je voudrais que la liste soit créé à partir de la base de donnée, et pas fixe comme dans l'exemple.

Lien vers le commentaire
Partager sur d’autres sites

Moi dans mon fichier options.php j'ai ca :

<?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);

$liste=array();
$sql="select distinct(nom) as nom from `".$_SESSION['table_contacts_form_actif']."` where `id_form_actif`='".$_SESSION['stat_id_form_actif']."' order by `nom`";
$req=mysql_query($sql);
while($res=mysql_fetch_array($req))
{
$id=$res['id'];
$nom=strtolower($res['nom']);
// echo $id;

array_push($liste,$nom);
}
mysql_free_result($req);
//echo mysql_error();

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>");

;
?>

Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

merci beaucoup, je teste ça et je regarde ce que ça donne.

edit: j'ai testé et... ça marche! Merci beaucoup!!

Quelqu'un saurait pourquoi ça ne marchait pas?

Modifié par karaya
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...