Rechercher : dans
Par :

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

Dernière réponse le 30 jui 2005 à 09:09:00 Erdnax, le 29 jui 2005 à 11:05:58 
 Signaler ce message aux modérateurs

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 ;)
(_..:: P'tit Suisse ::.._)

Meilleures réponses pour « [PHP] incrémentation de $_POST[] ... » dans :
[Webmaster] Un formulaire de contact pour votre site VoirCe formulaire permet d'avoir une page pour être contacté sur son site, sans utiliser de logiciel de messagerie. La personne qui vous contacte indique son adresse, l'objet du message et son message (évidemment). Le code est une version...
[PHP] Notice: Undefined index: VoirSi vous utilisez les tableaux $_POST ou $_GET pour récupérer les variables de vos formulaires ou autres, il se peut que vous tombiez sur cette erreur: Notice: Undefined index 'champs du tableau' in 'chemin du fichier php en cours d'execution' on line...
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
Télécharger PHP Edit VoirPHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de fonctionnalités permettant de développer plus efficacement : Coloration syntaxique Auto-complétion des fonctions Débuggeur...
Télécharger PHP FTP Synchronizer VoirLa mise à jour de site web est aussi complexe que sa conception. Alors il faut utiliser le bon outil avec les bon paramètres et une bonne connaissance de programmation pour mettre à jour un site. PHP FTP Synchronizer est une application vous...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...

1

kilian, le 29 jui 2005 à 13:02:33

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];
}

Répondre à kilian

2

Erdnax, le 29 jui 2005 à 13:22:00

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)

@+
(_..:: P'tit Suisse ::.._)

Répondre à Erdnax

3

kilian, le 29 jui 2005 à 13:28:45

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

Répondre à kilian

4

Erdnax, le 29 jui 2005 à 13:36:22

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".
(_..:: P'tit Suisse ::.._)

Répondre à Erdnax

5

kilian, le 29 jui 2005 à 13:50:57

Alors peut être un soucis avec $_POST['nb']
Tu as vérifié s'il avait une valeur?

Répondre à kilian

6

Erdnax, le 29 jui 2005 à 14:01:14

Malheureusement oui, nb a non seulement une valeur, et en plus elle est juste :P ;) (_..:: P'tit Suisse ::.._)

Répondre à Erdnax

7

kilian, le 29 jui 2005 à 14:06:44

Et quand tu essaies
echo $_POST['img'.$i]
Ca ne donne rien?

C'est dans une fonction tout ça ou c'est global?

Répondre à kilian

8

Erdnax, le 29 jui 2005 à 14:09:50

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.
(_..:: P'tit Suisse ::.._)

Répondre à Erdnax

9

Erdnax, le 30 jui 2005 à 01:08:19

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 @+ ;)
(_..:: P'tit Suisse ::.._)

Répondre à Erdnax

10

 kilian, le 30 jui 2005 à 09:09:00

Ok :-)

Répondre à kilian