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

Langage PHP Discussion :

Autocomplétion sur un champ ville


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut Autocomplétion sur un champ ville
    Bonjour,

    Voila je cherche à faire un champ ville en autocomplétion (les données, nom des villes, départements etc se trouvant sur une table).

    Pour le coté autocomplétion j'utilise la solution fournie par https://jqueryui.com/autocomplete/

    dont voici le code :

    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
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <title>jQuery UI Autocomplete - Default functionality</title>
        <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
        <script src="//code.jquery.com/jquery-1.10.2.js"></script>
        <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
        <script>
            $(function() {
                var availableTags = [
                    "Paris",
                    "Bordeaux",
                    "Nice",
                    "Toulouse",
                    "Rueil-Malmaison"
                ];
                $( "#tags" ).autocomplete({
                    source: availableTags
                });
            });
        </script>
    </head>
    <body>
     
    <div class="ui-widget">
        <label for="tags">Tags: </label>
        <input id="tags">
    </div>
     
     
    </body>
    </html>
    Mais ma question est la suivante : Comment générer la liste des villes de ma table "communes_fr", ma table comporte 36800 communes environ. ou placer le code php exactement ? et surtout de quelle manière car comme j'ai beaucoup de villes, j'ai peur de mal placer mon code php et de bouffer des ressources inutilement. Car je ne veux pas qu'à chaque chargement de la page il me génère les 36000 villes, mais uniquement 10 résultats selon les premières lettres tapée par exemple!

    Merci pour votre aide.

  2. #2
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Le mieux ? Utiliser les librairies places et autocomplete proposées par google, franchement c'est top...

    Un exemple de comment mettre ça en place : https://www.itx-technologies.com/blo...e-des-adresses
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Sinon, si tu veux faire la recherche dans ta base pour limiter aux villes qui existent dans ton référentiel (ou pour une autre liste), tu peux utiliser la fonctionnalité remote de jqueryUI autocomplete et faire la recherche en PHP via AJAX.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut
    Citation Envoyé par Spartacusply Voir le message
    Le mieux ? Utiliser les librairies places et autocomplete proposées par google, franchement c'est top...

    Un exemple de comment mettre ça en place : https://www.itx-technologies.com/blo...e-des-adresses
    Salut et merci pour le lien mais je n'ai pas besoin de carte google maps, juste un champ autocomplete en menu déroulant.. Est-ce possible avec la solution librairies places ? Car j'ai regardé sur le site + sur la doc Google mais je ne trouve pas d'exemple. En gros, j'ai un formulaire d'inscription et je souhaite que l'utilisateur tape les premières lettres d'une ville de France, sélectionne une ville et récupérer la valeur dès qu'il aura envoyé le formulaire d'inscription.

    Citation Envoyé par Celira Voir le message
    Sinon, si tu veux faire la recherche dans ta base pour limiter aux villes qui existent dans ton référentiel (ou pour une autre liste), tu peux utiliser la fonctionnalité remote de jqueryUI autocomplete et faire la recherche en PHP via AJAX.
    Salut Celira, oui ton idée m'intéresse. Tu as un exemple concret avec au moins un bout de code à adapter ?

    Merci.

  5. #5
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut
    Je veux juste que la liste des villes soit pris dans ma table.. donc je pense qu'il faut remplacer quelque chose de la ligne 9 à la ligne 22 mais je ne sais pas comment adapter le code..

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu peux regarder l'exemple dans la doc de jqueryUi : https://jqueryui.com/autocomplete/#remote et http://api.jqueryui.com/autocomplete/#option-source
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        $( "#birds" ).autocomplete({
          source: "search.php",
          minLength: 2
        });
    Pour la partie PHP, il te faut un script qui prenne un paramètre en entrée et qui fasse une requête en base. Quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $results = array();
    if (!empty($_GET['term'])) {
    	$stmt = $pdo->prepare("SELECT id as value, nom as label FROM OISEAUX where nom LIKE ?");
    	$rs = $stmt->execute(array('%'.$_GET['term'].'%'));
    	while( $obj = $rs->fetchObject()) {
    		$results[] = $obj;
    	}
    }
    echo json_encode($results);
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut
    j'ai utilisé ton autre code de l'autre sujet^^ TOP!! merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 14/02/2012, 12h08
  2. Autocomplétion sur plusieurs champs
    Par agaufres dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 30/09/2009, 14h43
  3. Réponses: 3
    Dernier message: 16/05/2009, 18h11
  4. [CR] Problème de sélection sur un champ date
    Par noluc dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/11/2003, 16h56
  5. [VB6] Zone de liste modifiable basée sur un champ
    Par pepper dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 27/11/2002, 13h41

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