Enregistrer un caddie dans mysql

Utilisateur anonyme -  
coeus Messages postés 3021 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'ai crée pour mon site un "caddie", mais je n'arrive pas à enregistrer le contenu de ce caddie dans une table que j'appelle "commande",

mon panier est dispo en variable de sessions avec la reference du produit le libellé, la quantité, le prix .
la ou je bloque c'est sur la boucle qui va enregistrer dans mysql !!
quelqu'un peut il m'aider ?

ceci est mon panier au moment de l'enregistrer

if (creationPanier())
	{
	   $nbArticles=count($_SESSION['panier']['libelleProduit']);
	   if ($nbArticles <= 0)
	   echo "<tr><td colspan=\"5\">Votre panier est vide </ td></tr>";
	   else
	   {
	      for ($i=0 ;$i < $nbArticles ; $i++)
	      {
	         echo "<tr>";
			 echo "<td>".htmlspecialchars($_SESSION['panier']['ref'][$i])."</ td>";
	         echo "<td>".htmlspecialchars($_SESSION['panier']['libelleProduit'][$i])."</ td>";
	         echo "<td><input type=\"text\" size=\"3\" name=\"q[]\" value=\"".htmlspecialchars($_SESSION['panier']['qteProduit'][$i])."\" readonly/></td>";
	         echo "<td align=\"right\">".htmlspecialchars($_SESSION['panier']['prixProduit'][$i])." €</td>";
	         echo "<td align=\"center\"><a href=\"".htmlspecialchars("?action=suppression&l=".rawurlencode($_SESSION['panier']['libelleProduit'][$i]))."&amp;recordID=".$_GET['recordID']."\"><img src=\"images/supp.png\" width=\"70\" /></a></td>";
	         echo "</tr>";
	      }

	      echo "<tr><td colspan=\"2\"><a href=\"cgv.html\" target=\"blank\">conditions générales de ventes</a> </td>";
	      echo "<td colspan=\"2\" align=\"right\">";
	      echo "Total : ".MontantGlobal();
	      echo " €</td></tr>";
		  echo "<tr><td colspan=\"2\" align=\"right\"></td>";
		  echo"<td colspan=\"2\" align=\"right\">livraison incluse</td></tr>";
	      echo "<tr><td colspan=\"4\" align=\"right\">";
		  echo "<input type=\"submit\" name=\"enr\" value=\"paiement de la commande\"/>";
	      

	      echo "</td></tr>";
	   }
	}




merci d'avance


A voir également:

4 réponses

coeus Messages postés 3021 Date d'inscription   Statut Membre Dernière intervention   119
 
Je ne sais pas à quel point tu te débrouilles en MySQL (et en communication entre PHP et ta BDD), je vais donc simplement te donner un lien :
www.w3schools.com/php/php_ref_mysql.asp
Ou plus précisément :
www.w3schools.com/php/func_mysql_query.asp

Ce sont les fonctions PHP qui te permettront d'envoyer tes requêtes à ta BDD.

Peux-tu nous dire si tu connais bien le SQL ? Si tu connaissais déjà les fonctions PHP que je t'ai données ? Si tu sais comment dire à PHP de se connecter à telle ou telle BDD ? Juste avoir une idée de ton niveau, ça va nous aider à te donner des conseils pertinents ;)

Pour le moment j'assume que tu ne connaissais pas, vu que je ne vois aucun mysql_query dans ton code PHP, mais je peux être totalement dans le champ !
0
Utilisateur anonyme
 
non en fait je n'ai mis que le code du panier tel que je l'affiche sur ma page comme j'ai un peu galéré avec mes connaissance , je n'ai pas voulu mettre mes code sql qui de toute façon ne fonctionnent pas , je connais un peu mysql mais je ne connaissais pas les fonctions que tu m'as communiquée, je vais regardé de ce coté pour voir comment les utilisée.
merci
0
coeus Messages postés 3021 Date d'inscription   Statut Membre Dernière intervention   119
 
Avant de penser à passer des requêtes, il faut évidemment te connecter à la base de données.
www.w3schools.com/php/func_mysql_connect.asp
Avec ça tu auras ta variable à passer dans toutes les fonctions où tu interagis avec la BDD.

Après il ne restera plus qu'à composer le SQL, le reste du PHP va être assez répétitif :

$bd = mysql_connect("localhost","mysql_user","mysql_pwd");

$requete = "SELECT * FROM Person WHERE blah blah blah";
$resultat = mysql_query($requete,$bd);

while ($tab = mysql_fetch_array($resultat)) {
	// Faire quelque chose avec $tab qui contient l'ensemble des résultats de ta recherche.
}

Remarque : la boucle while ne sert que lorsque tu fais une recherche dans la base de données (SELECT), quelque chose qui te retourne un résultat. C'est ce while qui te permettra d'afficher les résultats en tableau, par exemple. Si tu fais par exemple une requête INSERT, ton code peut s'arrêter au mysql_query.
0
Utilisateur anonyme
 
oui tout ça je connais mais c'est au niveau de l'enregistrement de plusieurs article de mon panier $_SESSION['panier'] que je galère. ma premiere idée était de faire un boucle foreach et de faire le INSERT dans cette boucle , mais ça ne fonctionne pas.
si quelqu'un peut me donner le nom de la fonction qui permet cela , ce serait cool !!!
0
coeus Messages postés 3021 Date d'inscription   Statut Membre Dernière intervention   119
 
Ah d'accord je comprends mieux ton problème...

C'est curieux qu'un foreach ne marche pas, c'est probablement la solution que j'aurais tentée en premier. Peux-tu me dire si un message d'erreur ou autre chose t'apparaît quand tu essaies de le faire ?

Ça risque de demander beaucoup de manipulation mais je suis sûr que ça se fait. À moins que quelque chose dans ta construction de formulaires soit tout simplement impropre à une telle opération ?

Peut-être, pour m'aider à visualiser, que tu pourrais me transcrire un print_r de ta variable $_SESSION['panier'], que je puisse voir comment tu organises ton information ?
0
Utilisateur anonyme
 
bonjour,
désolé j'étais très occupé sur un autre projet , je n'ai pas eu le temps de revenir sur le forum avant, alors j'ai fait le print_r de mon panier et voila ce que ça donne avec un produit dans le panier :

Array ( [libelleProduit] => Array ( [0] => bureautique prenium ) [qteProduit] => Array ( [0] => 1 ) [prixProduit] => Array ( [0] => 450 ) [ref] => Array ( [0] => 5 ) [verrou] => ) 


alors je sais qu'il faut que je fasse un foreach, mais je ne sais pas du tout comment on fait , un peu de mal a comprendre comment ça marche

peut tu encore m'aider ?
0
coeus Messages postés 3021 Date d'inscription   Statut Membre Dernière intervention   119
 
Ok je comprends comment ton code marche.

En fait si tu pouvais inverser ta manière de faire, ce serait beaucoup plus facile. Par exemple, au lieu d'avoir :
$panier = [
	$produits = [
		$produit1,
		$produit2,
		$produit3
	],
	$quantites = [
		$quantite1,
		$quantite2,
		$quantite3
	],
	$prix = [
		$prix1,
		$prix2,
		$prix3
	]
];

Ce serait cool que tu aies :
$panier = [
	produit1 = [
		produitID,
		qte,
		prix
	],
	produit2 = [
		produitID,
		qte,
		prix
	],
	produit3 = [
		produitID,
		qte,
		prix
	],
];

Alors tu pourrais faire deux foreach encastrés et le problème serait réglé.
Mais pour le moment, je vais assumer que tu as de bonnes raisons d'organiser l'info comme tu l'as fait et/ou que ce serait difficile à changer.

Dans ce cas, pas besoin de foreach. En supposant que $nbArticles est défini et correct :
$panier = $_SESSION['panier'];
if ($x=0; $x<$nbArticles; $x++) {
	$requete = 'INSERT INTO ma_table(produit, qte, prix, ref, verrou) VALUES (' . $panier[0][$x] . ',' . $panier['qteProduit'][$x] . ',' . $panier['prixProduit'][$x] . ',' . $panier['ref'][$x] . ',' . $panier['verrou'][$x] . ');'
}

Évidemment ce code peut être à retravailler, et il peut comporter quelques erreurs de syntaxe, je n'ai pas pu le tester. Mais ça te donne l'idée.

Dis-moi si ça te convient et si ça fonctionne ! :)
0
Utilisateur anonyme
 
merci, j'ai essayé ce que tu m'as filer mais ça ne fonctionne pas, je vais changer la méthode pour enregistrer les produit dans le $session['panier'] et je pense que ça fonctionnera avec le foreach ,
merci de ton aide. reste dans le coin je sens que ça ne vas pas tourné comme je le veux

a+
0
coeus Messages postés 3021 Date d'inscription   Statut Membre Dernière intervention   119
 
Héhéhé pas de problème, reviens-nous avec les nouveaux résultats, moi je garde trace de tous les nouveaux messages de ce sujet !
On va y arriver ! ;-)
0