Plusieurs articles dans un panier en un seul clic

Signaler
Messages postés
27
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
26 septembre 2013
-
Messages postés
27
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
26 septembre 2013
-
Bonjour,

Je souhaite ajouter plusieurs articles dans un panier en un seul clic.
Seulement je n'arrive à ajouter qu'une seule ligne alors que 3 sont envoyées. Quelqu'un pourrait m'aiguiller ? Merci

Ma page qui transmet les variables :

<?php
for($i=0; $i<count($springs) ; ++$i){
echo '';
//echo '';
echo '';
echo '';
echo '';
echo '';
echo '';

echo '';

}


?>



Mon panier :

<?php

include_once("fonctions-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', 'vider', 'coderemise')))
$erreur=true;

//---------------------------------------------------------------------------
//récuperation des variables
//---------------------------------------------------------------------------


$matrice = array();
$li=0;
while(isset($_POST['action'.$li])){
//$matrice[$li] = ($_POST['l'.$li]);
$action[$li] = (isset($_POST['action'.$li])? $_POST['action'.$li]: (isset($_GET['action'.$li])? $_GET['action'.$li]:null )) ;
++$li;
}

//if( !empty($_REQUEST['next'])){
for($li = 0; $li < count($action); $li++){
//récuperation des variables en POST ou GET
$l = (isset($_POST['l'.$li])? $_POST['l'.$li]: (isset($_GET['l'.$li])? $_GET['l'.$li]:null )) ;
$p = (isset($_POST['p'.$li])? $_POST['p'.$li]: (isset($_GET['p'.$li])? $_GET['p'.$li]:null )) ;
$q = (isset($_POST['q'.$li])? $_POST['q'.$li]: (isset($_GET['q'.$li])? $_GET['q'.$li]:null )) ;
$l2 = (isset($_POST['l2'.$li])? $_POST['l2'.$li]: (isset($_GET['l2'.$li])? $_GET['l2'.$li]:null )) ;
$l3 = (isset($_POST['l3'.$li])? $_POST['l3'.$li]: (isset($_GET['l3'.$li])? $_GET['l3'.$li]:null )) ;
//}
}

//---------------------------------------------------------------------------
//fin récuperation des variables
//---------------------------------------------------------------------------



$remise = (isset($_POST['coderemise'])? $_POST['coderemise']: (isset($_GET['coderemise'])? $_GET['coderemise']:null )) ;
$_SESSION['remise'] = $remise;


//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,$l2,$l3);
break;

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

Case "vider":
supprimePanier();
break;

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

Case "coderemise":
$remise = (isset($_POST['coderemise'])? $_POST['coderemise']: (isset($_GET['coderemise'])? $_GET['coderemise']:null )) ;
$_SESSION['remise'] = $remise;
coderemise();
break;

Default:
break;
}
}
?>

2 réponses


Bonjour,

Bon, déjà je suis surpris que tu arrive à faire quoi que ce soit dans l'était actuel de ton code.

Tu commence par récupérer l'action qui est faite :
$action = (isset($_POST['action'])? $_POST['action']: (isset($_GET['action'])? $_GET['action']:null )) ;


après tu fais un while ou tu va écraser action par un tableau :
while(isset($_POST['action'.$li])){ 
//$matrice[$li] = ($_POST['l'.$li]); 
$action[$li] = (isset($_POST['action'.$li])? $_POST['action'.$li]: (isset($_GET['action'.$li])? $_GET['action'.$li]:null )) ; 
++$li; 
} 

Du coup, je ne vois pas comment ton switch sur la variable action peut fonctionner.

Deuxième chose.
Je ne vois pas l'utilité de ton while. Tu ne te sert pas de action[$li] (ou de la variable matrice que tu as commenté....). Si c'est juste pour le count je pense que tu t'embete pour pas grand chose....

Dernier poit, celui qui devrait t'interessé pour ton pb ^^
TU as ta boucle for qui va stocker certaine variable du post ou du get.
Une fois sortie du for tu fais l'ajout. Donc il va faire l'ajout avec seulement les dernières valeur du for.

Exemple
$tab = array(
0 => 'valeur0'
,1 => 'valeur1'
,2 => 'valeur2'
,3 => 'valeur3'
)
for($i = 0; $i <= 3; $i++){
$v = $tab[$i];
}

//ajout bdd
ajoute($v);

/*
Déroulement de la boucle :
Premier passage :
$v va valoir valeur0
Deuxieme passage : 
$v va valoir valeur1
Troisieme passage : 
$v va valoir valeur2
Quatrieme passage : 
$v va valoir valeur3			

$v vaut donc valeur3 une fois sortie de l aboucle
Il faut que tu fasse l'insertion dans la boucle for	
Ou que tu passe un tableau à ta fonction qui va boucler dessus poru faire plusieurs insert
*/

for($i = 0; $i <= 3; $i++){
$v = $tab[$i];
//ajout bdd
ajoute($v);	
}

//Ou 

for($i = 0; $i <= 3; $i++){
// Bon ici, vu qu'il n'y a aucun traitemet sur $tab[$i], autant ne pas faire la boucle ^^
$v[$i] = $tab[$i];
}
//ajout bdd
ajoute($v);
Messages postés
27
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
26 septembre 2013

Merci de ta réponse, je vais appliquer regarder ça.