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

PHP & Base de données Discussion :

Autocomplétion ( code postal - ville )


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Décembre 2017
    Messages : 8
    Par défaut Autocomplétion ( code postal - ville )
    Bonjour,
    Après plusieurs jours de batailles pour réussir à faire fonctionner ce script, malheureusement je n'y arrive pas .Donc je tourne vers vous dans l'espoir de le faire fonctionner.Ou si vous avez un script complet analogue à me soumettre qui fonctionne.
    Le script autoC.php ( voir ci dessous ) ne me retourne aucun résultat, il me retourne [] , et aucune erreur de syntaxe ni de codage.
    La connexion à la bdd semble correcte.
    Je ne vois pas où se situe le souci.
    Si vous pouvez m'aider ça serait top.
    Merci par avance.
    (Ce script a été pris des tutos de ce site)

    Les scripts sont les suivants:

    Script : AutoC.PHP

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    <?php
     
    require_once('./AutoCompletionCPVille.class.php');
     
    //Initialisation de la liste
    $list = array();
     
    //Connexion MySQL
    try
    {
        $db = new PDO('mysql:host=XXXXX;dbname=YYYYY, "YYYYYY", "ZZZZZZ"');
    }
    catch (Exception $ex)
    {
        echo $ex->getMessage();
    }
     
    //Construction de la requete
    $strQuery = "SELECT CP CodePostal, VILLE Ville FROM autocomplete WHERE ";
    if (isset($_POST["codePostal"]))
    {
        $strQuery .= "CP LIKE :codePostal ";
    }
    else
    {
        $strQuery .= "VILLE LIKE :ville ";
    }
    $strQuery .= "AND CODEPAYS = 'FR' ";
    //Limite
    if (isset($_POST["maxRows"]))
    {
        $strQuery .= "LIMIT 0, :maxRows";
    }
    $query = $db->prepare($strQuery);
    if (isset($_POST["codePostal"]))
    {
        $value = $_POST["codePostal"]."%";
        $query->bindParam(":codePostal", $value, PDO::PARAM_STR);
    }
    else
    {
        $value = $_POST["ville"]."%";
        $query->bindParam(":ville", $value, PDO::PARAM_STR);
    }
    //Limite
    if (isset($_POST["maxRows"]))
    {
        $valueRows = intval($_POST["maxRows"]);
        $query->bindParam(":maxRows", $valueRows, PDO::PARAM_INT);
    }
     
    $query->execute();
     
    $list = $query->fetchAll(PDO::FETCH_CLASS, "AutoCompletionCPVille");;
     
    echo json_encode($list);
    ?>


    Script :AutoCompletionCPVille.class.php


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    class AutoCompletionCPVille {
    	public $CodePostal;
    	public $Ville;
    }
    ?>

    Le code html

    Code html : 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
    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
    <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>

  2. #2
    Membre émérite Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Par défaut
    Hello,

    As-tu tester ton script directement sans ajax (via un formulaire test pour les données POST ou en les passant en GET pour le test) ?

    Pour les requêtes Ajax, dans les outils de développement des navigateurs, tu as la possibilité de voir les requêtes avec leurs paramètres et leurs résultats, cela aide beaucoup à trouver les erreurs.

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo json_encode($list);
    Peut-être faut-il forcer json_encode à lire de l'objet ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo json_encode($list, JSON_FORCE_OBJECT);
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Décembre 2017
    Messages : 8
    Par défaut Malheureusement ...
    Bonsoir
    D'abord merci pour vos réponses.
    Cela ne donne rien malheureusement.
    Quand j'entre juste AutoCompletion.php sans passer par les champs cela donne cela.
    {}

    j'ai utilisé les consoles du navigateur cela me donne aucun message d'erreur .
    Je ne sais pas, un peu perdu quoi !

  5. #5
    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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Et si tu exécutes ton script en mettant une valeur en dur à la place des valeurs du formulaire ?
    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]

  6. #6
    Membre confirmé Avatar de lesitadom39
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2015
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    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
    Par défaut nom de la table
    un petit détail ; dans le script, la table a pour nom cp_autocomplete.
    Celà dit, je suis également infoutu de faire tourner ce script dans un site avec bootstrap3.
    D'autres pistes????

Discussions similaires

  1. AutoComplétion Code Postal/Ville avec jQuery
    Par Bovino dans le forum jQuery
    Réponses: 19
    Dernier message: 03/11/2020, 16h31
  2. [AJAX] AutoComplétion Code Postal/Ville
    Par paraglider dans le forum jQuery
    Réponses: 4
    Dernier message: 17/02/2016, 16h48
  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