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 : 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
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 : 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
 
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]