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 :

liste deroulante multicritere dynamqiue [MySQL]


Sujet :

PHP & Base de données

  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 aide liste deroulante triée par criteres
    bonjour,
    voila j'ai une liste deroulante et je voudrais afficher:

    nom_categorie1
    nom_sous_categ
    nom_sous_categ
    nom_sous_categ
    nom_sous_categ

    nom_categorie2
    nom_sous_categ
    nom_sous_categ
    nom_sous_categ
    nom_sous_categ


    mais mon code ne fonctionne pas j ai deux table une catégorie et une sous catégorie avec dans sous_categorie une reference a la table categorie (num_categorie).
    Mais mon code affiche ceci:

    nom_categorie1
    nom_sous_categ
    nom_categorie1
    nom_sous_categ


    nom_categorie2
    nom_sous_categ
    nom_categorie2
    nom_sous_categ
    nom_categorie2
    nom_sous_categ


    et non pas:
    nom_categorie1
    nom_sous_categ
    nom_sous_categ
    nom_sous_categ
    nom_sous_categ


    auriez vous une ide voici le 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
    27
    28
    29
    <?php
    $serveur = "localhost";
    $admin   = "root";
    $mdp     = "";
    $base    = "idealeparut";
     
    $connexion = mysql_connect($serveur, $admin, $mdp);
      mysql_select_db($base, $connexion);
     
    $req = 'SELECT c.nom_categorie,s.nom_sous_categorie
            FROM categorie_annonce as c, sous_categorie_annonce as s
    		where s.num_categorie=c.id_categorie
            ORDER BY c.nom_categorie,s.nom_sous_categorie';
    $res = mysql_query($req) or exit('Erreur: '.mysql_error());
     
     
    $num_categorie = null;
    echo('<select name="article">');
    while ($donnees = mysql_fetch_assoc($res)) {
      // Si on change de catégorie, on l'affiche dans le <select>.
      if ($donnees['nom_sous_categorie'] !== $num_categorie) {
        $num_categorie = $donnees['nom_categorie'];
        echo('<optgroup label="'.$num_categorie.'">');
      }
      //On ajoute "logiquement" notre <option>.
      echo('<option value="'.$donnees['num_categorie'].'">'.$donnees['nom_sous_categorie'].'</option>');
    }
    echo('</select>');
    ?>

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ($donnees['nom_sous_categorie'] !== $num_categorie) {
    !== t'es sur ?

  3. #3
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut
    != j avais pas fait gaffe.

    merci mais je me je n a y arrive tj pas. A tu vu d'autre erreur.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Par défaut
    En fait c'est ton algo:
    soit pour la sous catégorie tu concatenes dans un tableau double indice, (1er indice catégorie, deuxième: liste de la sous catégorie) chaque fois que tu trouves et tu l'affiches à la fin (boucle sur le tableau).

    Ou alors il y'a deux boucle imbriquées (plus consommatrice):
    pour chaque catégorie
    je récupère toutes sous catégorie (2eme requête)
    j'ajoute à la catégorie, concatène (.=)
    fin pour


  5. #5
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut
    merci de ton aide mais je suis pas tres douer en php et j ai pris ce code sur un site donc j ai dut mal a te suivre.Mais si je comprend il y a une partie du code a changer.

  6. #6
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut
    j ai essayer de faire la premier solution que tu m a dit donc j ai fait un tableau mais maintenant je suis un peu perdu.



    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    <form>
       <select>
    <?php
    $serveur = "localhost";
    $admin   = "root";
    $mdp     = "";
    $base    = "idealeparut";
     
    $connexion = mysql_connect($serveur, $admin, $mdp);
      mysql_select_db($base, $connexion);
    $SQL = " select region.nom_region, departement.nom_departement FROM departement,region
    WHERE region.id_region = departement.id_region";
    $res = mysql_query($SQL, $connexion) or die('Erreur SQL !'.$SQL.'<br>'.mysql_error());
     
    while($val=mysql_fetch_array($res)) 
    {
    echo "<option>".$val["nom_departement"]." ".$val["nom_region"]."</option>\n";
    }
    ?>
    </select>
    </form>
     
     
    <?php
    $serveur = "localhost";
    $admin   = "root";
    $mdp     = "";
    $base    = "idealeparut";
     
    $connexion = mysql_connect($serveur, $admin, $mdp);
      mysql_select_db($base, $connexion);
    // On récupère tous les articles, triés par catégorie, titre, référence.
    $req = 'SELECT c.nom_categorie,s.nom_sous_categorie
            FROM categorie_annonce as c, sous_categorie_annonce as s
    		where s.num_categorie=c.id_categorie
            ORDER BY c.nom_categorie,s.nom_sous_categorie';
    $res = mysql_query($req) or exit('Erreur: '.mysql_error());
     
       $categorie = array(); //on déclare le tableau de prénoms, remarquez que cela se fait avec la fonction array()
     
         /*
           On va initialiser les valeurs pour les indices 0, 1, 
         */
    foreach ( $categorie  )
    {
    // instructions
     
         $categorie[0] = 'categorie';
         $categorie[1] = 'sous_categorie';
    }
     
    $num_categorie = null;
    echo('<select name="categorie">');
    while ($donnees = mysql_fetch_assoc($res)) {
      // Si on change de catégorie, on l'affiche dans le <select>.
      if ($donnees['nom_sous_categorie'] != $num_categorie) {
        $num_categorie = $donnees['nom_categorie'];
        echo('<optgroup label="'.$num_categorie.'">');
      }
      //On ajoute "logiquement" notre <option>.
      echo('<option value="'.$donnees['num_categorie'].'">'.$donnees['nom_sous_categorie'].'</option>');
    }
    echo('</select>');
     
     
    ?>

  7. #7
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut
    je suis toujours avec mon problème quelqu'un pourrait il m'aider?

  8. #8
    Membre éclairé Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Par défaut
    Bonsoir,

    Ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($donnees['nom_sous_categorie'] !== $num_categorie) {

    Est-ce que çà ne devrait pas plutôt être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($donnees['nom_categorie'] !== $num_categorie) {
    ?

  9. #9
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut
    merci ca fonctionne nikel

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

Discussions similaires

  1. Parcourir une liste deroulante
    Par brandon dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 17/02/2005, 19h03
  2. plusieurs value dans une liste deroulante
    Par lepierre dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 16/11/2004, 14h53
  3. [JSP]Problème liste deroulante dynamique
    Par besco dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 09/09/2004, 17h58
  4. liste deroulante avec plusieurs champs
    Par JulienT dans le forum Struts 1
    Réponses: 4
    Dernier message: 20/04/2004, 17h17
  5. [langage] liste déroulante
    Par Jeh dans le forum Langage
    Réponses: 6
    Dernier message: 16/09/2003, 10h14

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