afficher toutes les enregistrements d'une table ext. - SQL/NoSQL - Programmation
Marsh Posté le 19-10-2006 à 13:15:24
where pd.id_couleur in (p.couleur1, p.couleur2) ?
ou encore
WHERE p.couleur1=pd.id_couleur or p.couleur2=pd.id_couleur?
OU alors j'ai mal compris la question...?
Marsh Posté le 19-10-2006 à 13:16:45
en fait j'ai mal compris, je crois.
Ce serait plutot ça :
SELECT p.id_produit, p.nom, p.couleur1, p.couleur2, pd.couleur, pd2.couleur FROM produits p, couleurs pd, couleurs pd2 WHERE p.couleur1=pd.id_couleur and
p.couleur2=pd2.id_couleur
Marsh Posté le 19-10-2006 à 13:31:13
Merci!!
Bon vu qu'en réalité je peux avoir jusqu'à 8 couleurs, ça fait un code à rallonge! Y'a pas une astuce?
D'autre part pour afficher les couleurs sont le site j'utilisais :
echo stripslashes($prod['couleur'])."<br />";
Mais ça ne m'affiche toujours qu'une seule couleur
COmment faire?
Marsh Posté le 19-10-2006 à 13:32:53
Il suffit de mettre un alias sur tes champs.
select p.id_produit, p.nom, p.couleur1, p.couleur2, pd.couleur c1, pd2.couleur c2...
Et si tu as autant de couleurs dans ta table produit, tu aurais dû créer une table intermédiaire qui stocke le lien couleur<->produit, ce serait beaucoup plus simple...
Marsh Posté le 19-10-2006 à 13:53:39
Merci
...
pour appeler ensuite? je fais
echo stripslashes($prod['couleur c2'])."<br />";
echo stripslashes($prod['couleur c1'])."<br />";
apparement pas
pour la 3e table j'y avais pensé... mais pt pb de code dans les where... alors je verrai plus tard...
Marsh Posté le 19-10-2006 à 13:54:38
c1 ou c2 tout simplement.
la 3eme table si tu peux encore la créer, c'est la meilleure solution, hein...
Marsh Posté le 19-10-2006 à 14:46:37
euh... une petite indication pour mettre le résultat de ces couleurs dans une liste déroulante?
Marsh Posté le 19-10-2006 à 14:48:43
mia84 a écrit : euh... une petite indication pour mettre le résultat de ces couleurs dans une liste déroulante? |
quel est le problème?
Marsh Posté le 19-10-2006 à 14:57:28
lol
en fait... j'y arrive pa!!
j'ai un truc de ce type :
echo '<select size=1 name="couleur">'."\n";
echo '<option value="-1">Couleur(s)<option>'."\n";
// Récupération des informations
$sql = "SELECT p.couleur1, p.couleur2, pd.couleur c1, pd.couleur c2 FROM peel_produits, couleurs WHERE p.couleur1=pd.id_couleur AND p.couleur2=pd2.id_couleur ";
$ReqLog = mysql_query($sql, $connexion);
while ($resultat = mysql_fetch_row($ReqLog)) {
echo '<option value="'.$resultat[0].'">'.$resultat[1];
echo '</option>'."\n";
}
echo '</select>'."\n";
Marsh Posté le 19-10-2006 à 14:59:21
flemme de chercher ce qui va pas, quel est le pb du résultat obtenu?
Marsh Posté le 19-10-2006 à 15:30:51
et quand tu affiches le source de la page tu as quoi?
Marsh Posté le 19-10-2006 à 16:59:24
effectivement j'ai rien :
<br />noir<br />bleu<br /><select size=1 name="couleur">
<option value="-1">Couleur(s)<option>
</select>
Marsh Posté le 19-10-2006 à 17:02:11
on dirait bien qu'il rentre pas dans ton while...
t'es sûre que ta requête retourne quelquechose, là?
Marsh Posté le 19-10-2006 à 17:17:21
a vrai dire je ne suis de rien moi!!
Mais qd je fais ma requete sans essayer de la mettre dans une liste ça marche
Marsh Posté le 19-10-2006 à 17:19:55
en tout cas les indices que tu utilises me paraissent foireux...0 et 1 ça va être les id de tes couleurs, non?
Marsh Posté le 19-10-2006 à 18:02:37
Mouais...
vé reflechir à la question et je reviens...
QQ'1 a une super méthode pour faire des listes deroulantes à partir d'un bd?
Marsh Posté le 20-10-2006 à 09:02:03
Ta méthode serait probablement très bien si tu comprenais ce que tu fais, en fait.
Marsh Posté le 20-10-2006 à 19:58:14
Y'a pas moyen de modifiter ta base, de façon à stocker les liens entre produit/couleur dans une table dédiée ? Ca résoudrait un peu tous tes problèmes d'un coup, et surtout ça te permettra de stocker autant de couleurs que tu désires...
Marsh Posté le 23-10-2006 à 00:57:26
produit (id, nom, etc.)
couleur (id, nom, etc.)
couleurproduit (pro_id, col_id)
Avec les FK : couleurproduit.pro_id = produit.id et couleurproduit_col_id = couleur.col_id
Ainsi, tu peux avoir autant de couleurs que tu veux pour un même produit, et tu récupères le tout de la façon la plus simple du monde :
select p.nom NomProduit, c.nom NomCouleur |
enjoy
Marsh Posté le 19-10-2006 à 13:03:41
Bonjour,
J'ai 2 tables : produits & couleurs
dans la 1ere j'ai : id_produit / nom / couleur1 (clé externe)/ couleur2 (clé externe)
dans la 2de j'ai : id_couleur / couleur
Quand j'appelle le nom des couleurs pour un produit je fais :
$sql = "SELECT p.id_produit, p.nom, p.couleur1, p.couleur2, pd.couleur FROM produits p, couleurs pd WHERE p.couleur1=pd.id_couleur ";
J'obtiens bien le nom de mes couleurs (et pas leur identifiant...)
Mais ça ne marche que pour une couleur. Ca ne m'affiche pas toutes les couleurs enregistrées.
Bon c'est normal puisque je mets p.couleur1=pd.id_couleur
mais comment faire pour que ça m'affiche tout?
Merci d'avance
(1ere question d'une gde série :pt1cable:)