Problème d'affichage en php

Résolu
cameleon30 Messages postés 5 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 9 avril 2008 - 9 avril 2008 à 15:28
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 9 avril 2008 à 19:19
Bonjour à tous,

Dans ma base mysql, je posséde 2 tables nommées respectivement marque et produit. La table marque est composé comme ceci :
id_marque int
designation varchar(50)
...
Cette table est composé des éléments suivant :
1 - Thomson
2 - LG

Et la table produit
id_produit int
id_marque int (provient de la table marque)
design varchar(50)
...
Cette table est composé des éléments suivant
1 - 1(Thomson) - Réfrigérateur
2 - 1(Thomson) - Lave Linge
3 - 2(LG) - Téléphone
4 - 2(LG) - Télévision
5 - 2(LG) - HI-FI

Je voudrais afficher des éléments qui viennent des 2 tables c'est-à-dire la designation de la table Marque et pour cette designation, je voudrais afficher les designation de la table Produit qui correspondent à la designation de la Marque:
Bon en exemple (je voudrais que ca m'affiche cela) :
Marque : Thomson - Produit : Réfrigérateur - Lave Linge
Marque : LG Produit : Téléphone - Télévision - HI-FI

Pour le moment, ca m'affiche
Marque : Thomson - Produit : Réfrigérateur
Marque : Thomson - Produit : Lave Linge
Marque : LG - Produit : Téléphone
Marque : LG - Produit : Télévision
Marque : LG - Produit : HI-FI

En somme, je voudrai que la marque ne s'affiche qu'une fois et que pour chaque marque tous les produits s'affiche
Voila le code que j'utilise pour faire afficher tout cela :
<?php include ('fonction/configuration.php'); ?>
<?php $reponse mysql_query ("SELECT * FROM marque, produit WHERE marque.id_marque produit.id_marque"); 
       
while ($donnees = mysql_fetch_array($reponse)) 

?> 
marque <?php echo $donnees['designation'];?>

produit : <?php echo $donnees['design'];?>

<?php 

mysql_close(); 
?>
Le problème est que l'affichage de la marque est dans la boucle WHILE. J'ai essayé de mettre un GROUP BY ou un DISTINCT mais ca marche pas mieux ou encore moins bien.
Avez-vous une idée de comment je peux faire. J'espère que vous m'avez compris.

9 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 42
9 avril 2008 à 18:11
<?php include ('fonction/configuration.php');$reponse mysql_query ("SELECT * FROM marque, produit WHERE marque.id_marque produit.id_marque") or die(mysql_error())
$o=false;
while ($donnees = mysql_fetch_array($reponse)) 

if ($o!==$donnees['designation']) echo '
marque'.$donnees['designation'].'
produit :
';
$o=$donnees['designation'];
echo $donnees['design'].'-';
}
?>




/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
3
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 42
9 avril 2008 à 16:33
salut
t'as une requete genre :$reponse mysql_query ("SELECT * FROM marque, produit WHERE marque.id_marque produit.id_marque");
il te faut plutot une requete genre :
$reponse mysql_query ("SELECT * FROM marque LEFT JOIN produit WHERE marque.id_marque produit.id_marque") or die(mysql_error());

si ca ne fonctionne pas, alors c'est certainement un RIGTH JOIN et pas un LEFT JOIN
/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
0
cameleon30 Messages postés 5 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 9 avril 2008
9 avril 2008 à 17:45
Re,

Ca ne fonctionne pas mieux. J'ai essayé un left join ou un right join mais c'est toujours pareil. Voila le code de la requête SQL :$reponse mysql_query ("SELECT * FROM marque LEFT JOIN produit ON marque.id_marque produit.id_produit");
Ca m'affiche comme avant ...
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 42
9 avril 2008 à 17:50
Oh... je suis bete, ouais desole, j'etais a cote la...

tu ne peux pas faire ca en mysql, faut que tu traites en php pour faire ca...

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cameleon30 Messages postés 5 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 9 avril 2008
9 avril 2008 à 18:05
"Oh... je suis bete, ouais desole, j'etais a cote la...

tu ne peux pas faire ca en mysql, faut que tu traites en php pour faire ca..."


??????

Là, je ne suis vraiment pas avancé ????
0
cameleon30 Messages postés 5 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 9 avril 2008
9 avril 2008 à 18:39
Tu es un chef coucou747

Peut tu m'expliquer ta démarche.
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 42
9 avril 2008 à 18:51
hum... c'est la reponse qui t'aide qu'il faut valider (pour le moteur de recherche, c'est mieux)

ma demarche :

on place $o a false, $o c'est comme $old, ca contient l'ancienne valeur de la marque.

dans la boucle, si tu changes de valeur, ca se voit comme ca : if ($o!==$donnees['designation']) ensuite le reste vient tout seul... faut pas oublier de mettre $o a jours.

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
0
cameleon30 Messages postés 5 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 9 avril 2008
9 avril 2008 à 19:09
OK, j'ai fait le changement. J'avais mal compris le bouton "Réponse Acceptée".
Merci de m'avoir répondu si rapidement
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 42
9 avril 2008 à 19:19
:) mais de rien :)

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
0