Liste pour autocomplétion

Fermé
parousky Messages postés 325 Date d'inscription mardi 11 septembre 2012 Statut Membre Dernière intervention 20 février 2022 - 22 juin 2014 à 13:10
zermat Messages postés 160 Date d'inscription jeudi 19 juin 2014 Statut Membre Dernière intervention 3 juin 2016 - 22 juin 2014 à 20:36
Bonjour, j'ai une base de données SQL de villes avec leur code postal, et j'aimerais créer une liste qui contient les codes postaux de toutes les villes. Mais je ne sais pas trop comment remplir cette liste... Voilà ce que j'ai écrit :

<?php

try
{
$bdd = new PDO('mysql:host=localhost;dbname=Servicity', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Test d'autocomplete</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
</head>
<form>
<input type="text" id="recherche">
</form>

<?php
$req2 = $bdd->query('SELECT CP FROM cp');

?>
<script language="javascript">
$('#recherche').autocomplete({
source : <?php echo $req2; ?>,
minLength : 3
});
</script>

</html>

Pouvez-vous m'aider à résoudre ce problème ?
Merci d'avance !

7 réponses

zermat Messages postés 160 Date d'inscription jeudi 19 juin 2014 Statut Membre Dernière intervention 3 juin 2016 16
22 juin 2014 à 14:53
essayer:

<?php
$req2 = $bdd->query('SELECT CP FROM cp');
$data = array();
$data = $req2->fetchAll(PDO::FETCH_COLUMN,0);
?>

<script language="javascript">
<?php
$js_array = json_encode($data);
echo "var liste = ". $js_array . ";\n";
?>
$('#recherche').autocomplete({
source : liste,
minLength : 3
});
</script>
0
parousky Messages postés 325 Date d'inscription mardi 11 septembre 2012 Statut Membre Dernière intervention 20 février 2022 6
22 juin 2014 à 17:18
Merci beaucoup, cela marche à merveille ! Maintenant je ne voudrais pas abuser, mais j'ai ma base de données avec les codes postaux et les villes. Et j'aimerais lorsque je commence à écrire un code postal ça m'affiche des suggestions de la forme : Code - Ville.
Alors si je marque :
<?php
$req2 = $bdd->query('SELECT CP FROM cp');
$data = array();
$data = $req2->fetchAll(PDO::FETCH_COLUMN,0 - 1);
?>

<script language="javascript">
<?php
$js_array = json_encode($data);
echo "var liste = ". $js_array . ";\n";
?>
$('#recherche').autocomplete({
source : liste,
minLength : 3
});
</script>
Cela ne marche pas évidemment...
Avez-vous une idée ?
Merci d'avance !
0
zermat Messages postés 160 Date d'inscription jeudi 19 juin 2014 Statut Membre Dernière intervention 3 juin 2016 16
22 juin 2014 à 17:59
<?php
//je suppose que la colonne des villes se trouve dans la table cp et qu'elle s'appelle VILLE
$req2 = $bdd->query('SELECT CP, VILLE FROM cp');
$data = array();
while ($row = $req2->fetch(PDO::FETCH_NUM)) {
array_push($data,$row[0] . ' - ' . $row[1]);
}
?>

<script language="javascript">
<?php
$js_array = json_encode($data);
echo "var liste = ". $js_array . ";\n";
?>
$('#recherche').autocomplete({
source : liste,
minLength : 3
});
</script>
0
parousky Messages postés 325 Date d'inscription mardi 11 septembre 2012 Statut Membre Dernière intervention 20 février 2022 6
22 juin 2014 à 18:22
Merci pour ton code mais je ne sais pas pourquoi, ça ne marche pas...
Mais je crois que le problème vient de $row[1]. J'ai essayé de n'afficher que la colonne Ville, et ça ne marche pas...
Dans ma base de données, la première colonne correspond aux codes postaux, et la deuxième aux villes. Donc $row[1] correspond bien au ville normalement...
Vois-tu un problème ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zermat Messages postés 160 Date d'inscription jeudi 19 juin 2014 Statut Membre Dernière intervention 3 juin 2016 16
22 juin 2014 à 18:33
La table cp contient combien de colonnes?. Quel est le nom de ces colonnes ?
0
parousky Messages postés 325 Date d'inscription mardi 11 septembre 2012 Statut Membre Dernière intervention 20 février 2022 6
22 juin 2014 à 20:13
Elle contient trois colonnes, la première s'appelle CP, elle regroupe tous les codes postaux. La deuxième s'appelle Ville. Et la troisième Pays (j'ai les codes postaux des villes de France et de Belgique).
0
zermat Messages postés 160 Date d'inscription jeudi 19 juin 2014 Statut Membre Dernière intervention 3 juin 2016 16
22 juin 2014 à 20:36
Remplacez
$req2 = $bdd->query('SELECT CP, VILLE FROM cp');
par
$req2 = $bdd->query('SELECT CP, Ville FROM cp');
0