Pb avec le boucle for

Fermé
hmayda Messages postés 21 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 27 novembre 2007 - 13 sept. 2007 à 13:38
 CubeRCL - 13 sept. 2007 à 13:50
Salut ;

je n'arrive pas de connaitre d'ou veint le souice .

Explication de pb:(ajouter un produit dans le panier(le formulaire de l'ajout et une button sumbit )

je veut test au debut si la table session est vide ou non
-si vide on ajouter le produit(reference, prix qantite et totale)
-si le table session ne pas vide :
-Ontest sur le reference du produit
-si ce produit existe dejat (on modifier seulement la qantite)
-Si ce produit n'existe pas dans le table en va le ajouter.

Le pb : c'est que l'osque en trouve cette produit dejas enregester dans le table il modifier le qantite(nouvelle valeur de qantite) et aussi ajouter ce produit à la fin du table .

Voici mon script :

----- code ----------

<?php
$ref=$_GET["id"];

$tableproduit=$_SESSION['panier'];
if($tableproduit=='') $count=0;else $count=count($tableproduit[0]);
//echo ' count'; echo $count;
if($count>0)
{
for($j=0; $j<$count ; $j++){
if($tableproduit[0][$j]==$ref){

$tableproduit[2][$j]=$_POST["qt"];
$tableproduit[3][$j]=$_POST["totale"];
//$_SESSION['panier']=$tableproduit;
}
if ($tableproduit[0][$j]!=$ref){

$tableproduit[0][$count]=$ref;
$tableproduit[1][$count]=$prix;
$tableproduit[2][$count]=$_POST["qt"];
$tableproduit[3][$count]=$_POST["totale"];
}
if(($tableproduit[0][$j]==$ref) &&($j>0)){

$tableproduit[2][$j]=$_POST["qt"];
$tableproduit[3][$j]=$_POST["totale"];

}

}

}
else
{
$tableproduit[0][$count]=$ref;
$tableproduit[1][$count]=$prix;
$tableproduit[2][$count]=$_POST["qt"];
$tableproduit[3][$count]=$_POST["totale"];

}
$_SESSION['panier']=$tableproduit;

?>

------- fin code --------


Qui peut me aide svp ?
Merci en avance
A voir également:

2 réponses

Je ne vais pas repondre a ta question mais t'apporter quelque conseil qui te simplifierons ta vie de developpeur ...

Indente tes boucles. Une petite tabulation ne coute pas cher et est dix fois plus lisibles. Ex:
<?php
$ref=$_GET["id"];

$tableproduit=$_SESSION['panier'];
if($tableproduit=='') $count=0;else $count=count($tableproduit[0]);
//echo ' count'; echo $count;
if($count>0)
{
for($j=0; $j<$count ; $j++)
{
if($tableproduit[0][$j]==$ref)
{
$tableproduit[2][$j]=$_POST["qt"];
$tableproduit[3][$j]=$_POST["totale"];
}
if ($tableproduit[0][$j]!=$ref)
{
$tableproduit[0][$count]=$ref;
$tableproduit[1][$count]=$prix;
$tableproduit[2][$count]=$_POST["qt"];
$tableproduit[3][$count]=$_POST["totale"];
}
if(($tableproduit[0][$j]==$ref) &&($j>0))
{
....

Si tu fais un if == et un if != utilise else !! =>
if($tableproduit[0][$j]==$ref)
{
$tableproduit[2][$j]=$_POST["qt"];
$tableproduit[3][$j]=$_POST["totale"];
}
else
{
$tableproduit[0][$count]=$ref;
$tableproduit[1][$count]=$prix;
$tableproduit[2][$count]=$_POST["qt"];
$tableproduit[3][$count]=$_POST["totale"];
}
On est sur de passer dans un des cas!!!

Utilse les tableaux assiocatifs de php au lieu de passer par des boucles .... Dans un tableaux tu mets par exemple :
$prix['table']=50;
$prix['chaise']=20;
$prix['commode']=7;

Plus besoin de passer le tableau des prix en revue avec une boucle pour trouver ton prix, tu l'appelle directement avec $prix[$ref]
En simplifiant ton code, tes erreurs t'apparaitront surement plus facilement ...
Apluche
Cube
0
Au temps pour moi, tu avais peut-etre indenter ton code mais celui n'apparait pas dans le forum !!!! ;-) ( puisque le mien n'apparait pas !!!)
0