8791 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Voila je suis actuellement en court de création d'un site de vente en ligne de jeux vidéo d'occasion (projet que je fait pour l'école) mais je me heurte à un petit souci.

Voila quand la personne ajoute un produit au panier qui provient du même vendeur je souhaiterais regrouper les produit entre eux je m'explique :

Un visiteur vient sur le site acheté 2 jeux à MR Durant et 1 autre jeux à MR Louis. Je voudrais que quand la personne va sur la page panier qu'il y est un truc du genre :

Jeux acheter à MR Durant :
1 : Guild War
2 : Pes 2010

Jeux acheter à MR Louis :
1 :Fifa 2010

Mais j'arrive pas à trouver j'ai tester plusieurs truc mais la .... c'est le drame ^^

Merci d'avance !
Modifié par Viva25 (19 Jan 2010 - 07:38)
Hello,

je suppose que tu gères le panier à l'aide des sessions php et que tu as quelques chose comme un code article, une quantité et éventuellement un prix.

Pour faire ce que tu veux c'est juste une question de requête SQL : comme ta table articles est correctement normalisée ( Smiley langue ) tu as bien sûr pour chacun d'eux un identifiant vendeur qui est une clef étrangère de la table vendeurs. Soit tu fais une première requête pour récupérer tous ces identifiants avec DISTINCT puis pour chaque vendeur tu listes les articles achetés, soit tu ne fais qu'une requête en gérant la rupture ( = changement de vendeur) directement dans le code PHP.

Un petit exemple avec la seconde solution :

articles :
* id_article
* id_vendeur
* libelle_article
* etc...

vendeurs :
* id_vendeur
* nom_vendeur
* prenom_vendeur
* etc...

$liste_articles = '1, 2, 3, 4'; // généré grâce à la fonction implode
$sql = 'SELECT v.id_vendeur, nom_vendeur, prenom_vendeur, id_article, libelle_article FROM vendeurs v JOIN articles a ON v.id_vendeur = a.id_vendeur WHERE id_article IN ('.$liste_articles.') ORDER BY nom_vendeur, prenom_vendeur, libelle_article';
$result = mysql_query($sql);
$id_vendeur_en_cours = 0;
$prefix_OL = '';
while($row = mysql_fetch_assoc($result)) {
	if($id_vendeur_en_cours != $row['id_vendeur']) { // Rupture sur le vendeur
		$id_vendeur_en_cours = $row['id_vendeur'];
		echo $prefix_OL."\n".'<h1>Jeux achetés à '.$row['nom_vendeur'].' '.$row['prenom_vendeur']." :</h1>\n<ol>\n";
		$prefix_OL = '</ol>';
	}
	echo '<li>'.$row['libelle_article']."</li>\n";
}
echo $prefix_OL;


Edit: pour les tutos SQL : http://sqlpro.developpez.com/
Modifié par Heyoan (18 Jan 2010 - 15:24)
Merci à toi pour ton aide ! je vais essayer ça ce soir quand je rentre mais je pense avoir capter le truc.

Encore une fois merci je vais regarder ce soir !
Bonsoir,

Alors je vient au nouvelle. Donc j'ai adapter ton code au mien est parfait encore merci de ton aide et de ta rapidité ^^

Cordialement
Bonjour,

j'ai supprimé le [ Résolu ] dans mon titre car j'ai un souci je ne c'est pas pourquoi selon la façon que j'ajoute les articles dans mon panier (1 Article de MR DUPONT 1 article de MR DURANT et de nouveau 1 article de MR DUPONT ) les articles tu même vendeur ne ce regroupe pas pourquoi ?

Edit : Oups désolé c'est moi qui à fait une bourde .... problème résolu !
Modifié par Viva25 (19 Jan 2010 - 07:56)