insertion multiple (panier) dans bdd

Eléphanteau du PHP | 15 Messages

22 févr. 2011, 16:31

Bonjour,

Je viens d'ajouter un panier électronique à mon site pour effectuer des achats.
Je voudrais pouvoir enregistrer dans ma base de données les commandes faites par les clients.

Mon problème est le suivant :
Quand un client réalise plusieurs achats, je n'arrive à enregistrer que la dernière ligne de commande...
J'ai essayé avec une boucle foreach, mais je dois mal m'y prendre car cela ne fonctionne pas...

voici comment j'arrive à récupérer les données de mon panier sur la page récapitulative de commande :

<?php
if (creationPanier())
{
$nbArticles=count($_SESSION['panier']['libelleProduit']);
if ($nbArticles <= 0)
echo "<tr><td>Votre panier est vide </ td></tr>";
else
{
for ($i=0 ;$i < $nbArticles ; $i++)
{
echo "<td>Titre du livre : <strong>".htmlspecialchars($_SESSION['panier']['libelleProduit'][$i])."</strong></td>";
echo "<td><input type=\"text\" size=\"4\" style=\"width:25px\" name=\"q[]\" value=\"".htmlspecialchars($_SESSION['panier']['qteProduit'][$i])."\"/></td>";
echo "<td>".htmlspecialchars($_SESSION['panier']['prixProduit'][$i])."</td>";
}
}
}
?>

Et voici comment je me connecte à ma bdd :

<?php

$_SESSION['panier'] = $panier;

mysql_connect("", "", "");
mysql_select_db("");

mysql_query("SET NAMES UTF8");

if (creationPanier())
{
foreach ($panier as $nbArticles ; $i++)
{
$sql = "INSERT INTO test (login, civilite_livraison, prenom_livraison, nom_livraison, produit, quantite) VALUES ('$login','$civilite_livraison', '$prenom_livraison','$nom_livraison', '".$_SESSION['panier']['libelleProduit'][$i]."','".$_SESSION['panier']['qteProduit'][$i]."')";
}
}

$red = mysql_query($sql);
mysql_close();
?>

Merci d'avance pour votre aide,

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 févr. 2011, 16:45

salut,

il ne manquerait pas un session_start() dans tous ça ? (a moins que tu n'ai pas mis tous le code ?).

qui plus est il faut que tu revois la définition du foreach car la tienne est erronée foreach ($panier as $nbArticles ; $i++) tu devrais d'ailleurs avoir un message d'erreur ;)


au niveau de la structure du panier seule la ref et la quantité sont utile le reste est dans la db et facilement récupérable (fonction in de mysql)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 15 Messages

22 févr. 2011, 18:46

Salut,

Oui oui, le session_start () est bien dans mon code mais je ne l'ai pas mis dans l'extrait...
Tu me m'aider un peu plus pour la définition du foreach s'il te plaît ? :lol:

Je nage dans le flou avec cette boucle...
Merci d'avance,

ViPHP
xTG
ViPHP | 7331 Messages

22 févr. 2011, 18:53

$tableau = array(
  'friandises' => array("chocolat", "bonbon"),
  'poissons' => array("merlan", "cabillaud"),
  'viande' => array("vache","porc")
);

foreach($tableau as $type => $valeurs)
{
  echo "Aliments de type : $type<br />";
  echo "<ul>";

  foreach($valeurs as $aliment)
  {
    echo "<li>$aliment</li>";
  }

  echo "</ul>";
}
Essayes ceci, tu devrais comprendre. :)

Eléphanteau du PHP | 15 Messages

22 févr. 2011, 19:30

ça y est !!!
ça fonctionne...

La solution :
il faut mettre
<?php $red = mysql_query($sql); ?> dans la boucle foreach

Merci pour votre aide !

ViPHP
xTG
ViPHP | 7331 Messages

22 févr. 2011, 20:40

Euh...
A voir ton dernier post j'ai un peu peur là. :/
Tu pourrais nous poster ton code ?

sayli
Invité n'ayant pas de compte PHPfrance

14 mai 2013, 12:20

bonjour en faite , j'ai le meme probleme et je voudrais inserer les contenus de panier dans une table mais avec les foreach et la fonction explode .

j'y arrive pas , si quelqu'un pourrais m'aider ca serai sympa

Mammouth du PHP | 619 Messages

14 mai 2013, 12:25

Bonjour,

ce sujet semble être résolu je t'invite a créer un nouveau post a explique ce que tu veux avec un bout de ton code