Aller au contenu

Champs d'un menu déroulant en boucle


Sujets conseillés

Posté

Bonjour je cherche comment mettre les champs de mon menu déroulant en boucle ..

$select1 = '<select name="myselect" >';
$select2 = '<option value="'.$value.'_1" name="'.$name.'_1">'.$name.'_1</option>';
for ($i=2;$i<=$nb_champs;$i++) {
$select3 = '<option value="'.$value.'_'.$i.'" name="'.$name.'_'.$i.'">'.$name.'_'.$i.'</option>';
}
$select4 = '</select>';
echo "$select1 $select2 $select3 $select4";

les variables $value_1 et $name proviennt d'un formulaire où on px ajouter dynamiquement nos champs ...

Merci ;)

Posté

salut,

je ne m'y prendrais pas comme ça mais dans ta boucle, $select3 ne sera jamais égal qu'à la valeur de la dernière boucle, donc :

for ($i=2;$i<=$nb_champs;$i++) {
$select3.= '<option value="'.$value.'_'.$i.'" name="'.$name.'_'.$i.'">'.$name.'_'.$i.'</option>';
}

nb: pourquoi mettre un name à tes options ??

Posté

Bon voilà:

Le code de la page où il ya le formulaire avec les champs dynamiques

Mapage.html

<script>
function create_champ(i) {
var i2 = i + 1;
document.getElementById('add1_'+i).innerHTML = 'Nom: <input type="text" size="15" name="name_'+i+'" ></span> Valeur: <input name="value_1" size="24" type="text" id="flux_'+i+'" />';
document.getElementById('add1_'+i).innerHTML += (i <= 10) ? '<br /><span id="add1_'+i2+'" style="font-family=Arial; size:10px;"><a href="java script:create_champ('+i2+')">Ajouter un champ</a></span>' : '';
document.forms['myform'].elements['nb_champs'].value="" +i+ "";
}
</script>
<form name="myform" method="post" action="valid.php">

Nom: <input name="name_1" type="text" id="name_1" size="15" >
Value: <input name="value_1" type="text" id="flux_1" size="24"><br/>
<span id="add1_2"><a href="java script:create_champ(2)">Ajouter un champ</a></span><br />
<input type="submit" value="valider">
</form>

Et pour la page php pour générer mon menu déroulant

valid.php

<?
foreach($_POST as $key => $value) {
if(!isset($$key))
$$key = $value;
}

$select1 = '<select name="myselect" >';
$select2 = '<option value="'.$value.'_1" >'.$name.'_1</option>';
for ($i=2;$i<=$nb_champs;$i++) {
$select3.= '<option value="'.$value.'_'.$i.'" >'.$name.'_'.$i.'</option>';
}
$select4 = '</select>';
echo "$select1 $select2 $select3 $select4";
?>

Mais là dans la page de validation (valid.php) je coince :( ca ne marche pas ...

Posté

c bon j'ai trouvé ;) la solution ...

Donc voila je reprend mon code :

Mapage.html

<script>
function create_champ(i) {
var i2 = i + 1;
document.getElementById('add1_'+i).innerHTML = 'Nom: <input type="text" size="15" name="name_'+i+'" ></span> Valeur: <input name="value_'+i+'" size="24" type="text" id="flux_'+i+'" />';
document.getElementById('add1_'+i).innerHTML += (i <= 10) ? '<br /><span id="add1_'+i2+'" style="font-family=Arial; size:10px;"><a href="java script:create_champ('+i2+')">Ajouter un champ</a></span>' : '';
document.forms['myform'].elements['nb_champs'].value= i;
}
</script>
<form name="myform" method="post" action="valid.php">

Nom: <input name="name_1" type="text" id="name" size="15" >
Value: <input name="value_1" type="text" id="flux" size="24"><br/>
<input type="hidden" name="nb_champs">
<span id="add1_2"><a href="java script:create_champ(2)">Ajouter un champ</a></span><br />
<input type="submit" value="valider">
</form>

et pour le fichier pour valider

valid.php

<?
$nb_champs = $_POST['nb_champs'];
$select = '<select name="myselect" >';
for($i=1;$i<=$nb_champs;$i++)
{
$select .= '<option value="'.$_POST['value_'.$i].'">'.$_POST['name_'.$i].'</option>';
}
echo $select . '</select>';
?>

et voilivoilou ! Merci pour tous ;)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...