Autocomplétion ville code postal
Bonjour,
Je viens de suivre le tuto de Xavier ZOLEZZI
Ce qui fonctionne parfaitement.
Ensuite, j'ai voulu continuer avec cette tentative de le réécrire en PHP/MySQL classique pour me "faire la main".
En vain. Si quelqu'un veut bien regarder ceci:
La page d'index =
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 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
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head >
<title>AutoCompletion</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<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.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;
}
}
}
}));
}
});
}
},
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" />-->
</head>
<body>
<form action="#">
CP :<input type="text" id="cp" size="6"/>
Ville : <input type="text" id="ville" />
</form>
</body>
</html> |
Et AutoCompletion.php =
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
| <?php
require_once('./AutoCompletionCPVille.class.php');
$hote = 'localhost'; // Adresse du serveur
$login = 'root'; // Login
$pass = ''; // Mot de passe
$base = 'atelier'; // Base de données à utiliser
// On se connecte à la base de données
mysql_connect($hote, $login, $pass)or die("erreur de connexion au serveur");
// On selectionne la base de données souhaitée
mysql_select_db($base)or die("erreur de connexion a la base de donnees");
//Initialisation de la liste
$list = array();
//Construction de la requete
$strQuery = "SELECT CP AS CodePostal, VILLE AS Ville FROM cp_autocomplete WHERE ";
if (isset($_POST["codePostal"])){
$strQuery .= "CP LIKE '".mysql_real_escape_string($_POST['codePostal'])."%' ";
}
else {
$strQuery .= "VILLE LIKE '".mysql_real_escape_string($_POST['ville'])."%' ";
}
$strQuery .= "AND CODEPAYS = 'FR' ";
//Limite
if (isset($_POST["maxRows"])){
$strQuery .= "LIMIT 0,".mysql_real_escape_string($_POST['maxRows'])."";
}
$query = mysql_query($strQuery);
$i=0 ;
while ($enr = mysql_fetch_array($req)) {
//$list[] = json_decode(json_encode($enr), FALSE);
$list[] = array(
'CodePostal' => $enr['CodePostal'],
'Commune' => "".utf8_encode($enr['Commune']).""
);
}
echo json_encode($list);
?> |
Merci à celui qui a la patience de lire tout ça.
Cordialement.