Bonjour,
j'ai utilisé le script donné par Xavier ZOLEZZI dans son tutorial ici
http://x-zolezzi.developpez.com/tuto...utocompletion/
ça marche bien mais la valeur récupéré par l'autocompletion pour le champ code postal n'est pas envoyé , alors que pour la ville ça fonctionne
j'ai un formulaire avec divers champs et les deux champs "autocompletion" pris sur le script ( champ "ville destination" et "code postal" )
je récupère bien toutes les valeurs des champs mais pas celle du code postal récupéré par l'autocompletion
le fichier ou est le formulaire , index.html
la class, AutoCompletionCPVille.class.php
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115 <script type="text/javascript" src="http://code.jquery.com/jquery-1.5.1.min.js"></script> <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.ui/1.8.10/jquery-ui.js"></script> <script type="text/javascript"> var cache = {}; $(function () { $("#cp, #ville").autocomplete({ source: function (request, response) { //Si la réponse est dans le cache if (('FR' + '-' + request.term) in cache) { response($.map(cache['FR' + '-' + request.term], function (item) { return { label: item.CodePostal + " / " + item.Ville, value: function () { if ($(this).attr('id') == 'cp') { $('#ville').val(item.Ville); return item.CodePostal; } else { $('#cp').val(item.CodePostal); return item.Ville; } } } })); } //Sinon -> Requete Ajax else { var objData = {}; if ($(this.element).attr('id') == 'cp') { objData = { codePostal: request.term, pays: 'FR', maxRows: 10 }; } else { objData = { ville: request.term, pays: 'FR', maxRows: 10 }; } $.ajax({ url: "./AutoCompletion.php", dataType: "json", data: objData, type: 'POST', success: function (data) { //Ajout de reponse dans le cache cache[('FR' + '-' + request.term)] = data; response($.map(data, function (item) { return { label:item.Ville + " / " +item.CodePostal , value: function () { if ($(this).attr('id') == 'cp') { $('#ville').val(item.Ville); return item.CodePostal; } else { $('#cp').val(item.CodePostal); return item.Ville; } } } })); } }); } }, minLength: 3, delay: 600 }); }); </script> <link rel="Stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/themes/base/jquery-ui.css" /> <form action="index.html" method="get"> <table width="700" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="149">Votre ville :</td> <td width="551"><input type="text" name="nomville" value="" id="ville1"></td> </tr> <tr> <td>Votre nom :</td> <td><input type="text" name="nomuser" id="nom"></td> </tr> <tr> <td>Ville destination :</td> <td><input type="text" id="ville" name="villedestination" size="30" /> </td> </tr> <tr> <td>Code Postal :</td> <td><input type="text" name "codepostal" id="cp" size="10"/></td> </tr> <tr> <td>votre email :</td> <td><input type="text" name="mailuser" id="textfield4"></td> </tr> <tr> <td> </td> <td><input type="submit" name="button" id="button" value="Envoyer"></td> </tr> </table> </form>
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <?php class AutoCompletionCPVille { public $CodePostal; public $Ville; } ?>
et le fichier AutoCompletion.php
Code php : 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 <?php require_once('./AutoCompletionCPVille.class.php'); //Initialisation de la liste $list = array(); //Connexion MySQL try { $db = new PDO('mysql:host=localhost;dbname=base', 'root', ''); } catch (Exception $ex) { echo $ex->getMessage(); } //Construction de la requete $strQuery = "SELECT CP CodePostal, VILLE Ville FROM table WHERE "; if (isset($_POST["codePostal"])) { $strQuery .= "CP LIKE :codePostal "; } else { $strQuery .= "VILLE LIKE :ville "; } $strQuery .= "AND CODEPAYS = 'FR' "; //Limite if (isset($_POST["maxRows"])) { $strQuery .= "LIMIT 0, :maxRows"; } $query = $db->prepare($strQuery); if (isset($_POST["codePostal"])) { $value = $_POST["codePostal"]."%"; $query->bindParam(":codePostal", $value, PDO::PARAM_STR); } else { $value = utf8_decode($_POST["ville"])."%"; $query->bindParam(":ville", $value, PDO::PARAM_STR); } //Limite if (isset($_POST["maxRows"])) { $valueRows = intval($_POST["maxRows"]); $query->bindParam(":maxRows", $valueRows, PDO::PARAM_INT); } $query->execute(); $list = $query->fetchAll(PDO::FETCH_CLASS, "AutoCompletionCPVille");; foreach ($list as $row){ mb_detect_encoding($row->Ville, "UTF-8") != "UTF-8" ? : $row->Ville = utf8_encode($row->Ville); // encodage des champs texte en utf8 si il ne le sont pas. } echo json_encode($list); ?>
la base est celle qui est fourni dans le tutorial ( petite base )
merci pour votre aide
Partager