Page 1 sur 1

Problème d'enregistrement du contenu d'un panier PHP/MySQL

Posté : 21 déc. 2006, 18:35
par Cos
Bonjour,

Je réalise actuellement un site de vente en ligne fictif, qui comprend un back office permettant de gèrer les commandes passées par les clients.

Mon problème se situe au niveau de l'enregistrement du contenu d'un panier dans la base de données.
J'ai une table "commande" qui contient un champ id_produit et un champ id_commande, et je ne vois pas comment faire pour enregistrer plusieurs id_produit (si le panier contient plusieurs produits) sous un même id_commande.

A l'heure actuelle, lorsqu'il y a plusieurs produits, seul l'id_produit du dernier produit (par exemple, si il y a 4 produits, seul l'id de produit4 est pris en compte) est enregistré dans la table commande.

Merci d'avance pour votre aide.

[/code]

Posté : 21 déc. 2006, 20:17
par Cyrano
-1- Avant enregistrement, comment est stocké ton panier
-2- Fais donc voir la requête SQL utilisée et comment tu la construis.

Posté : 21 déc. 2006, 20:18
par ouckileou
- Une commande peut contenir plusieurs produits
- Un produit peut-être contenu dans une ou plusieurs commandes

=> contraintes n,n

Donc 2 tables produits et commandes, et une relation entre les deux

Tout ça, c'est de la modélisation, cherche des cours sur "Merise" ou "UML".

Posté : 21 déc. 2006, 20:24
par Ajoloca
Bonjour,

Je profite de cette remarque pour poser une question
contraintes n,n
Des fois je vois relation n, n et des fois m, n. La quelle des deux est correcte?

Posté : 21 déc. 2006, 20:29
par Cyrano
Bonjour,

Je profite de cette remarque pour poser une question
contraintes n,n
Des fois je vois relation n, n et des fois m, n. La quelle des deux est correcte?
C'est une question de convention :
-1- 1,1 , à une ligne correspond une ligne;
-2- 1,n , à une ligne correspondent plusieurs lignes;
-3- n,n (ou n,m) à une ou plusieurs lignes peuvent correspondre une ou plusieurs lignes, "m" étant utilisé pour distinguer la quantité d'une table de la quantité de l'autre table. c'est à mon avis une distinction sans intérêt, "n" signifiant "un nombre indéterminé" :-k

Posté : 21 déc. 2006, 20:40
par Ajoloca
Re,

Donc l'une ou l'autre, sauf convetion spécifique.
Merci Cyrano!

Posté : 21 déc. 2006, 20:46
par ouckileou
Pareil, j'ai jamais vu "m,n"...

Par contre, n'oublions pas la possibilité du 0 ! :)

Un article sympa pour commencer : http://www.sam-mag.com/P53,53,5,43,,,default.aspx

Posté : 21 déc. 2006, 20:48
par Cos
-1- Avant enregistrement, comment est stocké ton panier
-2- Fais donc voir la requête SQL utilisée et comment tu la construis.
1- Le panier est enregistré dans une variable de session
2- La requête est la requête de base il me semble
if(isset($_POST['action']) and $_POST['action']=='Valider votre commande'){

	include "../connexion.php";
	$query1="INSERT INTO `commande`
	VALUES ('', '$num_album', '$total', '$date_commande');";
	$result1=mysql_query($query1);
	// inscription ok
	mysql_close ($connexion);
	echo "Congratulations, your order have successfully been registered";
	session_destroy();
}
Le champ vide dans values est en auto_increment (numéro de commande)


Sinon ouckileou je ne comprends pas bien le rapport entre mon problème et les histoires de modelisation de tables ? :?

Posté : 21 déc. 2006, 20:50
par ouckileou
Sinon Cyrano je ne comprends pas bien le rapport entre mon problème et les histoires de modelisation de tables ? :?
J'ai une table "commande" qui contient un champ id_produit et un champ id_commande, et je ne vois pas comment faire pour enregistrer plusieurs id_produit (si le panier contient plusieurs produits) sous un même id_commande.
Moi je vois très bien le rapport au contraire :lol:

SI tu as une table commande, avec une colonne "id_commande" et une "id_produit", je ne vois pas trop comment tu vas pouvoir enregistrer tous tes produits dans la même colonne. Enfin si tu peux, mais c'est mal.