Bonjour à tous,

Je suis débutant en ajax et je souhaite faire une liste déroulante qui charge depuis une base de donnée des éléments.

Mon code fonctionne sauf qu'il retourne une liste <li> qui est affiché dans un bouton input.
Mon problème, je souhaiterai comme retour un <select><option><select> à l'intérieur.
Pour que l'utilisateur ne puisse pas changer le text dedans après sélection…

Est-ce que quelqu'un à une idée?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
$("#tags").autocomplete({
        source: "search.php",
        minLength: 1,
        delay: 600
    });
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
 
<?php
    // accès sur local
    $hostname = "localhost";
    $username = "root";
    $password = "root";
    $dbname = "autoCompleteTest";
    
    try {
        $conn = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);
        // le format Json n'aime pas trop l'iso et le reste :)
        $conn->exec("SET CHARACTER SET utf8");
    }
    catch(PDOException $e) {
        echo $e->getMessage();
    }
    // type de retour
    $return_arr = array();
    // si la connexion est ok on fait la requête
    if ($conn)
    {
        //ajax retourne une variable term en GET
        $term = $_GET['term'];
        //  la colonne qu'on veut afficher
        $colonneAffiche = 'VILLE';
        // limite pour pas faire exploser l'application
        $limit = 10;
        // requete
        $query = "SELECT* FROM cp_autocomplete WHERE VILLE like '$term%' ORDER BY VILLE ASC LIMIT $limit";
        $result = $conn->prepare($query);
        
        if ($result->execute()) {
            // tant que le res est vrai on envoie la ligne
            while ($row = $result->fetch(PDO::FETCH_ASSOC)){
                $row_array['value'] = $row[$colonneAffiche];
                array_push($return_arr,$row_array);
            }
        }
    }
    
    // fermer la connexion
    $conn = null;
    // fermer le curseur
    $result->closeCursor();
    // retour de la requete au format json
    echo json_encode($return_arr);
 
?>
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
 
<!DOCTYPE html>
<html>
    <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
            <title>jQuery UI Example Page</title>
            <link type="text/css" href="css/smoothness/jquery-ui-1.8.20.custom.css" rel="stylesheet" />
            <link type="text/css" href="chosen/chosen.css" rel="stylesheet" />
            <script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
            <script type="text/javascript" src="js/jquery-ui-1.8.20.custom.min.js"></script>
            <script type="text/javascript" src="js/ajaxAutocompleteScript.js"></script>
            <script type="text/javascript" src="js/ajaxAutocompleteScript2.js"></script>
            <script src="chosen/chosen.jquery.js" type="text/javascript"></script>
 
    </head>
    <body>
 
    <form method="post" action="?">
 
        <div class="demo">
            <div class="ui-widget">
                <label for="tags3" tabindex="3" >Tags avec cache + loader: </label>
                <input id="tags3" name="champsPersonne" placeholder="chercher une Personne">
            </div>
        </div><!-- End demo -->
 
 
        <input type="submit" />
    </form>
    </body>
</html>


Merci beaucoup à tous pour votre aide!
Très bonne journée et meilleures salutations