A voir également:
- Separer résultat autocomplete
- Autocomplétion + résultats affichés = liens ✓ - Forum - Javascript
- Resultat tirage au sort koh lanta - Forum - Vos droits sur internet
- Resultat bac 2011 - Actualités
- Resultat permis l'authentification a échoué êtes-vous sûr de vos identifiants - Forum - Linux / Unix
- Se faire rembourser les sms des jeux sur tf1 ✓ - Forum - Mobile
8 réponses
jordane45
- Messages postés
- 31458
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 23 février 2021
BOnjour,
Déjà, lorsque tu postes du code sur le forum, merci d'utiliser les balises de code
Explications (à lire entièrement !! ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite, il faut que tu utilises la méthode "select"
.
Cordialement,
Jordane
Déjà, lorsque tu postes du code sur le forum, merci d'utiliser les balises de code
Explications (à lire entièrement !! ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite, il faut que tu utilises la méthode "select"
$('#codep').autocomplete({ minLength: 2, source : 'completion.php' , select: function( event, ui ) { $('tonchamp1').val( ui.item.label ); // $("tonchamp2").val( ui.item.value ); // return false; } });
.
Cordialement,
Jordane
gismin
Ca marche pas.
Mon fichier PHP lui marche puisque je reçois la demande et l'affiche dans mon input codep.
$(function(){ $('#codep').autocomplete({ minLength: 2, source : 'completion.php' }); select: function( event, ui ) { $('codep').val( ui.item.label ); // $("ville").val( ui.item.value ); // return false; });
Mon fichier PHP lui marche puisque je reçois la demande et l'affiche dans mon input codep.
$requete = $bdd->prepare('SELECT codep, ville_nom FROM villes_france_free WHERE codep LIKE :term ORDER BY ville_nom'); // j'effectue ma requête SQL grâce au mot-clé LIKE $requete->execute(array('term' => $term.'%')); $array = array(); // on créé le tableau while($donnee = $requete->fetch()) // on effectue une boucle pour obtenir les données { array_push ($array,($donnee['ville_nom']).' '.($donnee['codep'])) ;// et on ajoute celles-ci à notre tableau } echo json_encode($array); // il n'y a plus qu'à convertir en JSON }
jordane45
- Messages postés
- 31458
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 23 février 2021
while($donnee = $requete->fetch()) // on effectue une boucle pour obtenir les données { $array[] = array('label'=>$donnee['ville_nom'] , 'value'=>$donnee['codep']); } echo json_encode($array); // il n'y a plus qu'à convertir en JSON
jordane45
- Messages postés
- 31458
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 23 février 2021
- Messages postés
- 31458
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 23 février 2021
ah, et il ne faut pas oublier de bien spécifier tes champs dans le JS ....
Tu utilises leur ID ? dans ce cas il faut préfixer par un dièse
Ou un class ? dans ce cas là, il faut préfixer par un point
Si id :
Tu utilises leur ID ? dans ce cas il faut préfixer par un dièse
Ou un class ? dans ce cas là, il faut préfixer par un point
Si id :
$('#codep').val( ui.item.label ); // $("#ville").val( ui.item.value ); //
gismin
C toujours pas concluant avec:
Je ne crois qu'il y ait des erreurs de syntaxes
$('#codep').autocomplete({ minLength: 2, source : 'completion.php' , select: function( event, ui ) { $('#codep').val( ui.item.value ); $("#ville").val( ui.item.label ); return false; } });et
while($donnee = $requete->fetch()) { $array[] = array('label'=>$donnee['ville_nom'] , 'value'=>$donnee['codep']); echo json_encode($array); // il n'y a plus qu'à convertir en JSON }
Je ne crois qu'il y ait des erreurs de syntaxes
jordane45
- Messages postés
- 31458
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 23 février 2021
Où as tu vu que le json_encode devait se trouver dans la boucle ?
Exemple
et le fichier php (juste pour exemple )
Exemple
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> .<meta name="viewport" content="width=device-width, initial-scale=1"> <title>jQuery UI Autocomplete </title> <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> </head> <body> <input type="text" id="codep"> <input type="text" id="ville"> <script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> <script> $('#codep').autocomplete({ minLength: 2, source : 'completion.php' , select: function( event, ui ) { $('#codep').val( ui.item.label ); // $("#ville").val( ui.item.value ); // return false; } }); </script> </body> </html>
et le fichier php (juste pour exemple )
<?php //exemple $res = array(); $res[] = array("value"=>10000,"label"=>"v1"); $res[] = array("value"=>10000,"label"=>"v3"); $res[] = array("value"=>10000,"label"=>"v2"); echo json_encode($res); exit;
gismin
oui j'ai fait une erreur de transcription mais chez moi 'json_encode ' est après la boucle (plus haut j'ai posté correctement).
Mon fichier PHP marche puisqu'il me renvoie: ville et code postal et avec mon autocomplete original j'ai bien ces 2 valeurs qui s'inscrivent dans mon input "codep" quand j'en choisis et clique.
Comment reprendre "simplement" ces 2 valeurs et en afficher la ville dans l'input 'ville' ?
Ton code autocomplete semble logique mais je ne sais pourquoi il ne marche pas.
Mon fichier PHP marche puisqu'il me renvoie: ville et code postal et avec mon autocomplete original j'ai bien ces 2 valeurs qui s'inscrivent dans mon input "codep" quand j'en choisis et clique.
Comment reprendre "simplement" ces 2 valeurs et en afficher la ville dans l'input 'ville' ?
Ton code autocomplete semble logique mais je ne sais pourquoi il ne marche pas.
gismin
Bon, ça marche ! j'ai repris ton code HTML en entier alors qu'avant qu'en partie seulement et avec dans complete.php :
Pour ta 2eme variante PHP j'ai pas encore bien saisie pour l'insérer à la suite de ma requête MYSQL.
En tout cas merci beaucoup et de partager tes compétences.
while($donnee = $requete->fetch()) // on effectue une boucle pour obtenir les données { $array[] = array('label'=>$donnee['ville_nom'] , 'value'=>$donnee['codep']); }.
Pour ta 2eme variante PHP j'ai pas encore bien saisie pour l'insérer à la suite de ma requête MYSQL.
En tout cas merci beaucoup et de partager tes compétences.
gismin
Bonjour, je reviens sur le code autocomplete.
Le code de Jordan45 n'affiche que les codes postaux dans codep sans les villes correspondantes. Après divers essais c mieux avec les codes suivants:
Le seul petit problème (même si c pas trop génant) c qu'il affiche dans '#ville' le code postal à la suite de la ville . Je ne sais pas ce qu'il faut mettre comme valeur dans "$("#ville").val( ui.item.value);" pour n'afficher que la ville. J'ai essayé au pif avec $array[0] sans résultat.
Le code de Jordan45 n'affiche que les codes postaux dans codep sans les villes correspondantes. Après divers essais c mieux avec les codes suivants:
$('#codep').autocomplete({ minLength: 2, source : 'completion2.php' , select: function( event, ui ) { $('#codep').val(); $("#ville").val( ui.item.value); // return false; } });
include ('connect.php'); if(isset($_GET['term'])) { $term = htmlspecialchars($_GET['term']); $requete = $bdd->prepare('SELECT codep, ville_nom FROM villes_france_free WHERE codep LIKE :term ORDER BY ville_nom'); // j'effectue ma requête SQL grâce au mot-clé LIKE $requete->execute(array('term' => $term.'%')); $array = array(); // on créé le tableau while($donnee = $requete->fetch()) // on effectue une boucle pour obtenir les données { $array[] = array('value'=>$donnee['ville_nom'] , 'label'=>$donnee['codep']); // et on ajoute celles-ci à notre tableau } echo json_encode($array); // il n'y a plus qu'à convertir en JSON }
Le seul petit problème (même si c pas trop génant) c qu'il affiche dans '#ville' le code postal à la suite de la ville . Je ne sais pas ce qu'il faut mettre comme valeur dans "$("#ville").val( ui.item.value);" pour n'afficher que la ville. J'ai essayé au pif avec $array[0] sans résultat.
gismin
Enfin j'ai trouvé sur un forum "openClassroom" la solution:
Problème résolu.
$('#codep').autocomplete({ minLength: 2, source : 'completion.php' , select: function( event, ui ) { let valeurs = ui.item.value.split(' - '); $('#codep').val( valeurs[1] ); $('#ville').val( valeurs[0] ); return false; } });
Problème résolu.
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
J'ai 2 input text id"codepl" et id"ville".
Avec "autocomplete" (ci-dessous) vers mon fichier "completion.php" j'ai en retour quand je rentre un code postal des 'villes+ code postal' qui s'affichent das mon input "codep" puis je clique sur une proposition et cela s'affiche donc dans cet input.
Ce que je cherche à faire c de séparer la ville et de l'afficher aussi dans mon input id="ville".
Faudrait, par contre nous montrer le code php de ton fichier completion.php'
La réponse devant contenir un champ "label" et un champ"value"