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 :

[SQL] Plusieurs occurrences dans la liste déroulante


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de akara
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 299
    Par défaut [SQL] Plusieurs occurrences dans la liste déroulante
    Bonjour,
    ici j'affiche le titre d'un t-shirt avec une liste déroulante comprenant la taille,le 'sexe' et la quantité, le problème c'est que pour chaque t-shirt dans la liste déroulante les données sont affichées 6 foix! et je ne vois pas pourquoi
    a cause de la boucle ?
    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
     
       while($row = mysql_fetch_array($result)) {
    		$id_shirt = $row['id_shirt'];
            echo '<tr>';
     
            echo '<td bgcolor="#CCCCCC">'.$row['titre_shirt'].'</td>';
    		echo '<td bgcolor="#CCCCCC">';
     
    		$sql = 'SELECT S.date_ajout_shirt, S.prix_u_shirt prix ,  S.titre_shirt titre , T.libelle_taille taille , T.sexe_taille sexe , K.quantite_stock quantite ';
    		$sql.= 'FROM  tb_taille T , tb_stock K , tb_shirt S ';
    		$sql.= 'WHERE K.id_shirt = '.$id_shirt;
    		$sql.= ' AND T.id_taille = K.id_taille ';
    		$sql.= 'ORDER BY S.date_ajout_shirt DESC ';//limit '.$limite.','.$nombre;
    		$res = mysql_query($sql)  or die ('Erreur : '.mysql_error() );
    		echo "<select name=\"taille\">";
    		while($shirt=mysql_fetch_assoc($res)){
     
    			$titre = $shirt['titre']; 
    			$prix = $shirt['prix'] ;
    			$taille = $shirt['taille'] ;
    			$sexe = $shirt['sexe'];
    			$quantite = $shirt['quantite'];
     
    			echo "<option>$taille - $sexe - $quantite</option>";
     
    		}
    		echo "</select>";
    		echo '</td>';
     
            echo '</tr>'."\n";
     
        }

  2. #2
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Tu fais une requete sur trois tables mais tu n'en "joins" que 2 dans la requete c'est pour ca que tu as des éléments qui apparaissent six fois.

    Il faut ajouter une ligne équivalente à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql.= ' AND T.id_taille = K.id_taille ';
    Pour lier la table T et la table S ou la table K et la table S

  3. #3
    Membre éclairé Avatar de akara
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 299
    Par défaut
    Citation Envoyé par koopajah
    Tu fais une requete sur trois tables mais tu n'en "joins" que 2 dans la requete c'est pour ca que tu as des éléments qui apparaissent six fois.

    Il faut ajouter une ligne équivalente à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql.= ' AND T.id_taille = K.id_taille ';
    Pour lier la table T et la table S ou la table K et la table S
    ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql.= 'WHERE K.id_shirt = '.$id_shirt;
    je lie K et S, îd_shirt provient de S, je ne peux pas lié T et S car les cléfs primaires de c'est 2 tables sont les clefs étrangère de K

  4. #4
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Citation Envoyé par akara
    ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql.= 'WHERE K.id_shirt = '.$id_shirt;
    je lie K et S, îd_shirt provient de S, je ne peux pas lié T et S car les cléfs primaires de c'est 2 tables sont les clefs étrangère de K
    Nan ca n'est pas une jointure ca

    fais tes tests de requete dans phpMyAdmin tu verras bien si le probleme vient de la requete ou pas. Mais d'après moi il faut joindre K et S explicitement.

  5. #5
    Membre éclairé Avatar de akara
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 299
    Par défaut
    Citation Envoyé par koopajah
    Nan ca n'est pas une jointure ca.
    Mais d'après moi il faut joindre K et S explicitement.
    j'ai rajouté cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql.= ' AND K.id_shirt = S.id_shirt ';
    tu as raison, il faut joindre K et S explicitement.
    mais je ne comprend pas , pourquoi cette ligne n'est pas une jointure ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql.= 'WHERE K.id_shirt = '.$id_shirt;

  6. #6
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Citation Envoyé par akara
    j'ai rajouté cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql.= ' AND K.id_shirt = S.id_shirt ';
    tu as raison, il faut joindre K et S explicitement.
    mais je ne comprend pas , pourquoi cette ligne n'est pas une jointure ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql.= 'WHERE K.id_shirt = '.$id_shirt;
    Ben je ne sais pas trop comment expliquer, mes cours de SQL datent un peu... Mais en gros ta ligne elle impose de selectionner une partie des résultats de la table K. Une fois que tu as ces résultats, tu vas les associer aux resultats que tu peux sortir de la table S et K. Tu vas en faire une "combinaison"

    exemple
    table K table S
    a c
    b d

    si tu fais ca va te retourner toutes les combinaisons possibles :
    a c
    a d
    b c
    b d

    maintenant si tu fais une condition sur K en disant K.type = 'a'
    ca te donne ca
    a c
    a d

    en gros tu prends tous les résultats dans K qui correspondent a tes critères, et vu que t'as pas de "jointure" explicite entre K et S ben ca te fait une combinaison des résultats...

    Fiou c'est brouillon tout ca

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

Discussions similaires

  1. [AC-2000] Affichage de plusieurs champ dans un liste déroulante
    Par Flow56 dans le forum IHM
    Réponses: 7
    Dernier message: 23/07/2018, 18h04
  2. Plusieurs champs dans une liste déroulante
    Par Vincinho dans le forum Langage SQL
    Réponses: 8
    Dernier message: 02/12/2009, 14h10
  3. Plusieures "values" dans une liste déroulante
    Par Yokosuma dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 07/04/2008, 11h58
  4. [Conception] Plusieurs champs dans une liste déroulante
    Par louroulou dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 20/07/2007, 04h55
  5. Saisie de plusieurs caractère dans une liste déroulante
    Par Oluha dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/03/2005, 14h32

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