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

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>&nbsp;</td>
      <td><input type="submit" name="button" id="button" value="Envoyer"></td>
    </tr>
  </table>
</form>
la class, AutoCompletionCPVille.class.php

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