Page 1 sur 2
foreach non reconuu
Posté : 24 août 2006, 23:00
par GERBER
Bonjour
J'aimerais votre avis sur ce message d'erreur dans mon panier au moment de la mise en panier d'un article :
Warning: Invalid argument supplied for foreach() in /www/panier_ajout.php on line 25
Ma boucle de lecture de mon panier est la suivante : (c'est la fameuse ligne 25 du fichier ci-dessus !) :
foreach( $_SESSION['panier'] as $i => $v )
$reference = $v['reférence'];
{ etc .....
Merci de votre aide ![/php]
Posté : 24 août 2006, 23:15
par DocType
essaie:
foreach( $_SESSION['panier'] as $i => $v )
{
$reference = $v['reférence'];
}
sinon, je te déconseille d'utiliser des caractères speciaux, majuscules ou accentués pour tes variables.
Selon ton script, pour chaque ligne de ton tableau $_SESSION['panier], tu recupères $i (qui est le nom de ton index de tableau panier) et $v qui est sa valeur associée. suite à cela, tu donnes à $reference la 'référence' de ta valeur choppée dans panier avec son index $i...
et bizarrement, ta boule ne sert à rien...$reference sera toujours ecrasée, et seule la dernière ligne sera renvoyée. Est-ce cela le but de ton script ?

Posté : 24 août 2006, 23:35
par Invité
Tu as tout à fait raison ! mille excuses ! j'ai mal copié mon code, qui est bien :
PHP:
<?php
foreach( $_SESSION['panier'] as $i => $v )
{
$reference = $v['reference'];
}
Et c'est celuilà qui renvoie l'erreur[/php]
Posté : 24 août 2006, 23:36
par DocType
ca nen résoud pas moins ton soucis, ton listing ne sert à rien car ta variable $reference est ecrasée

Posté : 24 août 2006, 23:40
par Truc
L'erreur te dit que tu ne passes pas un tableau à foreach().
Est ce que tu as bien un session_start() en début de script pour pouvoir utiliser la variable de session ?
ou est ce que l'indice 'panier' existe en session ?
Posté : 24 août 2006, 23:41
par Invité
Comment ecrirais tu cette boucle pour que soit listé l'ensemble des valeurs "reference" ?
Merci !
Posté : 24 août 2006, 23:43
par Invité
J'ai essayé celle ci avec le même résultat :
foreach( $_SESSION['panier'] as $v ){$ref=$v['ref'].......
Posté : 24 août 2006, 23:47
par Truc
places le tout dans un autre tableau (par exemple):
$reference[] = $v['reference'];
Mais ça ne change rien si la variable de session n'est pas un Tableau !
Posté : 24 août 2006, 23:47
par Invité
Pour répondre à Truc :
Oui j'ai bien un session start. J'initie la varible de session comme ceci :
if(!isset($_SESSION['panier'])){$_SESSION['panier']=array();}
Merci
Posté : 24 août 2006, 23:55
par DocType
Que veux-tu faire apparaître ?
Que contiennent les variables ?
Expliques nous le but et nous verrons les bugs. Fournis uassi le reste de ton code stp ou un bref descriptif de l'ajout au panier au traitement actuel

Posté : 25 août 2006, 00:40
par Invité
Pour ne pas compliquer et prendre trop de votre temps j'ai simplifié :
J'amène à mon fichier d'ajout au panier 2 variables en GET :
Code : Tout sélectionner
<? session_start();
$prix=$_GET['prix'];
$ref=$_GET['ref'];
$_SESSION['panier'][]= array('ref' => $ref,'prix' => $prix,'qte'=>'1');
?>
Et j'ai l'erreur :
Fatal error: [] operator not supported for strings in /www/panier_ajout.php on line 10
[/code]
Posté : 25 août 2006, 00:50
par DocType
et le $_SESSION['panier'] = array();
à la trappe ?
Posté : 25 août 2006, 01:19
par Invité
Je l'ai ajouté et ca passe. Mais la panier peut exister, auquel cas il ne fut pas l'initialiser :
<? session_start();
$prix=$_GET['prix'];
$ref=$_GET['ref'];
if(!isset($_session['panier'])){
$_SESSION['panier']=array();
$_SESSION['panier'][]= array('ref' => $ref,'prix' => $prix,'qte'=>'1');
}
if(isset($_SESSION['panier'])){
$_SESSION['panier'][]= array('ref' => $ref,'prix' => $prix,'qte'=>'1');
}
?>
Et c'est alors dans le second cas (le panier existe déjà) qu'une erreur est renvoyée
Posté : 25 août 2006, 07:58
par DocType
Te rend-tu compte de l'absurdité de ton code ?
"si tu vas au restaurant ou que tu reste chez toi, tu vas payer l'addition" est à peu près le style de ton code. Faut réflechir avant de coder, pas se lancer dessus avec l'espoir que ça va fonctionner ou que l'on va lui fournir tout fait !
ton schema a faire:
on lance les sessions
on met en session les variabes issues des $_GET
on teste la variable panier dans les session
si la variable n'est pas créée
on définit la variable panier dans les sessions = tableau vide
on définit un tableau vide pour le tableau de la variable panier dans les sessions
on met à jour les données du panier dans les sessions
Posté : 25 août 2006, 10:13
par Invité
Nous sommes je crois dans la rubrique des "débutants" et c'est pourquoi je suis surpris par ton jugement plutôt sévère!
Mais c'est pas grave. Je vais chercher et sans doute trouver. Merci de votre aide.