Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks
Bibliothèques & Frameworks Forum d'entraide sur les frameworks et bibliothèques JavaScript (jQuery, Mootools, Prototype, Script.aculo.us, etc.). Avant de poster : Cours Frameworks JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/05/2008, 10h53   #1
Membre confirmé
 
Avatar de baggie
 
Inscription : octobre 2007
Messages : 684
Détails du profil
Informations personnelles :
Âge : 23
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2007
Messages : 684
Points : 226
Points : 226
Par défaut Autocomplete -> affiche des "undefined"

Bonjour,

tout d'abord je suis une vraie débutante en Ajax, petite précision.
Et seconde précision, je travaille avec YUI (librairie Yahoo) et PHP 4.

Voici mon problème :
- j'ai deux champs Login et Destination.
- quand je tape un login, dès que je tape une lettre, une liste apparait sous le champ Login en me donnant les login correspondant à ce que j'ai tapé.
- Le problème est là : au lieu d'avoir la bonne liste de login qui s'affiche, j'obtiens une dizaine de "undefined" dans ma liste, et ceci peu importe ce que je tape comme login.

Et je n'arrive pas à comprendre pourquoi.

J'ai mon code, et à l'intérieur de ce code j'appelle une fonction contenant la requête qui devra faire la recherche pour afficher les bons login dans la liste.

Voici mon code :
Code :
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
 
function cptFormRecherche()
{
    $divlogma = <<<END
        <div style='width:300px;position:relative;'>
        <input type='text' name='reclogm' id='reclogm' value='$reclogm'>
        <div id='reclogm_dd' class=yui-skin-sam></div>
    </div>
END;
 
    $divdesti = <<<END
    <DIV NAME="destin" id="destin" style="display:block">
    <input type='text' class=t name='destination' id='desti' value='$destination' style='width:200px;'>
    </DIV>
END;
 
    $T[]=array(descD => "Login / Mail",     val=> $divlogma);
    $T[]=array(descD => "Destination",     val=> $divdesti);
    $T[]=array(linkD => "<input type='submit' value='Recherche'>");
 
    // Affichage de mon tableau $T
    $h = ToHTML($T);
 
    $html = <<<END
    <style type=text/css>
    INPUT.t ,SELECT { border: 1px solid #777; padding:2px;}
    </style>
 
    <h1>Recherche</h1>
    <form method=get name=fRecherche action='$_SERVER[PHP_SELF]'>
    <input type=hidden name=Action value='$_REQUEST[Action]'>
    <input type=hidden name=Etape value='Rech'>
    $h
 
    </form>
 
// Les librairies qui vont bien pour YUI  
    <script type='text/javascript' src="js/yui/build/yahoo/yahoo.js"></script>
               // etc ...
    <script type='text/javascript'>
 
    function autoCompInit()
    {
        yahooDataSource = new YAHOO.widget.DS_XHR("start.php3",["\\n", ";"]);
        // Appel à ma fonction contenant la requête (code ci dessous)
        yahooDataSource.scriptQueryAppend = "Action=$_REQUEST[Action]&Etape=ajax_liste";
        yahooDataSource.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT;
        yahooAutoComp = new YAHOO.widget.AutoComplete('reclogm','reclogm_dd', yahooDataSource);
        yahooAutoComp.queryDelay = 0.1;
        yahooAutoComp.dataRequestEvent.subscribe(showWaiter);
        yahooAutoComp.dataReturnEvent.subscribe(hideWaiter);
        yahooAutoComp.formatResult = function(oResultItem, sQuery) { return  (oResultItem[0] + " <span style='color:#008456'>" + oResultItem[1] + "</span>"); }
        yahooAutoComp.itemSelectEvent.subscribe(function(type,args) 
        { 
            document.fRecherche.destination.value = args[2][1];
        } );
    }
 
    YAHOO.util.Event.addListener(this,'load',autoCompInit);
 
</script>  
 
END;
 
    return $html;
}
'Etape=ajax_liste' dans le code ci-dessus appelle la fonction dont le code est ci-dessous (nom différent mais ça c'est normal).
Et voici ma fonction contenant ma requête :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
function cptListeProduitAjax()
{
 
    $ref = $_REQUEST['query'];
 
    $sql = "SELECT source FROM emails WHERE source like '%$ref%'";
 
    $txt='';
    $Q = mysql_db_query($sql);
    while ($R = mysql_fetch_array($Q))
        $txt .= $R['source'];
 
    return $txt;
 
}
J'ai testé avec une solution donnée dans les scripts YUI : Autocompletion YUI
mais ici le tableau est prédéfini ligne par ligne, alors que moi il faudrait que j'exécute ma requête pour construire le tableau et je n'ai pas réussi ... (ce que je souhaiterai c'est quelque chose du genre pour les Aera code de cette page par exemple).

Donc est-ce que vous voyez le pourquoi de mes undefined ?
Ou alors une solution plus simple ?

[EDIT] Je me suis rendue compte grâce à FireBug que ma requête était bien prise en compte puisque dans la console de firebug je peux visualiser tous les résultats qui ont été trouvé. Mais ces résultats devraient s'afficher sous le login et non uiquement dans fireBug si possible ... [/EDIT]

[EDIT 2] J'ai résolu mon problème, la page de démarrage (start.php3) qui n'était pas la bonne.[/EDIT 2]
baggie est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h55.


 
 
 
 
Partenaires

Hébergement Web