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 :

2 listes cp et ville alimentées et liées que sur certains CP


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut 2 listes cp et ville alimentées et liées que sur certains CP
    Bonour,

    j'ai créer deux listes qui sont alimenter et lié.
    Quand je choisi le code postal la 2eme s'alimente mais pas tout le temps je ne comprend pas pourquoi ?

    C'est a dire certains cp affiche bien leur villes toujours les memes mais d'autre choix sur certains code postal ,'alimente jamais la liste ville.

    Le sql retourne pourtant bien un resultat pourtant.

    liste.php

    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
    <html>
        <head>
            <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    		<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
            <script type="text/javascript">
                    // JavaScript Document
    $(document).ready(function() {
            var $code_postal = $('#code_postal');
            var $commune = $('#commune');
     
     
            // chargement de la liste de localité un
            $.ajax({
                    url: 'test.php',
                    data: 'go', // on envoie $_GET['go']
                    dataType: 'json', // on veut un retour JSON
                    success: function(json) {
                            $.each(json, function(value) {
                                    // pour chaque noeud JSON
                                    // on ajoute l option dans la liste
                                    $('#code_postal').append('<option value="'+ value +'">'+ value +'</option>');
                            });
                    }
            });
     
            // à la sélection de la localité un dans la liste
            $code_postal.on('change', function() {
                    var val = $(this).val(); // on récupère la valeur de la localité un
                    if(val != '') {
                            $commune.empty(); // on vide la liste de localité deux
                            $commune.append('<option value="">Choisir la localité deux</option>');
            
                            $.ajax({
                                    url: 'test.php',
                                    data: 'code_postal='+ val, // on envoie $_GET['code_postal']
                                    dataType: 'json',
                                    success: function(json) {
                                            $.each(json, function(value) {
                                                    $commune.append('<option value="'+ value +'">'+ value +'</option>');
                                            });
                                    }
                            });
                    }
                    else {
                            $commune.empty();
                            $commune.append('<option value="">Choisir la localité deux</option>');
                            $nomservicepublic.empty(); // on vide la liste de localité deux
                            
                    }
            });
     
     
    });
                    
                    
                    </script>
    <script type='text/javascript'>
                            
    $(".commune").change(function() {
              idcityhidden = $("#commune").value();
          $.post("liste2.php", {"commune":idcityhidden});
    }
    </script>
        </head>
        <body>
    	<form id="" name="" type="post" action="">
            <select id="code_postal" name="code_postal">
            	<option value="">Choisir la localité un</option>
            </select>
            <select id="commune" name="commune">
            	<option value="">Choisir la localité deux</option>
            </select>
    		<input type="text" name="city-hidden" id="city-hidden" onchange='NomServicePublic()'>
    		<input type="submit" value="envoyer">
      </form>
     
      </body></html>



    test.php
    Code php : 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
    <?php
    // Vérification des paramètres d'accès au fichier liste.php
    if(isset($_GET['go']) || isset($_GET['code_postal']) || isset($_GET['commune'])) {
    	// connexion à la base de données
    	try {
     
    	} catch(Exception $e) {
    		exit('Impossible de se connecter à la base de données.');
    	}
     
    	$json = array();
     
    	if(isset($_GET['go'])) {
    		// requête qui récupère les localités un
    		$requete = "SELECT distinct(code_postal) FROM servicepublic ORDER BY code_postal ASC";
    		// exécution de la requête
    		$resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo()));
    		// Création de la liste
    		while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
    			// je remplis un tableau et mettant l'id en index
    			$json[$donnees["code_postal"]][] = $donnees["code_postal"];
    		}
    	}
    	elseif(isset($_GET['code_postal'])) {
    		// requête qui récupère les localités un
    		$requete = "SELECT distinct(commune) FROM servicepublic WHERE code_postal = '".$_GET['code_postal']."' ORDER BY commune ASC";
    		// exécution de la requête
    		$resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo()));
    		// Création de la liste
    		while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
    			// je remplis un tableau et mettant l'id en index
    			$json[$donnees["commune"]][] = $donnees["commune"];
    		}
    	}
    	elseif(isset($_GET['commune'])) {
     
    		// requête qui récupère les localités un
    		$requete = "SELECT distinct(nom_service_public) FROM servicepublic WHERE commune = '".$_GET['commune']."' ORDER BY nom_service_public ASC";
    		// exécution de la requête
    		$resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo()));
    		// Création de la liste
    		while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
    			// je remplis un tableau et mettant l'id en index
    			$json[$donnees["nom_service_public"]][] = $donnees["nom_service_public"];
    		}
    	}
    	 // envoi du résultat au success
    	echo json_encode($json);
    }
     
    ?>

    merci pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- DEBUGAGE de BASE :

    En JS, il s'agit, au moins :
    • de mettre des alert() et/ou console.log() pour savoir ce qui se passe dans le code.

    Pour Ajax :
    • exécuter le fichier .php directement dans la barre d'adresse, avec des données "en dur".

    En PHP :
    • mettre des echo ou var_dump().

    C'est LA BASE...

    Citation Envoyé par kate59 Voir le message
    ...mais d'autre choix sur certains code postal ,'alimente jamais la liste ville...
    2- Et donc ?
    • QUELS CP ne donnent pas de résultat ?
    • As-tu vérifier s'il sont bien associés à des villes ?
    • Ont-ils une "particularité" ?
    • ... ?
    Dernière modification par Invité ; 05/05/2020 à 14h31.

Discussions similaires

  1. [MySQL] Double liste déroulante REGION + Villes
    Par dahu17 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 05/02/2008, 22h57
  2. Réponses: 4
    Dernier message: 04/09/2007, 18h54
  3. Réponses: 16
    Dernier message: 05/07/2007, 10h14
  4. Réponses: 1
    Dernier message: 28/09/2005, 18h10

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