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 :

Choisir la ville suivant le code postal [AJAX]


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2018
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 300
    Par défaut Choisir la ville suivant le code postal
    Bonjour,
    Le principe est dans le titre. Je n'ai pas d'erreur javascript, mais quelque chose doit clocher dans mon système. Voici mon code :
    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
            <div class="form-row">
                <div class="form-group col-md-4">
                  <label for="Ville">Ville</label>
                  <input list="ice-cream-flavors" id="ice-cream-choice" name="ice-cream-choice" class="form-control" />
                  <datalist id="ice-cream-flavors">
                    <select type="text" class="form-control client_ville" onchange="send_postalcode(this.value)">
                      <?php $list = $bdd->query('SELECT DISTINCT * FROM ville ORDER BY ville_nom ASC');
                      while ($data = $list->fetch()) { ?>
                          <option value="<?php echo $data['ville_nom']; ?>"> <?php echo $data['ville_nom']; ?></option>
                      <?php } $list->closeCursor(); ?>
                    </select>
                  </datalist>
                </div>
                <div class="form-group col-md-4">
                  <label for="Postal">Code Postal</label>
                  <div class="load_postalcode">
                        Le produit sera chargé ici
                  </div>
                </div>
            </div>
    <script>
          /* select le code postal quand la ville est choisit */
          function send_postalcode(city_ref){
              var city_ref = $(this).val();
              var load_postalcode = $(this).find('.load_postalcode'); // je pense que c'est ici que ça ne va pas
              $.ajax({
                url: "modal_header/Client/ajax/inputpostalcode.php",
                method: "POST",
                data: { city_ref: city_ref }
              })
              .done(function( retour_html ) {
                load_postalcode.html( retour_html );
                console.log( "success ajax client" );
              })
              .fail(function() {
                console.log( "error facture creation ajax" );
              });   
            }
    </script>
    et le inputpostalcode.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
    <?php include '../../../../Include/connect.php' ; 
     
        $city_ref  = (array_key_exists('city_ref', $_POST)) ? $_POST['city_ref']: NULL; 
        if ($city_ref) {
            $stmt = $bdd->prepare('
                SELECT * FROM client
                WHERE client_ville = :code
            ');
            $stmt->bindValue(':code', strtoupper($city_ref), PDO::PARAM_STR);
            $stmt->execute();
            if ($donnees = $stmt->fetch(PDO::FETCH_ASSOC)) { ?>
                <input class="form-control client_codepostal_add" type="text" value="<?php echo $donnees['client_codepostal'] ?>" />  
     
            <?php 
            }
        }
    ?>
    Merci (PS : si vous voyez des améliorations possibles, je suis preneur aussi

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 563
    Par défaut
    Salut,

    Essaies
    Code jQuery : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var load_postalcode=$(this).closest('.form-group').next('.form-group').find('.load_postalcode');
    Remarque : Puisque tu importes jquery, alors il faut l'utiliser correctement, c'est à dire supprimer l'attribut "onchange" et le remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(".client_ville").on("change",function(){/* ton code ici ...*/})

  3. #3
    Invité
    Invité(e)
    Par défaut
    +1
    J'ajoute que :
    1- inutile d'utiliser * :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                      <?php $list = $bdd->query('SELECT DISTINCT ville_nom FROM ville ORDER BY ville_nom ASC');
    idem si tu ne veux récupérer que le CP :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
                SELECT client_codepostal FROM client
    2- et en UTF-8, il faut utiliser mb_strtoupper().
    Dernière modification par Invité ; 06/09/2019 à 18h22.

  4. #4
    Membre éclairé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2018
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 300
    Par défaut
    Merci pour vos précieux conseils. Je les ai tous appliqué à mon code.

    J'ai trouvé le problème : il venait du fait que je devais viser l'input plutôt que ma datalist. En clair :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                  <input list="ice-cream-flavors" id="ice-cream-choice" name="ice-cream-choice" class="form-control client_ville" />
                  <datalist id="ice-cream-flavors">
                    <select type="text" class="form-control">
    au lieu de
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                  <input list="ice-cream-flavors" id="ice-cream-choice" name="ice-cream-choice" class="form-control" />
                  <datalist id="ice-cream-flavors">
                    <select type="text" class="form-control client_ville">

    Merci pour vos remarques, vous m'avez bien aidé! Sujet résolu

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/10/2011, 09h25
  2. connaître les villes d'un code postal
    Par toto62 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 10/01/2010, 20h39
  3. [AC-2007] Affichage automatique Ville après choix Code Postal
    Par Lionel69260 dans le forum IHM
    Réponses: 3
    Dernier message: 23/11/2009, 23h47
  4. Relation entre une adresse et la ville et le code postal
    Par fghjklm dans le forum Modélisation
    Réponses: 2
    Dernier message: 06/03/2008, 03h09
  5. Requete nom ville pour avoir code postal,avec une base sous format XMl
    Par naouah dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/02/2008, 20h00

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