IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

AutoComplétion Code Postal/Ville avec jQuery [Tutoriel]


Sujet :

jQuery

  1. #1
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut AutoComplétion Code Postal/Ville avec jQuery


    Xavier ZOLEZZI vous propose son nouvel article : AutoComplétion Code Postal/Ville avec jQuery.

    Cet article vous présente étape par étape la mise en place d'une autocomplétion pour les communes françaises et leurs codes postaux.

    N'hésitez pas à faire part de vos remarques et commentaires concernant cet article.

    à lui !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mai 2015
    Messages : 2
    Points : 5
    Points
    5
    Par défaut Plusieurs autocomplétions sur la même page
    Bonjour à tous,

    J'ai installé avec succès le script d'autocomplétion détaillé dans l'article, mais je me heurte à deux problèmes...

    - Tous les noms de ville comportant un accent renvoient un "null", j'ai pourtant bien mis les champs en UTF8...

    - J'aimerais pouvoir réaliser plusieurs fois le script sur une même page (pour fournir, notamment, une adresse de départ, une adresse d'arrivée, celles-ci étant des champs clairement distincts de mon formulaire) sans avoir bien sûr à le recopier bêtement. Y a-t-il une solution pour ce faire? Par exemple en donnant une variable supplémentaire, celle de la partie du formulaire concerné par l'exécution en cours... Mais je ne connais pas la syntaxe à utiliser :-/

    Je suis encore débutant. Merci de votre secours!

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    (...)j'ai pourtant bien mis les champs en UTF8...
    peut être n'est ce pas suffisant
    Passez à l'UTF-8 sans manquer une étape.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mai 2015
    Messages : 2
    Points : 5
    Points
    5
    Par défaut
    Merci pour ce lien, je vais le lire attentivement :-)

    Pour le reste, j'ai trouvé tout seul comme un grand (après une bonne nuit de sommeil...). J'ai numéroté chaque étape dans mon formulaire,

    ajouté le numéro à chaque id de champ concerné (cp1, cp2, ville1, ville2),

    ajouté à chaque champ cp et ville un attribut numreq="le numéro en question",

    puis ajouté dans le script " + $(this).attr('numreq')" à chaque référence par id à un champ du formulaire. De cette manière, chaque champ contient en lui même la référence du champ ville ou code postal qui lui correspond.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2015
    Messages : 1
    Points : 1
    Points
    1
    Par défaut AutoComplétion Code Postal/Ville
    Bonjour

    Edit :
    Après avoir repris le script cet après midi, j'ai trouvé la réponse, évidente, tellement évidente que je ne l'avais pas vue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $strQuery = "SELECT CP CodePostal, VILLE Ville FROM autocomplete WHERE ";
    doit être remplacé par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $strQuery = "SELECT CP CodePostal, VILLE Ville FROM cp_autocomplete WHERE ";
    Tellement convaincu que le soucis venait de mon incompréhension de la POO, je n'ai même pas vu cette erreur évidente... J'espère au moins que ça pourra servir à quelqu'un d'autre

    Je cherche à réaliser ce script très sympa, mais je rencontre un petit soucis.
    Mes données sont bien envoyées au script PHP qui construit la requête, mais cette requête n'est pas correcte.

    en fin de script, voici ce que me retourne
    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
    $query->debugDumpParams();
     
    SQL: [115] SELECT CP CodePostal, VILLE Ville FROM autocomplete WHERE CP LIKE :codePostal AND CODEPAYS
     = 'FR' LIMIT 0, :maxRows
    Params:  2
    Key: Name: [11] :codePostal
    paramno=-1
    name=[11] ":codePostal"
    is_param=1
    param_type=2
    Key: Name: [8] :maxRows
    paramno=-1
    name=[8] ":maxRows"
    is_param=1
    param_type=1
    Que ça soit le CP ou la ville, le like ne prend pas en compte la valeur que j'entre dans le champ. Pourtant, en vérifiant avec firebug, j'ai bien des données envoyées en POST

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    codePostal=702&pays=FR&maxRows=10
    Je n'y connais pas grand chose en php orienté objet et j'ai donc un peu de mal à comprendre d'où vient le problème.
    Aussi, est il normal que la class PHP soit aussi courte ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    class AutoCompletionCPVille {
            public $CodePostal;
            public $Ville;
    }
    ?>
    Encore une fois, n'y connaissant pas grand chose en POO, j'ai du mal à saisir l'utilité de cette class qui ne semble au final rien retourner, surtout quand on la compare à la class ASP.NET C# qui est plus élaborée. Est il possible qu'il y ai eu un oubli dans le tuto?

    Je vais bien entendu continuer à chercher par moi même ce week-end, mais un coup de main ne serait pas de refus

    En tout cas merci, ce script une fois en place va vraiment permettre de gagner du temps

    Bon week-end

    Thomas

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2016
    Messages : 1
    Points : 1
    Points
    1
    Par défaut renvois "null" pour les villes avec accent
    Citation Envoyé par lauxile Voir le message

    - Tous les noms de ville comportant un accent renvoient un "null", j'ai pourtant bien mis les champs en UTF8...
    Bonjour,

    J'ai aussi ce problème de renvois "null" pour les villes avec accent.
    J'ai bien suivi les étapes de NoSmoking pour passer correctement en UTF-8 mais rien à faire...

    As-tu la solution?

  7. #7
    Nouveau Candidat au Club
    Femme Profil pro
    Webmaster
    Inscrit en
    Octobre 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Trier les villes par ordre alphabétique
    Bonsoir à toutes et à tous,
    Super cette AutoComplétion.
    Avant toute chose je tiens à vous signaler que je suis novice.
    J'ai télécharger "Autocomplétion PHP - SQLite" et ça fonctionne bien. J'ai seulement une petite question :
    Comment faut-il procéder pour obtenir la liste des communes par ordre alphabétique, après saisie du cp.
    Je vous remercie d'avance et bonne soirée.

  8. #8
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    il te faut faire le tri de tes données au retour serveur dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    success: function (data){
    }

  9. #9
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 1
    Points : 3
    Points
    3
    Par défaut Si vous obtenez 'null' pour les villes avec accents
    Bonjour à tous,

    Si vous obtenez la valeur "null" pour toutes les villes avec accents il suffit de modifier la connexion à votre base de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $db = new PDO('mysql:host=votre_hote;dbname=votre_bdd', 'votre_login', 'votre_mdp', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));

  10. #10
    Membre actif
    Profil pro
    Developpeur web et Access VBA
    Inscrit en
    Janvier 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Developpeur web et Access VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 457
    Points : 203
    Points
    203
    Par défaut
    Bonjour,

    Merci pour ce script qui fonctionne à merveille !!!
    Je cherche à rajouter un css pour gérer la liste autrement, comment procéder, le fichier jquery-ui.css est très long et beaucoup de choses semblent ne servir à rien...
    Si vous avez une idée pour gérer la taille de la police et des lignes
    Merci !
    VrroOOOAAAAAPPPPPPPPPP !!!

  11. #11
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    Comment faire pour modifier la recherche, si je veus chercher dans tous le nom de la ville et non les premiers caractères. par exemple je voudrais qu'apparaisse La Madeleine si je tape "made".

    En tous cas super tuto, très intéréssant! Merci beaucoup.

  12. #12
    Membre régulier Avatar de lesitadom39
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2015
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2015
    Messages : 112
    Points : 82
    Points
    82
    Par défaut affichage des 10 premiers résultats
    Bon, tout fonctionne bien,sauf....... que les recherches ne m'affichent que les dix premières villes correspondants à un code postal????

  13. #13
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    @lesitadom39 :
    La limitation est dans le code avant envoi au serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    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 };
    }
    c'est la données maxRows qui limite les réponses coté serveur
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //Limite
    if (isset($_POST["maxRows"]))
    {
        $strQuery .= "LIMIT 0, :maxRows";
    }

  14. #14
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    @tom.dev :
    c'est au niveau de la requête coté serveur que tu regardes.

  15. #15
    Membre régulier Avatar de lesitadom39
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2015
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2015
    Messages : 112
    Points : 82
    Points
    82
    Par défaut
    Il faut donc que j'augmente (par exemple à 100):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var objData = {};
    	if ($(this.element).attr('id') == 'cp')
    	{
    		objData = { codePostal: request.term, pays: 'FR', maxRows: 100 };
    	}
    	else
    	{
    		objData = { ville: request.term, pays: 'FR', maxRows: 100 };
    	}
    ??????
    Merci pour la réponse

  16. #16
    Nouveau Candidat au Club
    Femme Profil pro
    vacancier
    Inscrit en
    Janvier 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : vacancier

    Informations forums :
    Inscription : Janvier 2018
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Merci
    Un grand merci ca fonctionne à merveille et ca m'a permis de comprendre le fonctionnement de 'autocomplete'

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 13
    Points : 14
    Points
    14
    Par défaut Ne fonctionne pas
    J'ai tout installé ne fonctionne pas. (même en mettant: cp_)

    La demo ne fonctionne pas non plus.

    https://x-zolezzi.developpez.com/dem...lete/demo.html

    Dommage car c'était intéressant.

  18. #18
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour ,
    effectivement il s'agit d'un problème de chargement des scripts en http vers du https qui bloque (mixed active content).

  19. #19
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 1 679
    Points
    1 679
    Par défaut
    Citation Envoyé par shaki Voir le message
    J'ai tout installé ne fonctionne pas. (même en mettant: cp_)

    La demo ne fonctionne pas non plus.
    Ok, mais si tu regardes la date des posts précédents, ça fait plus de 2 ans et demi...
    Les erreurs en console de Firefox indiquent que la version de JQuery n'est plus disponible par les liens intégrés au code. Mets-les à jour, peut-être que ça marchera mieux.

    [EDIT]
    Pire, le début est de 2011 !

  20. #20
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Citation Envoyé par shaki
    La demo ne fonctionne pas non plus.
    C'est rétabli, passage de http en https, pensez à vider le cache avant nouvel essai au cas où !..

Discussions similaires

  1. [AJAX] AutoComplétion Code Postal/Ville
    Par paraglider dans le forum jQuery
    Réponses: 4
    Dernier message: 17/02/2016, 16h48
  2. Code postal / ville avec du javascript
    Par ziko963 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/11/2010, 16h10
  3. [Formulaire] relation code Postal/ville
    Par Frenchguy dans le forum IHM
    Réponses: 12
    Dernier message: 15/11/2006, 15h37
  4. [MySQL] code postale - ville
    Par debut_php dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 29/06/2006, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo