Liste déroulante

Résolu/Fermé
CaRTmaN` Messages postés 13 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 26 décembre 2009 - 3 juin 2009 à 14:30
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 3 juin 2009 à 16:55
Bonjour,

Je vous expose mon problème (c'est du HTML / PHP):

J'ai un tableau à 3 colonnes et 5 lignes.
Dans la première colonne, sur chaque ligne j'ai du texte.
Dans la deuxième colonne j'ai des checkbox dans chaque ligne, qui quand on les "check" font apparaitre, grâce à un script java, dans la 3ème colonne une liste déroulante avec plusieurs choix.
Il y a une liste déroulante "caché" dans chaque ligne, pour chaque checkbox activé.

Ce que j'aimerai, et que je ne trouve pas comment faire, c'est quand une checkbox est activé et que la liste déroulante est apparue avec un choix sélectionner, j'aimerai pouvoir lorsqu'on clique sur un bouton unique récupérer les informations sélectionner par les listes déroulante apparut.
Comment faire ceci :s

Le script java utilisé:
function test1()
{
obj = document.getElementById("st").style;
if(document.choix1.statut.checked == true){obj.visibility = 'visible';}else{obj.visibility = 'hidden';}
}

Voici un aperçus d'une ligne du tableau:

<td> </td>
<th width="10%" align="right">Statut :</th>
<td width="10%" align="center"><input name="statut" type="checkbox" value="1" onClick="test1()" title="Cocher pour selectionner l'option"/></td>
<td><div id="st" style="visibility:hidden"><select name="choixstatut" style="width:100%" title="Choisissez le statut">
<option value="statut1">Statut 1</option>
<option value="statut2">Statut 2</option>
<option value="statut3">Statut 3</option>
<option value="statut4">Statut 4</option>
</select></div></td>
<td> </td>
<td> </td>

infos:
J'ai du faire 5 "function", 1 pour chaque liste déroulante.


Merci beaucoup pour votre aide, si vous avez d'autre solution sinon à me proposer pour faire autrement je suis preneur, car je n'ai pas d'autre idée en tête là :s.
A voir également:

5 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
3 juin 2009 à 14:56
c'est javascript et pas java

ensuite passes ton id en argument, ainsi tu n'aura besoin que d'une fonction, c'est le principe même d'une fonction de pouvoir servir plusieurs fois.

essayes cette methode:

<script type="text/javascript">
function test1(id)
{
obj = document.getElementById(id).style;
if(document.choix1.statut.checked == true){obj.visibility = 'visible';}else{obj.visibility = 'hidden';}
}
</script> 
<form name="test" method="post" action="script.php">
<tr>
<td> </td>
<th width="10%" align="right">Statut :</th>
<td width="10%" align="center">
<input name="selection[choixstatut]" type="checkbox" value="1" onClick="test1('st')" title="Cocher pour selectionner l'option"/></td>
<td><div id="st" style="visibility:hidden">
<select name="choixstatut" style="width:100%" title="Choisissez le statut">
<option value="statut1">Statut 1</option>
<option value="statut2">Statut 2</option>
<option value="statut3">Statut 3</option>
<option value="statut4">Statut 4</option>
</select>
</div></td>

</tr>
<tr>
<td> </td>
<th width="10%" align="right">Blabla :</th>
<td width="10%" align="center">
<input name="selection[blabla]" type="checkbox" value="1" onClick="test1('blabla')" title="Cocher pour selectionner l'option"/></td>
<td><div id="blabla" style="visibility:hidden">
<select name="blabla" style="width:100%" title="Choisissez le statut">
<option value="statut1">Blabla 1</option>
<option value="statut2">Blabla 2</option>
<option value="statut3">Blabla 3</option>
<option value="statut4">Blabla 4</option>
</select>
</div></td>

</tr>

<input type="submit" name="envoyer" value="Envoyer">
</form>
<?php
if(isset($_POST['envoyer'])){
	$array_sel_listes=array(); //init de l'array qui va memoriser les choix
	//le formualire a ete poste on verifie qu'une checkbox a ete cochée
	if(sizeof($_POST['selection'])>0){
	// le nom des checkbox est selection[.....]  donc on reçoit un array, on va le parcourir pour voir quels sont celles cochées et on recupérera alors la liste correspondante
		foreach($_POST['selection'] as $cle=>$value){
			if($value=="1"){ //si cochée on reçoit 1
				//attention le name de la liste de selection doit être identique a ce qui est entre les [  ] du nom de la checkbox correpondante
				$array_sel_listes[$cle]=$_POST[$cle];
				//exemple la checkbox selection[choixstatut] est cochée, on va donc recuperer le choix de la liste choixstatut
			}
		
		}
	}
	
	// et tu va faire ensuite ce que tu veux en parcourant l'array $array_sel_listes par une boucle foreach($array_sel_listes as $cle=>$value)
	//la $cle c'est l'index de l'array (par ex choixstatut) et $value la valeur correspondante
}


?>
0
CaRTmaN` Messages postés 13 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 26 décembre 2009 1
3 juin 2009 à 16:01
Il y a les listes déroulantes qui ne s'affichent plus lorsqu'on coche une checkbox ..
Je suis entrain de chercher d'où ca peut venir, mais sans succès pour le moment.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
3 juin 2009 à 16:43
Tiens la partie formulaire qui fonctionne:

<script type="text/javascript">
function test1(id_liste,id_box)
{
obj = document.getElementById(id_liste).style;
if(document.getElementById(id_box).checked == true){obj.visibility = 'visible';}else{obj.visibility = 'hidden';}
}
</script> 
<form name="test" method="post" action="script.php">
<table>
<tr>
<td> </td>
<th width="10%" align="right">Statut :</th>
<td width="10%" align="center">
<input name="selection[choixstatut]" id="choixstatut" type="checkbox" value="1" onClick="test1('st','choixstatut')" title="Cocher pour selectionner l'option"/></td>
<td><div id="st" style="visibility:hidden">
<select name="choixstatut" style="width:100%" title="Choisissez le statut">
<option value="statut1">Statut 1</option>
<option value="statut2">Statut 2</option>
<option value="statut3">Statut 3</option>
<option value="statut4">Statut 4</option>
</select>
</div></td>

</tr>
<tr>
<td> </td>
<th width="10%" align="right">Blabla :</th>
<td width="10%" align="center">
<input name="selection[blabla]" id="blabla_box" type="checkbox" value="1" onClick="test1('blabla','blabla_box')" title="Cocher pour selectionner l'option"/></td>
<td><div id="blabla" style="visibility:hidden">
<select name="blabla" style="width:100%" title="Choisissez le statut">
<option value="statut1">Blabla 1</option>
<option value="statut2">Blabla 2</option>
<option value="statut3">Blabla 3</option>
<option value="statut4">Blabla 4</option>
</select>
</div></td>

</tr>

<input type="submit" name="envoyer" value="Envoyer">
</table>
</form>
0
CaRTmaN` Messages postés 13 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 26 décembre 2009 1
3 juin 2009 à 16:54
Merci beaucoup ca marche nikel !!
0

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

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
3 juin 2009 à 16:55
et tout l'ensemble (tel qu'il est le code s'appelle lui même adaptes en conséquenc)e:

<script type="text/javascript">
function test1(id_liste,id_box)
{
obj = document.getElementById(id_liste).style;
if(document.getElementById(id_box).checked == true){obj.visibility = 'visible';}else{obj.visibility = 'hidden';}
}
</script> 
<form name="test" method="post" action="">
<table>
<tr>
<td> </td>
<th width="10%" align="right">Statut :</th>
<td width="10%" align="center">
<input name="selection[choixstatut]" id="choixstatut" type="checkbox" value="1" onClick="test1('st','choixstatut')" title="Cocher pour selectionner l'option"/></td>
<td><div id="st" style="visibility:hidden">
<select name="choixstatut" style="width:100%" title="Choisissez le statut">
<option value="statut1">Statut 1</option>
<option value="statut2">Statut 2</option>
<option value="statut3">Statut 3</option>
<option value="statut4">Statut 4</option>
</select>
</div></td>

</tr>
<tr>
<td> </td>
<th width="10%" align="right">Blabla :</th>
<td width="10%" align="center">
<input name="selection[blabla]" id="blabla_box" type="checkbox" value="1" onClick="test1('blabla','blabla_box')" title="Cocher pour selectionner l'option"/></td>
<td><div id="blabla" style="visibility:hidden">
<select name="blabla" style="width:100%" title="Choisissez le statut">
<option value="blabla1">Blabla 1</option>
<option value="blabla2">Blabla 2</option>
<option value="blabla3">Blabla 3</option>
<option value="blabla4">Blabla 4</option>
</select>
</div></td>

</tr>
<tr><td colspan="3">
<input type="submit" name="envoyer" value="Envoyer">
<td>
</tr>
</table>
</form>
<?php
if(isset($_POST['envoyer'])){
	$array_sel_listes=array(); //init de l'array qui va memoriser les choix
	//le formualire a ete poste on verifie qu'une checkbox a ete cochée
	if(isset($_POST['selection']) AND sizeof($_POST['selection'])>0){
	// le nom des checkbox est selection[.....]  donc on reçoit un array, on va le parcourir pour voir quels sont celles cochées et on recupérera alors la liste correspondante
		foreach($_POST['selection'] as $cle=>$value){
			if($value=="1"){ //si cochée on reçoit 1
				//attention le name de la liste de selection doit être identique a ce qui est entre les [  ] du nom de la checkbox correpondante
				$array_sel_listes[$cle]=$_POST[$cle];
				//exemple la checkbox selection[choixstatut] est cochée, on va donc recuperer le choix de la liste choixstatut
			}
		
		}
	}else{
		echo "Veuillez cocher au moins une case !";
	}
	
	// et tu va faire ensuite ce que tu veux en parcourant l'array $array_sel_listes par une boucle foreach($array_sel_listes as $cle=>$value)
	//la $cle c'est l'index de l'array (par ex choixstatut) et $value la valeur correspondante
	
	//un petit coup pour visualiser:
	if(sizeof($array_sel_listes)>0){
		foreach($array_sel_listes as $cle=>$value){
			echo "<b>Nom de la liste:</b> ".$cle."   <b>choix liste= </b>".$value."<br>";
		}
	}
	///////
}


?>
0