Page 1 sur 1

Formulaire et nombre dynamique de champs input

Posté : 01 oct. 2007, 13:11
par supercanard
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

Posté : 01 oct. 2007, 13:20
par netsupra
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

Posté : 01 oct. 2007, 13:28
par supercanard
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>';
?>

Posté : 01 oct. 2007, 13:38
par d0m
tente un
print_r($_POST);
ça t'éclairera un peu plus ;)

Posté : 01 oct. 2007, 13:54
par Ryle
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 !! :)

Posté : 01 oct. 2007, 14:30
par supercanard
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 )

Posté : 01 oct. 2007, 14:45
par d0m
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.

Posté : 01 oct. 2007, 14:50
par supercanard
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: