Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1514 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  afficher toutes les enregistrements d'une table ext.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

afficher toutes les enregistrements d'une table ext.

n°1460439
mia84
Posté le 19-10-2006 à 13:03:41  profilanswer
 

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:)

mood
Publicité
Posté le 19-10-2006 à 13:03:41  profilanswer
 

n°1460447
skeye
Posté le 19-10-2006 à 13:15:24  profilanswer
 

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...?


Message édité par skeye le 19-10-2006 à 13:19:52

---------------
Can't buy what I want because it's free -
n°1460451
skeye
Posté le 19-10-2006 à 13:16:45  profilanswer
 

en fait j'ai mal compris, je crois.[:joce]
 
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


Message édité par skeye le 19-10-2006 à 13:17:14

---------------
Can't buy what I want because it's free -
n°1460455
mia84
Posté le 19-10-2006 à 13:31:13  profilanswer
 

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?

n°1460457
skeye
Posté le 19-10-2006 à 13:32:53  profilanswer
 

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...:o


Message édité par skeye le 19-10-2006 à 13:33:30

---------------
Can't buy what I want because it's free -
n°1460485
mia84
Posté le 19-10-2006 à 13:53:39  profilanswer
 

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...

n°1460487
skeye
Posté le 19-10-2006 à 13:54:38  profilanswer
 

c1 ou c2 tout simplement.
la 3eme table si tu peux encore la créer, c'est la meilleure solution, hein...


---------------
Can't buy what I want because it's free -
n°1460575
mia84
Posté le 19-10-2006 à 14:44:45  profilanswer
 

SUPER ca marche :))
Merci.
 
Je vais voir pour ma 3e table ;)

n°1460576
mia84
Posté le 19-10-2006 à 14:46:37  profilanswer
 

euh... une petite indication pour mettre le résultat de ces couleurs dans une liste déroulante?

n°1460579
skeye
Posté le 19-10-2006 à 14:48:43  profilanswer
 

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? :D


---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le 19-10-2006 à 14:48:43  profilanswer
 

n°1460595
mia84
Posté le 19-10-2006 à 14:57:28  profilanswer
 

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";  

n°1460601
skeye
Posté le 19-10-2006 à 14:59:21  profilanswer
 

flemme de chercher ce qui va pas, quel est le pb du résultat obtenu?:o


---------------
Can't buy what I want because it's free -
n°1460644
mia84
Posté le 19-10-2006 à 15:30:02  profilanswer
 

c'est vide! (sauf Couleur(s) )

n°1460646
skeye
Posté le 19-10-2006 à 15:30:51  profilanswer
 

et quand tu affiches le source de la page tu as quoi?


---------------
Can't buy what I want because it's free -
n°1460753
mia84
Posté le 19-10-2006 à 16:59:24  profilanswer
 

effectivement j'ai rien :
 
 
<br />noir<br />bleu<br /><select size=1 name="couleur">
<option value="-1">Couleur(s)<option>
</select>
 

n°1460756
skeye
Posté le 19-10-2006 à 17:02:11  profilanswer
 

on dirait bien qu'il rentre pas dans ton while...[:dawao]
 
t'es sûre que ta requête retourne quelquechose, là?


---------------
Can't buy what I want because it's free -
n°1460779
mia84
Posté le 19-10-2006 à 17:17:21  profilanswer
 

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 :/

n°1460783
skeye
Posté le 19-10-2006 à 17:19:55  profilanswer
 

en tout cas les indices que tu utilises me paraissent foireux...0 et 1 ça va être les id de tes couleurs, non? :o


---------------
Can't buy what I want because it's free -
n°1460825
mia84
Posté le 19-10-2006 à 18:02:37  profilanswer
 

Mouais...
 
vé reflechir à la question et je reviens...
QQ'1 a une super méthode pour faire des listes deroulantes à partir d'un bd?

n°1461075
skeye
Posté le 20-10-2006 à 09:02:03  profilanswer
 

Ta méthode serait probablement très bien si tu comprenais ce que tu fais, en fait.[:dawao]


---------------
Can't buy what I want because it's free -
n°1461652
MagicBuzz
Posté le 20-10-2006 à 19:58:14  profilanswer
 

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...

n°1461685
mia84
Posté le 20-10-2006 à 21:36:14  profilanswer
 

bin si je vé reflechir à ça!
Merci

n°1462718
MagicBuzz
Posté le 23-10-2006 à 00:57:26  profilanswer
 

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
from produit p inner join couleurproduit cp on cp.pro_id = p.id inner join couleur c on cp.col_id = c.id


 
enjoy :)

n°1462776
mia84
Posté le 23-10-2006 à 09:33:27  profilanswer
 

merci :D

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  afficher toutes les enregistrements d'une table ext.

 

Sujets relatifs
Requête SQL dans une table Hierarchique étrange (Oracle)Impossible d'insérer un nombre dans une table MySQL (Prob de noob dsl)
[] Afficher un msg que si le prog est executé pour la 1ére fois...Afficher un champ d'un etat sous condition
Afficher tous les sous-ensembles de 1 a NEliminer les doublons d'une table Access
Insertion d'un recordset entier dans une tablefonction unlink bloque l'affichage d'une table
afficher enregistrements d'une table dans le corps du mailAfficher les 10 derniers enregistrements d'une table MySQL
Plus de sujets relatifs à : afficher toutes les enregistrements d'une table ext.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR