POST et Get différent lors de l'envoi d'un formulaire (dans une boucle For)

Const4ntine Messages postés 39 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 11 décembre 2008 - 14 nov. 2008 à 18:59
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 16 nov. 2008 à 01:48
Bonjour,

Après avoir passé près de 4h dessus, et avoir fait des tests de tout les cotés, je demande de l'aide ;)

J'ai un panier qui se charge par rapport à mes sessions sous une boucle for, qui contient pour chaque ligne des données formulaire,

J'ai un souci sur mon bouton supprimer, lorsque j'envoi mes données en POST, il me redonne la valeur de ma dernière session, tandis qu'en Get tout marche comme il faut,
Bien sur j'aimerai le faire en POST,

Pour infor : $_POST['Ref']= "Dernière valeur Ref de la dernière session, la position $i n'est pas respectée
                  $_GET['Ref']= "Retourne la bonne valeur, la position $i est respectée

Pouvez vous me dire ce qu'il cloche dans mon Code ?

Merci

for ($i=0 ;$i < $nbArticles ; $i++) {
            echo"<tr>";
            echo"<td>".htmlspecialchars($_SESSION['panier']['ref'][$i])."</td>";
            echo"<td>".htmlspecialchars($_SESSION['panier']['libelleProduit'][$i])."</td>";
            echo"<td>".htmlspecialchars($_SESSION['panier']['Senteurs'][$i])."</td>";
            echo'<td>$i]).'"/></td>';
            echo"<td>".htmlspecialchars($_SESSION['panier']['prixProduit'][$i])."</td>";
            echo '<td>
                        ';
            echo'['.htmlspecialchars( X]</td>';
           echo  $_SESSION['panier']['ref'][$i].'</td>';//test
            echo"</tr>";
}
A voir également:

7 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
15 nov. 2008 à 11:40
Hello,

une balise [script.php ok]


</form>

Si tu cliques sur le lien, tu n'auras ni variables GET ni POST dans script.php.

Toi, tu as ta référence en GET parce que tu la passes explicitement :


<form method="post" action="script.php">







[script.php?bla=1 ok]



</form>

Tu ne reçois pas la variable du champ du formulaire, mais du passage de paramètre dans le lien.Le formulaire n'est pas soumis.

Je pense que tu as besoin de relire des tuto sur les formulaires HTML afin de bien comprendre leur fonctionnement.
0
Const4ntine Messages postés 39 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 11 décembre 2008
15 nov. 2008 à 16:13
Tu ne réponds absolument pas à ma question, je pensais pourtant être clair.

C'est vrai que je n'ai pas mis tout le formulaire et ses variables car ce qui cloche c'est vraiment à l'interieur de ma boucle for,

Et j'ai spécialement mis la meme variable $_SESSION['panier']['ref'][$i] de mon formulaire, une en POST, et l'autre en envoie de variable en mais que je recupère en GET, et aussi en echo pour voir ce qui était envoyé.

Celle en GET est bien récupéré avec la bonne position $i, l'autre en POST ne prend que la dernière position dernière de $i.

Tout le reste marche très bien et très correctement,

et pour info je ne suis pas un débutant.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
15 nov. 2008 à 17:04
Toujours agréable de se voir répondre de cette manière quand on tente d'aider quelqu'un.
Tu es vexé parce que je t'ai dit que tu devrais revoir tes connaissances sur les formulaires ?
Dommage.
Si quelqu'un tentant de t'aider répond à côté, la moindre des choses et de se remettre en question  en essayant de mieux expliquer son problème ou de répondre gentiment que le problème est différent. Pas de se vexer.

Donc si ton problème est via tes envois en post ou en get, montre ses envois, pas la récupération.

Si je te dis : je fais echo $a; et ça ne m'affiche rien, ça ne va pas bcp t'avancer si je ne montre pas comment je remplis $a.

ceci dit, je ne pense pas vraiment me tromper sur ta connaissance des formulaires. Si comme j'en ai l'mpression, ta boucle est un extrait d'une construction de fomulaire, ça ne m'étonne guère qu'en écrivant cette ligne dans une boucle :
';
et en postant à la fin ton formulaire, tu ne récupères que le dernier $i.
Vu que tu l'écrases à chaque itération.
Etant donné que la varibale $_POST récupère l'attribut name des champs.
Donc...on a par exemple :
A" />'
'
'

A soumission, $_POST['Ref'] est forcément égal à C, le dernier champ posté nommé "Ref".

Mais franchement, si tu veux qu'on ait envie de t'aider, change d'attitude.
0
Const4ntine Messages postés 39 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 11 décembre 2008
15 nov. 2008 à 17:48
Je ne suis pas vexé,

Juste, je n'écrase pas car comme je l'avais mis dans mon message d'origine ils sont compris entre des balises <td>, en clair ma boucle for me permet de construire un tableau, et donc mon "supprimer" est différent à chaque fois, et se distingue donc pas la position $i
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
15 nov. 2008 à 18:17
Pas pour la référence, non. Pour la quantité je veux bien car tu utilises un tableau pour le champ. Mais ton champ caché contenant la réf sera écrasé. Non pas dans le html, mais à soumission du formulaire. Le fait de les mettre dans des <td> ne change rien. Tu es dans un formulaire, et un seul au vu de ta boucle. Alors que ton lien, juste en dessous du champ caché, lui, sera évidemment ok à chaque fois, donc tu récupères bien ce que tu veux en GET, mais pas en POST...c'est exactement ce que tu dis.
0
Const4ntine Messages postés 39 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 11 décembre 2008
16 nov. 2008 à 01:41
Ok, merci pour l'explication,

Je vais me résoudre à le faire en GET
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
16 nov. 2008 à 01:48
En post :

';
par exemple.
0
Rejoignez-nous