Pb de récupération d'un tableau passé par formulaire depuis php5

Résolu
Signaler
Messages postés
88
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
19 mai 2006
-
Messages postés
88
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
19 mai 2006
-
Bonjour !

J'espère que j'ai intitulé le sujet de mon message correctement ! Je vais developper et expliquer ce qui se passe (pas, du moins plus !) depuis que j'ai installé la version 5 de php ....

Problème certainement tout bête, mais je sèche complétement :
J'ai un formulaire qui passe des données (jusque là normal !) récupéré d'une table et dont le while me créer chaque fois une ligne du dis formulaire (et en même temps de l'affichage des données)
Ma requête
while ($data = mysql_query())
{
echo ''.$data[1].'
';
}
Ensuite dans le script qui gère ensuite le formulaire j'avais fait ceci :

extract(
$_POST,EXTR_SKIP);

foreach ($var as $key => $value)
{
echo $value;
}

(bon c'est une version simplifié du traitement du formulaire, mais bon le problème se situe dès le départ donc j'ai mis que les infos importantes !)

Avec php4, aucun soucis je récupérais bien mes valeurs passées par le formulaire avec mon foreach, aucun soucis... Depuis php5, j'ai un renvoi d'erreur qui me dit que j'ai un argument invalid dans foreach ()
J'ai compulsé le bouquin pour voir si la syntaxe n'avait pas changé, pour voir ce qui clochait dans ce que j'avais écrit, maaaaaaaaaiiiiiiiissss apparement c'est ok j'ai pas fait d'erreur !

Si quelqu'un pouvait éclairer ma lanterne .... Merci d'avance

6 réponses

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
normal car tu fais un foreach du $_POST entier

ici ça donnerait pour ton tableau
while(list($key,$value)=each ($_POST['var']))
{
echo $key,$value;
}
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Salut,
il faut passer un tableau dans le foreach, mais bon je me pose une question : pourquoi faire un extract pour faire ce que tu fais ensuite ?

if(isset($_POST) AND is_array($_POST))
{
foreach ($_POST as $key => $value)
{
echo $value;
}
}

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
88
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
19 mai 2006

Merci Anthomicro d'avoir répondu,

En fait j'en ais deux de tableaux qui passe par le formulaire.

J'ai un input qui me passe les vars et un autre me passe les valeurs des vars (val)

Si je mets que $_POST je pourrais pas les identifier différement pour faire tourner les boucles qui vont me les récupérer .. .?!

Faire passer un tableau en foreach() c'est ce que j'avais fait non ?
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
foreach ($var as $key => $value)

je ne sais pas d'où provient la variable $var donc je peux pas t'affirmer qu'il s'agit d'un tableau.

"Si je mets que $_POST je pourrais pas les identifier différement pour faire tourner les boucles qui vont me les récupérer .. .?!"

tu peux identifier le nom des variables avec la variable $key dans la boucle

bon sinon en plus rapide :

while(list($key,$value)=each ($_POST))
{
echo $key,$value;
}
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
Messages postés
88
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
19 mai 2006

Eeeeeeuu désolée j'ai un peu de mal à suivre ....
Je vais recommencé le schmilblik ! :)

Voila, j'ai un formulaire qui est rempli par des données venant d'une table (en fait deux, avec une jointure, mais là n'est pas le soucis), ce formulaire est un formulaire de modification de données.
J'ai ma page avec les données du personnage (parce qu'il s'agit de modifier les compétences d'un personnages et ensuite les valeurs)
Nom de la compétence [input texte : valeur de la compétence]
Comme je fais un while sur la requête sql, pour écrire mon formulaire j'ai fait ceci :
<form>
.$data[1].
</form>
sachant que var[] stock $data[0] (qui correspond en fait à l'id de ma compétence), $data[1] est le nom de la compétence et val[] stock $data[2] (qui est la valeur de la compétence pour le personnage)
Donc voilà, j'ai stocké mes var et mes val en tableaux que je passe ensuite dans un script pour mettre à jour les compétences et les valeurs du personnages.

Hors avec mon ancienne méthode que j'avais écrite avec un foreach() cela ne fonctionne plus parce qu'apparement il y a un argument dans foreach() qui ne convient pas .... J'ai donc vérifié ce que j'avais en echo sur var et val
J'ai eu un retour de Array, donc mes deux tableaux existe bien mais j'arrive plus à en extraire les données.
quand j'ai fait la première solution que tu m'avais proposé Anthomicro, il m'a bien retourné en echo de .$valeur les deux Array que j'ai passé par le formulaire, mais je n'ais toujours pas les valeurs qui sont dedans ...
Bref je n'arrive donc plus à les extraires pour les repasser par la suite dans une requête d'update de ma table :(

J'ai tenté avec un explode, j'ai tenté avec une boucle for() mais, je n'y arrive pas du tout !!

Je vois pas ce qui cloche et ce qui aurait pu changer entre php4 et php5 et qui aurait fait que ma boucle foreach ne fonctionne plus
Messages postés
88
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
19 mai 2006

Ah d'accord !! Je vais tester ça se soir !

Merci Anthomicro :)

Par contre, pourrais-tu me dire pourquoi cela fonctionnait avant en php4 et plus en php5 ??