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 :

Filtre sur listes déroulantes peuplées via CSV


Sujet :

Langage PHP

  1. #1
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : avril 2007
    Messages : 1 996
    Points : 3 105
    Points
    3 105
    Par défaut Filtre sur listes déroulantes peuplées via CSV
    Bonjour à tous,

    je viens faire un tour côté PHP moi qui n'y ai jamais touché et qui suis plutôt du côté .Net du forum. J'espère que vous pourrez m'aider

    Je suis en train d'essayer de modifier un site existant pour dépanner et je ne trouve pas comment faire ce que je souhaite.

    En gros, j'ai deux listes déroulantes, une pour des codes postaux, la seconde pour des villes.
    Les deux listes sont construites ainsi :
    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
    <div class="input-field">
                      <select id="CODE_POSTAL" name="CODE_POSTAL" >
                        <?php
                          foreach($form->zip_code as $key => $value){
                            echo "<option value='".$key."'>".$value."</option>";
                          }
                         ?>
                      </select>
                      <label for="CODE_POSTAL">Code postal*</label>
                    </div>
                    <div class="input-field">
                      <select id="VILLE" name="VILLE" >
                        <?php
                          foreach($form->city as $key => $value){
                            echo "<option value='".$key."'>".$value."</option>";
                          }
                         ?>
                      </select>
                      <label for="VILLE">Commune*</label>
                    </div>
    Côté Form.php, la fonction qui ramène les valeurs est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function __construct(){
            $csv = file("..\..\communes.csv");
            foreach($csv as $key => $value){
              $explode = explode(";",$value);
              $explode[1] = str_replace("\n", "", $explode[1]);
              if($explode[0] != 'CODE POSTAL'){
                $this->zip_code[$explode[0]] = $explode[0];
                $this->city[$explode[1]] = $explode[1];
              }
            }
            ksort($this->zip_code);
            ksort($this->city);
        }
    Le problème rencontré est que les listes ne tiennent pas compte l'une de l'autre.
    On peut donc sélectionner un CP puis une VILLE qui ne matchent pas dans le CSV initial.

    Je cherche un moyen de rendre les listes dépendantes :
    - si j'ai sélectionné un CP, seules les communes sur ce CP dans le csv sont affichées dans la liste de communes
    - si j'ai sélectionné une ville, seules les CP Ssur cette ville dans le csv sont affichés dans la liste de CP.

    Si quelqu'un a des pistes à me donner sur la manière de procéder sans révolutionner le code si possible, je suis preneur.

    Merci d'avance.

  2. #2
    Invité
    Invité(e)

  3. #3
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : avril 2007
    Messages : 1 996
    Points : 3 105
    Points
    3 105
    Par défaut
    JREAUX62, merci pour le tuto.

    Mais comme je l'indique au début, je suis totalement novice en PHP et je ne peux pas me lancer dans une modification de fond du fonctionnement du code actuel.
    Je cherche, sans trouver jusque là, s'il existe un équivalent de Linq en PHP qui me permettrait de faire un filtre direct sur les valeurs disponibles.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Lol...

    1- Il n'y a pas une once de PHP dans le tuto.
    C'est tout JavaScript !
    Et pour cause : les interactions entre les listes se passent "coté client".

    2- La seule chose qui est demandée à PHP, c'est de construire, à partir de tes données PHP, la table JS :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <script>
    var tbl_villes = [
      {
        "city" : "xx",
        "zip_code" : "xxxxx"
      },
      {
        "city" : "yy",
        "zip_code" : "yyyyy"
      },
      // la suite des données
      ...
    ];
    ....
    </script>
    Par exemple avec une boucle foreach() :
    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
    <script>
    var tbl_villes = [
    <?php 
    foreach( $villes as $ville )
    {
    ?>
      {
        "city" : "<?php echo htmlspecialchars($ville['city']); ?>",
        "zip_code" : "<?php echo htmlspecialchars($ville['zip_code']); ?>"
      },
    <?php 
    }
    ?>
    ];
    ....
    </script>
    Dernière modification par rawsrc ; 24/01/2020 à 20h39. Motif: correction erreur de syntaxe

Discussions similaires

  1. [AC-2007] Filtre sur listes déroulantes
    Par djotson dans le forum IHM
    Réponses: 1
    Dernier message: 09/02/2015, 21h53
  2. [AC-2007] Filtre sur liste déroulante dans sous-formulaire
    Par petitpom dans le forum IHM
    Réponses: 4
    Dernier message: 18/07/2012, 10h41
  3. filtre sur liste déroulante
    Par Lebrun dans le forum Langage
    Réponses: 4
    Dernier message: 21/10/2009, 19h29
  4. [AC-2000] filtre sur liste déroulante
    Par akiles dans le forum IHM
    Réponses: 1
    Dernier message: 17/08/2009, 15h55
  5. filtre sur liste déroulante dynamique
    Par Sami Xite dans le forum Access
    Réponses: 2
    Dernier message: 06/05/2008, 07h37

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