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 :

Répétitions des items dans une liste déroulante


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 97
    Par défaut Répétitions des items dans une liste déroulante
    Bonjour,

    Je souhaite filtrer ma liste de produits dans une catégorie donnée en affichant uniquement les produits de la marque que le client aura sélectionnée par l'intermédiaire d'une liste déroulante.

    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
     
    <form action="" method="get" name="filtre">
      <p>Afficher les <span class="fil_ariane"><?php echo $row_produits_categorie['nom_categorie_prdt']; ?></span>
      de 
        <select name="select" size="1">
          <?php
    do {  
    ?>
          <option value="<?php echo $row_produits_categorie['nom_marque_produit']?>"<?php if (!(strcmp($row_produits_categorie['nom_marque_produit'], $row_produits_categorie['nom_marque_produit']))) {echo "SELECTED";} ?>><?php echo $row_produits_categorie['nom_marque_produit']?></option>
          <?php
    } while ($row_produits_categorie = mysql_fetch_assoc($produits_categorie));
      $rows = mysql_num_rows($produits_categorie);
      if($rows > 0) {
          mysql_data_seek($produits_categorie, 0);
    	  $row_produits_categorie = mysql_fetch_assoc($produits_categorie);
      }
    ?>
        </select>
      </form>
    La liste déroulante répète chaque marque de la catégorie autant de fois qu'il y a de produits de cette marque.

    Je cherche à ne citer qu'une seule fois chaque marque. Comment faire ?

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    En ajoutant un distinct à la requête ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 97
    Par défaut
    Merci pour ta réponse.

    J'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    mysql_select_db($database_xxx, $xxx);
    $query_produits_categorie = sprintf("SELECT distinct categorie.id, categorie.nom_categorie, produit.id, produit.nom_marque_produit, produit.modele, produit.nom_categorie_prdt, produit.alt, produit.photo, produit.prix FROM produit INNER JOIN categorie ON categorie.nom_categorie = produit.nom_categorie_prdt WHERE categorie.id = %s ORDER BY date_insertion DESC", GetSQLValueString($idURL_produits_categorie, "text"));
    $query_limit_produits_categorie = sprintf("%s LIMIT %d, %d", $query_produits_categorie, $startRow_produits_categorie, $maxRows_produits_categorie);
    $produits_categorie = mysql_query($query_limit_produits_categorie, $xxx) or die(mysql_error());
    $row_produits_categorie = mysql_fetch_assoc($produits_categorie);
    Mais ça ne change rien. Peux-tu être plus précis stp ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 97
    Par défaut
    D'après mes recherches DISTINCT fonctionne pour une seule table.
    Je suis toujours bloquée.
    Est-ce que quelqu'un sait quoi utiliser étant donné que j'ai une jointure ?

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Tout dépend de si tu as besoin des infos sur les produits. Si non, tu peux utiliser un group by pour regrouper tes catégories.
    Si par contre tu en as besoin tu peux utiliser une variable temporaire pour tester si l'option a déjà été affichée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $tmp = '';
    do {  
    if ($tmp != $row_produits_categorie['nom_marque_produit'])
    {
    ?>
          <option value="<?php echo $row_produits_categorie['nom_marque_produit']?>"<?php if (!(strcmp($row_produits_categorie['nom_marque_produit'], $row_produits_categorie['nom_marque_produit']))) {echo "SELECTED";} ?>><?php echo $row_produits_categorie['nom_marque_produit']?></option>
          <?php
    $tmp = $row_produits_categorie['nom_marque_produit'];
    }
    } while ($row_produits_categorie = mysql_fetch_assoc($produits_categorie));
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 97
    Par défaut
    J'ai utilisé un group by. Ca fonctionne parfaitement !

    Merci beaucoup

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/05/2011, 09h59
  2. Réponses: 18
    Dernier message: 13/06/2007, 16h17
  3. Mettre des images dans une liste déroulante
    Par PrinceMaster77 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 01/12/2006, 15h35
  4. Affichage des mois dans une liste déroulante
    Par Le Rebel dans le forum Langage
    Réponses: 15
    Dernier message: 20/02/2006, 13h37

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