Aide pour script de recherche

Résolu
sporto Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   -  
sporto Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
je cherche de l'aide afin d'effectuer une recherche en auto-completion.
Voici une partie de mon script que j'aimerais remplacer par des informations tirées de la base de données.
$liste = array("angulaire","arrêt","[...]","stop","zéro");

Ceci est une liste des mots qu'on va soumettre à l'utilisateur ayant entré une ou plusieurs premiere lettre du mot qu'il souhaite rechercher. Je voudrais à la place de ceci faire intervenir ma base de données mais je ne sais pas comment m'y prendre pour la requete et la variable $liste.

Merci de m'aider à trouver une solution,
Cordialement,
Sporto
A voir également:

15 réponses

djflexlive Messages postés 557 Date d'inscription   Statut Membre Dernière intervention   95
 
Il te faut utiliser pour ca la fonction array_push()

En gros, tu fais ta requete sql, et dans le while { } , cela vas enregistrer dans ton array le champs que tu souhaites intéregrer à l'array.

array_push ;)
1
sporto Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   2
 
Ok, je te remercie.
Je vais essayer ca desuite.
Merci et bonne soirée ;)
0
djflexlive Messages postés 557 Date d'inscription   Statut Membre Dernière intervention   95
 
Toi aussi. Si ca fonctionnes, n'oublies pas de passer le post en 'Résolu' ;)
0
sporto Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   2
 
Voila ma requete mais une fois dans le while je ne sais pas comment faire malgrès etre sur le manuel PHP...
Je n'ai jamais utilisé cette fonction. Que mettre dans le while sachant que je veux le champs "Titre"?
$requete=mysql_query("SELECT * FROM ajax_film");
while($result=mysql_fetch_array){

}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
djflexlive Messages postés 557 Date d'inscription   Statut Membre Dernière intervention   95
 
int array_push  ( array &$array  , mixed $var  [, mixed $...  ] )


Je dirais :

// SELECT TITRE et non *

$requete=mysql_query("SELECT titre FROM ajax_film");
while($result=mysql_fetch_array){

     array_push($liste,$result['titre']);

}
0
sporto Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   2
 
Non toujours pas, voici mon code:
//$liste = array("aaaaa","bbbb","zéro");

include('../connectdb.php');
$requete=mysql_query("SELECT Titre FROM ajax_test");

while($result=mysql_fetch_array($requete)){

     array_push($liste,$result['Titre']);

}
0
djflexlive Messages postés 557 Date d'inscription   Statut Membre Dernière intervention   95
 
Oui mais tu as une erreur ? Laquelle ?

Sinon print_r($liste) après le while pour voir ce qu'il en sort.
0
sporto Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   2
 
Ben justement je n'ai rien, ni erreur ni le print_r(); qui ressort.
Meme quand je le met avec la liste de départ...
C'est un script javascript qui appel celui-ci.
0
sporto Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   2
 
Délsolé du double post.
Le script complet:
<?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("aaaa","abbb","zéro");


include('../connectdb.php');
$requete=mysql_query("SELECT Titre FROM ajax_test");
while($result=mysql_fetch_array($requete)){

     array_push($liste,$result['Titre']);
}


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>");
?>
0
djflexlive Messages postés 557 Date d'inscription   Statut Membre Dernière intervention   95
 
Avant d'appeller le javascript en question, faudrait que ta mise en array fonctionne, donc désactives la partie requetes js , il faut voir "à nu" ce que ca donne ; donc que la partie php.


EDIT : après ton double post ;)

> Tu renvoies un header xml , désactives ceci pour voir ce que donne la requetes php en dur . Je te proposes ceci :


<?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("aaaa","abbb","zéro");

*/

include('../connectdb.php');
$requete=mysql_query("SELECT titre FROM ajax_test");
while($result=mysql_fetch_array($requete)){

     array_push($liste,$result['titre']);
}

print_r($liste);

/*
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>");
*/
?>


Dans un premier temps, appelle directement la page dans ton navigateur, elle devrait interpréter que la requete sql et afficher $liste si les enregistrements sont bons.
0
sporto Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   2
 
Arf oui, je suis bête :-p
Donc il me renvoie cette erreur autant de fois qu'il y a d'éléments dans la base de données:
Warning: array_push() [function.array-push]: First argument should be an array in /var/www/virtual/sondeo.go1.cc/sondeo_fr/htdocs/test/fichiers/options.php on line 19
0
djflexlive Messages postés 557 Date d'inscription   Statut Membre Dernière intervention   95
 
Hum, déclarons la variable en question d'abord :

$liste = array();

A positionner avant le while bien sur ;)
0
sporto Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   2
 
Ben je te dis merci !!
Maintenant il ca marche meme s'il me reste quelques soucis...
Tous mes Titre commence pas une Majuscule :-S .
Je vais voir si je trouve comment faire.
Encore merci.
0
djflexlive Messages postés 557 Date d'inscription   Statut Membre Dernière intervention   95
 
Ok dak, de toute facon je vais dormir.

Si tu as toujours un soucis à ce niveau là, refais un post et je te filerai un coup de main dans la mesure du possible ;)

A plus.
0
sporto Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   2
 
Merci, bonne soirée,
bonne nuit.
A Plush
0