Page 1 sur 1
boucle foreach avec session array
Posté : 06 févr. 2008, 21:17
par Invité
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).' ';
}
}
?>
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.
Posté : 06 févr. 2008, 21:23
par Berzemus
C'est gentil de mettre la moitié du message d'erreur, sinon, ce serait trop facile

..
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)

.
Posté : 06 févr. 2008, 22:15
par Truc
Posté : 07 févr. 2008, 02:14
par Sékiltoyai
Oui, et au passage, si tu ne sais pas ce qu'il y a dans ta variable, var_dump() est ton ami…
Posté : 07 févr. 2008, 10:25
par Invité
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.
Posté : 07 févr. 2008, 10:28
par Sékiltoyai
var_dump() est ton ami…
Montre nous en le résultat, pour vérifier que c"est bien un tableau…
Posté : 07 févr. 2008, 10:40
par Berzemus
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

.
Ceci dit, je remets 10 brouzoufs sur le second foreach, à moins que $vehicule_marque soit un tableau.
Posté : 07 févr. 2008, 10:52
par Invité
J'ai aussi testé de cette manière :
Code : Tout sélectionner
foreach($_SESSION['vehicule'] as $val) {
echo htmlentities($val).' ';
}
Avec la même erreur
Posté : 07 févr. 2008, 11:25
par Berzemus
Ah.. perdu alors..
Et que donne
var_dump($_SESSION['vehicule']);
comme suggéré par
Sékiltoyai
Posté : 07 févr. 2008, 13:06
par Invité
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.
Posté : 07 févr. 2008, 14:12
par Truc
un (des) session_start() quelque part ?
Posté : 07 févr. 2008, 14:38
par Invité
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 ?
Posté : 07 févr. 2008, 15:30
par Truc
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().