insertion panier dans le BDD

sayli
Invité n'ayant pas de compte PHPfrance

15 mai 2013, 22:56

ce bout de code c'est l'affichage de mon panier
<?php 
include("session.php");
require"classes/productManager.php";
$productManager=new productManager();
require"classes/fonction-panier.php";

$erreur = false;

$action = (isset($_POST['action'])? $_POST['action']:  (isset($_GET['action'])? $_GET['action']:null )) ;
if($action !== null)
{
   if(!in_array($action,array('ajout', 'suppression', 'refresh')))
   $erreur=true;

   //récuperation des variables en POST ou GET
   $l = (isset($_POST['l'])? $_POST['l']:  (isset($_GET['l'])? $_GET['l']:null )) ;
   $p = (isset($_POST['p'])? $_POST['p']:  (isset($_GET['p'])? $_GET['p']:null )) ;
   $q = (isset($_POST['q'])? $_POST['q']:  (isset($_GET['q'])? $_GET['q']:null )) ;

   //Suppression des espaces verticaux
   $l = preg_replace('#\v#', '',$l);
   //On verifie que $p soit un float
   $p = floatval($p);

   //On traite $q qui peut etre un entier simple ou un tableau d'entier
    
   if (is_array($q)){
      $QteArticle = array();
      $i=0;
      foreach ($q as $contenu){
         $QteArticle[$i++] = intval($contenu);
      }
   }
   else
   $q = intval($q);
    
}

if (!$erreur){
   switch($action){
      Case "ajout":
         ajouterArticle($l,$q,$p);
         break;

      Case "suppression":
         supprimerArticle($l);
         break;

      Case "refresh" :
         for ($i = 0 ; $i < count($QteArticle) ; $i++)
         {
            modifierQTeArticle($_SESSION['panier']['libelleProduit'][$i],round($QteArticle[$i]));
         }
         break;

      Default:
         break;
   }
}

	<form method="post" action="panier.php">
	  <div align="right" class="greybutton"><a href="client.php">continuer votre achat</a></div><br /><br /><br />
<table id="affpanier">
	<tr>
		<td colspan="4">Votre panier</td>
	</tr>
	<tr>
		<td>Libellé</td>
		<td>Quantité</td>
		<td>Prix Unitaire</td>
		<td>Action</td>
	</tr>


	<?php
	if (creationPanier())
	{
	   $nbArticles=count($_SESSION['panier']['libelleProduit']);
	   if ($nbArticles <= 0)
	   echo "<div><tr><td>Votre panier est vide </ td></tr></div>";
	   else
	   {
	      for ($i=0 ;$i < $nbArticles ; $i++)
	      {
	         echo "<tr>";
	         echo "<td><img src=\"images\yep.png\" width=\"35\" height=\"26\">".htmlspecialchars($_SESSION['panier']['libelleProduit'][$i])."</ td>";
	         echo "<td><input type=\"text\" size=\"4\" name=\"q[]\" value=\"".htmlspecialchars($_SESSION['panier']['qteProduit'][$i])."\"/></td>";
	         echo "<td>".htmlspecialchars($_SESSION['panier']['prixProduit'][$i])."</td>";
	         echo "<td><a href=\"".htmlspecialchars("panier.php?action=suppression&l=".rawurlencode($_SESSION['panier']['libelleProduit'][$i]))."\"><img src=\"images\corbeille.png\" width=\"35\" height=\"26\"></a></td>";
	         echo "</tr>";
	      }

	      echo "<tr><td colspan=\"2\"> </td>";
	      echo "<td colspan=\"2\">";
	      echo "<div id=\"totaltext\"> Total : ".MontantGlobal()."</div>";
	      echo "</td></tr>";

	      echo "<tr><td colspan=\"4\">";
	      echo "<input class=\"orangebutton\" type=\"submit\" value=\"Recalculer\"/>";
	      echo "<input type=\"hidden\" name=\"action\" value=\"refresh\"/>";

	      echo "</td></tr>";
	   }
	}
	?>
	
</table>
mai je demande mnt comment je pourrais inserer ce panier dans la table ligne commande , j'ai vu le mm sujet dans le forum mais je n'ai pas reussi a bien comprendre comment ils ont reglé probleme mais voici mon code pour faire l'insertion
<?php
include("session.php");
include("connexion.php");
require"classes/fonction-panier.php";
   
      	if (creationPanier()){
		$panier=$_SESSION['panier'];
        $lignes = explode('#', $_SESSION['panier']);
			foreach($lignes as $line){
			   $mot = explode(';',$line);
			   $sql = 'INSERT INTO  Contient(`idArticle`, `idCmd`, `QteArt`) VALUES (\''.$mot[0].'\', \''.$mot[1].'\', \''.$mot[2].'\');';
			     $result = mysql_query($sql) or die("erreur!!");
			   mysql_close();
}
 echo MontantGlobal();
}
?>
ca me donné ce genre d'erreur et je sais pas regler ce probleme alors si quelqu'un pourrais m'aider ca serai sympa
Warning: explode() expects parameter 2 to be string, array given in C:\Program Files (x86)\EasyPHP-12.0\www\evatis - Copie\commander.php on line 8

Warning: Invalid argument supplied for foreach() in C:\Program Files (x86)\EasyPHP-12.0\www\evatis - Copie\commander.php on line 9

Mammouth du PHP | 619 Messages

15 mai 2013, 23:05

Bonjour,

j'ai juste repris votre code affichage donc a modifie
$nbArticles=count($_SESSION['panier']['libelleProduit']);
if ($nbArticles <= 0){
echo "<div><tr><td>Votre panier est vide </ td></tr></div>";
}
else{
	for ($i=0 ;$i < $nbArticles ; $i++){
		$sql = 'INSERT INTO Contient(`idArticle`, `idCmd`, `QteArt`) VALUES (\''.$_SESSION['panier']['x'][$i].'\', \''.$_SESSION['panier']['x'][$i].'\', \''.$_SESSION['panier']['qteProduit'][$i].'\');';
		$result = mysql_query($sql) or die("erreur!!");

	}
}

sayli
Invité n'ayant pas de compte PHPfrance

16 mai 2013, 08:22

merci pour votre reponse mais ca me donne une erreur de ce type .
tu px me dire ou tu as defini la variable $x; merci pour votre reponse
Notice: Undefined index: x in C:\Program Files (x86)\EasyPHP-12.0\www\evatis - Copie\commander.php on line 12

Notice: Undefined index: x in C:\Program Files (x86)\EasyPHP-12.0\www\evatis - Copie\commander.php on line 12
erreur!!

Mammouth du PHP | 619 Messages

16 mai 2013, 08:27

Bonjour,

x c'est juste pour mettre tes propres valeus de session :) comme $_SESSION['panier']['qteProduit']

sayli
Invité n'ayant pas de compte PHPfrance

16 mai 2013, 09:18

Bonjour,

x c'est juste pour mettre tes propres valeus de session :) comme $_SESSION['panier']['qteProduit']
j'essaye de regler toujours mais j'y arrive pas , peux tu m'eclaircir un peu encore

Mammouth du PHP | 619 Messages

16 mai 2013, 10:12

Bonjour,

pour connaitre toutes les variable de ton panier fait un
print_r($_SESSION['panier']);
cela va te retourne un tableau avec la key et ca valeur

tu coup tu remplaces le x par la key

sayli
Invité n'ayant pas de compte PHPfrance

16 mai 2013, 10:31

Bonjour,

pour connaitre toutes les variable de ton panier fait un
print_r($_SESSION['panier']);
cela va te retourne un tableau avec la key et ca valeur

tu coup tu remplaces le x par la key
Bonjour,

bonjour , lorsque je fais un print_r($_SESSION['panier']); ca me donne cette resultat
Array ( [libelleProduit] => Array ( [0] => Carte SIM rouge [1] => Carte SIM Bleu ) [qteProduit] => Array ( [0] => 1 [1] => 10 ) [prixProduit] => Array ( [0] => 3000 [1] => 3000 ) [verrou] => )

mais lorsque tu parle key et sa valeur , tu parle de foreach si je comprend bien merci encore pr votre reponse

Mammouth du PHP | 619 Messages

16 mai 2013, 11:08

Bonjour,

la key ici par exemple [qteProduit] elle contient un tableau avec tes valeurs

ici tu veux ajouter les valeurs de

idArticle et idCmd et QteArt

normalement tu stock c'est information quelque part non ? par exemple pour QteArt (quantité je pense ) la key c'est qteProduit

pour idCmd je pense que l'id tu va la recupere au moment de creer cette commande (tu insert une ligne dans ta table commande id,id_client,etc et juste en dessous tu récupéré l'id insérer )

$sql = 'INSERT INTO Contient(`idArticle`, `idCmd`, `QteArt`) VALUES (\''.$mot[0].'\', \''.$mot[1].'\', \''.$mot[2].'\');';

sayli
Invité n'ayant pas de compte PHPfrance

16 mai 2013, 12:22

Bonjour,

la key ici par exemple [qteProduit] elle contient un tableau avec tes valeurs

ici tu veux ajouter les valeurs de

idArticle et idCmd et QteArt

normalement tu stock c'est information quelque part non ? par exemple pour QteArt (quantité je pense ) la key c'est qteProduit

pour idCmd je pense que l'id tu va la recupere au moment de creer cette commande (tu insert une ligne dans ta table commande id,id_client,etc et juste en dessous tu récupéré l'id insérer )

$sql = 'INSERT INTO Contient(`idArticle`, `idCmd`, `QteArt`) VALUES (\''.$mot[0].'\', \''.$mot[1].'\', \''.$mot[2].'\');';

merci encore pour votre reponse

mais je voudrais avant de l'inserer dans la base , de delimiter les valeurs et d'avoir une resultat de cette maniere
libelleproduit , qtéproduit prixHT
produit1 20 3000
produit 2 30 4000

au lieu d'avoir

libelleProduit:
produit 1
produit2

qteProduit:
1
10

prixProduit:
3000
3000

$panier=$_SESSION['panier'];
$mot=explode(',',$_SESSION['panier']);
foreach( $mot as $key => $value )
{
echo $key . ': <br />';

foreach( $value as $valeur )
echo ' ' . $valeur . '<br />';

echo '<br />';
}

}

Mammouth du PHP | 619 Messages

16 mai 2013, 14:42

Bonjour,

ben au lieu de faire un insert vous creer un tablea html ou css :)