Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/08/2007, 11h18   #1
Membre régulier
 
Avatar de akara
 
Inscription : juin 2007
Messages : 299
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 299
Points : 81
Points : 81
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 :
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";
 
    }
__________________
Le no life répond "Counter Strike : Source"
Le geek répond "Cascading Style Sheets"
Ce n'est pas un hasard si deux choses vitales ont le même sigle
akara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 11h20   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
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 :
$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
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 11h23   #3
Membre régulier
 
Avatar de akara
 
Inscription : juin 2007
Messages : 299
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 299
Points : 81
Points : 81
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 :
$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 :
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
__________________
Le no life répond "Counter Strike : Source"
Le geek répond "Cascading Style Sheets"
Ce n'est pas un hasard si deux choses vitales ont le même sigle
akara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 11h29   #4
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Citation:
Envoyé par akara
ici
Code :
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.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 11h33   #5
Membre régulier
 
Avatar de akara
 
Inscription : juin 2007
Messages : 299
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 299
Points : 81
Points : 81
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 :
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 :
1
2
 
$sql.= 'WHERE K.id_shirt = '.$id_shirt;
__________________
Le no life répond "Counter Strike : Source"
Le geek répond "Cascading Style Sheets"
Ce n'est pas un hasard si deux choses vitales ont le même sigle
akara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 11h39   #6
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Citation:
Envoyé par akara
j'ai rajouté cette ligne :
Code :
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 :
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"

Citation:
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
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2007, 11h42   #7
Membre régulier
 
Avatar de akara
 
Inscription : juin 2007
Messages : 299
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 299
Points : 81
Points : 81
Citation:
Envoyé par koopajah
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...
avec tes exemples , je comprend maintenant !!!
mille merci
__________________
Le no life répond "Counter Strike : Source"
Le geek répond "Cascading Style Sheets"
Ce n'est pas un hasard si deux choses vitales ont le même sigle
akara est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h04.


 
 
 
 
Partenaires

Hébergement Web