Formulaire et nombre dynamique de champs input

Mammouth du PHP | 531 Messages

01 oct. 2007, 13:11

Bonjour,

Voila mon problème. Je voudrais faire un formulaire dont le nombre de champ peut être variable. Le c'est juste un test j'ai mis cette valeur à 5 :
<?php
$nb= 5;
echo '<form method="post" action="#">';
for ($i= 0; $i != $nb; $i++) {
	echo '<input type="texte" name="champ[]" value="champ'.$i.'" />';
}
echo $i.'<input type="submit"></form>';
?>
Jusque là pas de problème. Sauf que maintenant je voudrais afficher les valeurs, mais je ne vois pas du tout comment faire la boucle.....
if (isset($_POST['champ'])) {
while (quelquechose) {
	echo $_POST['champ'][$i];
}
}
évidement comme ça rien ne marche, et je nage :wink:

Bonne journée

Eléphant du PHP | 187 Messages

01 oct. 2007, 13:20

Salut,
vire le value des champs text pour commencer (je ne pnse pas que tu veuilles faire ce que ca donne).
Tel que c'est ecrit, tu peux recuperer le contenu de tes champ dans le tableau $_POST['champ'][] avec les indices 0 à 4 dans ton exemple.
Netsupra

Mammouth du PHP | 531 Messages

01 oct. 2007, 13:28

Pour le value ça c'est pas grave c'est juste pour remplir le champ pour faire le test :wink:

J'ai un peu avancé, je pensais avoir trouvé la solution mais quenini :(
<?php
if (isset($_POST['champ0'])) {
for ($i= 0; $i != $nb; $i++) {
	echo $_POST['champ.$i'];
}
}

$nb= 5;
echo '<form method="post" action="#">';
for ($i= 0; $i != $nb; $i++) {
	echo '<input type="texte" name="champ'.$i.'" value="champ'.$i.'" />';
}
echo $i.'<input type="submit"></form>';
?>

d0m
Mammouth du PHP | 1141 Messages

01 oct. 2007, 13:38

tente un
print_r($_POST);
ça t'éclairera un peu plus ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

01 oct. 2007, 13:54

Rappel : Une chaine entre apostrophes n'est pas interprétée...
$_POST['champ.$i']; // retourne l'index : champ.$i

$_POST['champ'.$i]; // retourne l'index : champ1 (si $i==1)
Sortez vos variables !! :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 531 Messages

01 oct. 2007, 14:30

Rappel : Une chaine entre apostrophes n'est pas interprétée...
$_POST['champ.$i']; // retourne l'index : champ.$i

$_POST['champ'.$i]; // retourne l'index : champ1 (si $i==1)
Sortez vos variables !! :)
Oups l'apostrophe c'est une erreur de frappe
tente un
print_r($_POST);
ça t'éclairera un peu plus ;)
Merci j'y avais pas pensé. Ca me retourne rien qui me choque par contre... :
Array ( [champ0] => champ0 [champ1] => champ1 [champ2] => champ2 [champ3] => champ3 [champ4] => champ4 )

d0m
Mammouth du PHP | 1141 Messages

01 oct. 2007, 14:45

je ne sait pas si c'est un oubli mais tu définis $nb après l'avoir utilisé dans la première boucle.

après en mettant le code
<?php
$nb = 5;
if (isset($_POST['champ0'])) {
  for ($i=0; $i<=$nb; $i++) {
    echo $_POST['champ'.$i];
  }
} 
l'affichage devrait se faire.

Mammouth du PHP | 531 Messages

01 oct. 2007, 14:50

je ne sait pas si c'est un oubli mais tu définis $nb après l'avoir utilisé dans la première boucle.

après en mettant le code
<?php
$nb = 5;
if (isset($_POST['champ0'])) {
  for ($i=0; $i<=$nb; $i++) {
    echo $_POST['champ'.$i];
  }
} 
l'affichage devrait se faire.
Ah ben oui tout dessuite c'est beaucoup mieux.
J'vé encore devoir me punir pour "erreur à la con" :D
Merci :wink: