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 :

Organiser les valeurs de 2 tables dans une liste de sélection [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 5
    Points : 8
    Points
    8
    Par défaut Organiser les valeurs de 2 tables dans une liste de sélection
    Bonjour,

    Je cale totalement pour organiser les valeurs de 2 tables (departements et regions) dans une liste de sélection. Le but étant de présenter les valeurs de façon imbriquées sous la forme :

    Alsace
    67 Bas-Rhin
    68 Haut-Rhin
    Aquitaine
    24 Dordogne
    33 Gironde
    etc.

    Voici mon 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
     
    // Requête SQL
    $rqSql = "SELECT num_dept, libelle_dept, nom_reg, regions.id_reg 
                 FROM departements, regions 
                 WHERE departements.id_reg = regions.id_reg 
                 ORDER BY 4, 1";
    // Exécution de la requête
    $result = mysql_query( $rqSql, $idConnect)
                 or die( "Exécution requête impossible !");
    mysql_close( $idConnect);
    // Construction de la chaîne de caractères qui fait la liste
    $ldep = "<SELECT NAME='listDept'>";
    $ldep .= "<OPTION VALUE=0>Choisissez</OPTION>";
    // On boucle sur les tables
    while ( $row = mysql_fetch_array( $result)) {
        $nomreg = $row["nom_reg"];
        $numdep = $row["num_dept"];
        $nomdep = $row["libelle_dept"];
        $ldep .= "<OPTION VALUE='$nomreg'>$nomreg</OPTION>";
        $ldep .= "<OPTION VALUE='$numdep'>$nomdep</OPTION>";
    }
    $ldep .= "</SELECT>";
     
    print $ldep;
     
    ?>
    Mais le résultat donne :

    Alsace
    67 Bas-Rhin
    Alsace
    68 Haut-Rhin
    Aquitaine
    24 Dordogne
    Aquitaine
    33 Gironde
    etc.

    Voir exemple sur http://www.gigaprint.fr/testphp/inc-test.php

    Et après de nombreuses recherches sur le web, je n'arrive pas à trouver la solution.

    Merci pour vos contributions.

  2. #2
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    Salut,

    en terme de prog, c'est ce qu'on appelle une rupture.
    Le but du jeu est de comparer avec une valeur précédente, si cette valeur a changé, si oui, tu effectues une action spéciale. Dans le cas présent, il faut donc vérifier si la valeur de nomreg a changé entre deux records: si oui, tu affiches cette valeur, sinon, tu skip.

    Ex:

    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
     
    $prevreg = "";  // permettra de déterminer le changement de val pour nomreg
     
    $ldep = "<SELECT NAME='listDept'>";
    $ldep .= "<OPTION VALUE=0>Choisissez</OPTION>";
     
    while ( $row = mysql_fetch_array( $result)) {
        $nomreg = $row["nom_reg"];
        $numdep = $row["num_dept"];
        $nomdep = $row["libelle_dept"];
        if ($prevreg != $nomreg) {
        	$ldep .= "<OPTION VALUE='$nomreg'>$nomreg</OPTION>";
        	$prevreg = $nomreg;
        }
        $ldep .= "<OPTION VALUE='$numdep'>$nomdep</OPTION>";
     
    }
    $ldep .= "</SELECT>";
     
    print $ldep;
    Merci à Microsoft pour avoir transformé un métier relativement terne et basé sur une approche bêtement technique et rigoureuse des faits, en challenge quotidien, nécessitant une remise en question permanente à l'échelle du quart d'heure

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

Discussions similaires

  1. récupérer les valeurs d'un checkbox dans une liste
    Par ikouhan dans le forum Struts 1
    Réponses: 19
    Dernier message: 31/08/2010, 14h22
  2. Insérer les valeurs d'un tableau dans une table
    Par Konami15 dans le forum ASP
    Réponses: 30
    Dernier message: 30/09/2008, 15h14
  3. Copier les valeurs d'un formulaire dans une table
    Par Cyphen dans le forum Access
    Réponses: 4
    Dernier message: 19/06/2006, 10h45
  4. Récupérer les valeur d'un énuméré dans une string
    Par Oliv_75 dans le forum SL & STL
    Réponses: 5
    Dernier message: 28/09/2005, 00h55
  5. Réponses: 10
    Dernier message: 19/09/2005, 22h24

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