[PHP] incrémentation de $_POST[] ...

Résolu/Fermé
Erdnax Messages postés 2273 Date d'inscription mercredi 1 octobre 2003 Statut Contributeur Dernière intervention 1 octobre 2007 - 29 juil. 2005 à 11:05
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 30 juil. 2005 à 09:09
Bonjour à tous,

Alors voilà mon problème. J'aimerais dans un script php récupérer des variables transmises par formulaire par la méthode POST. Mon problème provient du fait que le formulaire ne possède pas un nombre de champ définis. Il se trouve dans une boucle et donc pour chaque enregistrement de ma base de données un certain nombre de champs est généré.

Les noms des différents champs sont les même (img1, cat_id1, etc...), à part le dernier numéro qui s'incrémente au fur et à mesure de la page.

Alors mon problème, est-il possible de récupérer chaque champ dans une boucle php par la méthode POST et rajoutant au nom de variable le numéro adéquat ? Par exemple (non fonctionnel...) :
$nb = $_POST['nb']; //nombre d'enregistrements
$i = 1 ;

while ($i < $nb){

$img = $_POST['img'.$i];
$cat_id = $_POST['cat_id'.$i];
}
D'avance merci à ceux qui pourront m'aider et/ou trouver des solutions alternatvies ;)
A voir également:

10 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
29 juil. 2005 à 13:02
Salut,

Tout paraît bon, mais $img et$cat_id sont sans cesse ecrasés par leur valeur suivante (exemple: $img sera égal à $_POST['img1'] puis après sera égal à $_POST['img2'].

Donc utilise un tableau:
while ($i < $nb){

          $img[$i] = $_POST['img'.$i];
          $cat_id[$i] = $_POST['cat_id'.$i];
}
0
Erdnax Messages postés 2273 Date d'inscription mercredi 1 octobre 2003 Statut Contributeur Dernière intervention 1 octobre 2007 497
29 juil. 2005 à 13:22
En fait c'est égal que les variables soient automatiquement écrasée ou non. Elles sont tout de suite traitée, puis après sont inutiles donc pas d'importance.

Par contre, tu peux me confirmer que la méthode $_POST[] accepte que l'on lui balance des variable ? ('cat_id'.$i)

@+
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
29 juil. 2005 à 13:28
Oui, comme l'index d'un tableau est une chaine :
=> $tableau ['chaine']
...tu peux parfaitement faire un travail sur cette chaine comme tu le fais avec la concatenation.

Vérifie d'abord que ton post possède vraiment ces index.
Fais un echo sur tes $_POST['img'.$i] dans ta boucle, comme ça tu verras bien...
0
Erdnax Messages postés 2273 Date d'inscription mercredi 1 octobre 2003 Statut Contributeur Dernière intervention 1 octobre 2007 497
29 juil. 2005 à 13:36
Bon, alors voilà mon code :

$nb = $_POST['nb'];
$i = 1;

while ($i < $nb){

$img      = $_POST['img'.$i];
$cat_id   = $_POST['cat_id'.$i];
$comm     = $_POST['comm'.$i];
$i++;

$requete = "UPDATE images SET cat_id='$cat_id', img='$img', comm='$comm', susp='false' WHERE img='$img'";
mysql_query($requete);

echo 'Cat_id : '.$cat_id."<br>\n";
echo 'Img : '.$img."<br>\n";
echo 'Comm : '.$comm."<br>\n";


}
echo 'Les données ont bien été enregistrées.<br>'."\n";
Le truc, c'est que ma table n'est pas mise à jour, et que mes echo ne donnent rien...

Pourtant mon formulaire fonctionne, car lorsque je traite image par image (sans la boucle, avec des données fixes) cela marche.

Donc d'où vient mon bug ?

EDIT : la seule chose qui s'affiche est mon "Les données ont bien été enregistrées".
0

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

Posez votre question
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
29 juil. 2005 à 13:50
Alors peut être un soucis avec $_POST['nb']
Tu as vérifié s'il avait une valeur?
0
Erdnax Messages postés 2273 Date d'inscription mercredi 1 octobre 2003 Statut Contributeur Dernière intervention 1 octobre 2007 497
29 juil. 2005 à 14:01
Malheureusement oui, nb a non seulement une valeur, et en plus elle est juste :P ;)
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
29 juil. 2005 à 14:06
Et quand tu essaies
echo $_POST['img'.$i]
Ca ne donne rien?

C'est dans une fonction tout ça ou c'est global?
0
Erdnax Messages postés 2273 Date d'inscription mercredi 1 octobre 2003 Statut Contributeur Dernière intervention 1 octobre 2007 497
29 juil. 2005 à 14:09
C'est global... c'est pour ça que j'ai posté ici, je comprends pas pourquoi ça ne marche pas... Mais je vais continuer à faire des test ce soir.
0
Erdnax Messages postés 2273 Date d'inscription mercredi 1 octobre 2003 Statut Contributeur Dernière intervention 1 octobre 2007 497
30 juil. 2005 à 01:08
Tu vas rire (j'espère ^^) c'est juste une faute toute simple, en faite ma variable nb était envoyée par un champdisabled, donc en fait pas transmise...

Alors tout ça partait d'une erreur stupide, mais là c'est bon, j'ai trouvé et tout fonctionne à merveille. Donc merci pour ton aide et @+ ;)
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
30 juil. 2005 à 09:09
Ok :-)
0