[RESOLU] boucle foreach avec session array

Invité
Invité n'ayant pas de compte PHPfrance

06 févr. 2008, 21:17

Bonjour, je voudrais bouclé sur des valeurs qui sont en session mais j'ai l'erreur Invalid argument supplied for foreach() in

Voici le bout de code :

Code : Tout sélectionner

<?php foreach($_SESSION['vehicule'] as $val) { foreach($val as $value) { echo htmlentities($value).'&nbsp;'; } } ?>
Est ce possible de boucler comme ceci ? Bon désolé si vous avez les cheveux qui se dressent en lisant mon code mais je commence à peine en php.
Merci de l'aide.

ViPHP
ViPHP | 4039 Messages

06 févr. 2008, 21:23

C'est gentil de mettre la moitié du message d'erreur, sinon, ce serait trop facile :roll: ..

Je prends les paris sur le second foreach(), et du fait que $val retourné par le premier foreach n'est pas un tableau, mais une chaine, et que donc, on ne peut utiliser foreach dessus. Même qu'un petit "echo $val", à l'intérieur du premier foreach, permettrait de vérifier mes dires (ou pas) :D .
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

06 févr. 2008, 22:15

Ptet que c'est le premier foreach() :idea: :!: :?: :lol:

Dans tous les cas le message d'erreur te dit que l'argument [... coupé pour économiser de la place sur le forum ...] :langue:

... l'argument (le 1er) passé à foreach() n'est pas un tableau

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

ViPHP
ViPHP | 5924 Messages

07 févr. 2008, 02:14

Oui, et au passage, si tu ne sais pas ce qu'il y a dans ta variable, var_dump() est ton ami…

Invité
Invité n'ayant pas de compte PHPfrance

07 févr. 2008, 10:25

Salut si je n'ai pas mis le reste c'est que cela n'aide pas. La suite du message est juste le fichier php et le numéro de la ligne pour laquelle j'ai l'erreur et cela indique le premier foreach.
J'initialise ma variable de session de cette façon :

Code : Tout sélectionner

$_SESSION['vehicule']['vehicule_marque'] = $vehicule_marque; //Autres propriétés d'un véhicule mis en session de la même manière.
Donc pour moi c'est bien un array sa.
Sinon si le foreach ne fonctionne pas je pourrai essayé un autre type de boucle, mais le foreach avait l'air sympathique.

ViPHP
ViPHP | 5924 Messages

07 févr. 2008, 10:28

var_dump() est ton ami…
Montre nous en le résultat, pour vérifier que c"est bien un tableau…

ViPHP
ViPHP | 4039 Messages

07 févr. 2008, 10:40

et cela indique le premier foreach.
c'est vrai que c'est souvent inutile, le numéro de la ligne. Je configurerais bien mon php pour qu'il ne me l'affiche plus. Les défis, j'adore :wink: .

Ceci dit, je remets 10 brouzoufs sur le second foreach, à moins que $vehicule_marque soit un tableau.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Invité
Invité n'ayant pas de compte PHPfrance

07 févr. 2008, 10:52

J'ai aussi testé de cette manière :

Code : Tout sélectionner

foreach($_SESSION['vehicule'] as $val) { echo htmlentities($val).'&nbsp;'; }
Avec la même erreur

ViPHP
ViPHP | 4039 Messages

07 févr. 2008, 11:25

Ah.. perdu alors..

Et que donne
var_dump($_SESSION['vehicule']);
comme suggéré par Sékiltoyai
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Invité
Invité n'ayant pas de compte PHPfrance

07 févr. 2008, 13:06

Code : Tout sélectionner

var_dump($_SESSION['vehicule']);
renvoi NULL. Je ne comprend pas pourquoi dailleurs.
Dans mon code j'ai bien

Code : Tout sélectionner

$_SESSION['vehicule']['vehicule_id'] = $vehicule_id; //autres propriétés mises en session header("Status: 301 Moved Permanently"); header("Location: photo.php");
c'est dans photo.php que j'effectue la boucle foreach.
Est ce la redirection qui pourrait poser problème sinon je vois pas, c'est super simple comme code, mais cela ne fonctionne pas.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

07 févr. 2008, 14:12

un (des) session_start() quelque part ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

07 févr. 2008, 14:38

Non j'ai un script qui gère la session de l'utilisateur identifié, mais je l'ai retiré pour les tests. C'est surement sa le problème alors. Juste pour précision, le session_start() je ne doit le mettre qu'une seule fois non dans le premier script ? Sinon a chaque fois il va me créer une nouvelle session et effacer les variables que j'avais déja en session c'est bien sa ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

07 févr. 2008, 15:30

Non, tu dois le mettre dans chaque fichier de script pour (grossomodo) "signaler" que des variables de session vont être utilisées.

Si un fichier B est inclus dans un fichier A alors seul dans le fichier A tu dois faire appel a session_start().

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute