Page 1 sur 1

Plusieurs SELECT

Posté : 27 juil. 2006, 10:36
par abidrochdi
Bonjour,

Le script qui me fait des problémes est le suivant :

Une boucle for qui enveloppe une balise select

<form ****>

For *********
<select ****>
<option***></option>
</select>
end for

</form>


et je veux recupérer les valeurs selectionnés des diff balises select


c très urgent

Merci

Posté : 27 juil. 2006, 10:42
par aelurus
Qu'est qui te pose probleme ta boucle for ou le traitement de ton formulaire ????
La divination c pas mon fort ^^ donne tes vrai bout de codes on pourras cerner ou est le prob pour que tu puisse le resoudre

Re: Plusieurs SELECT

Posté : 27 juil. 2006, 10:42
par Truc
Salut,
c très urgent
Merci
Commentaire pas forcément obligatoire dans la mesure ou personne ne travaille pour toi (ce qui est urgent pour toi ne l'est pas forcément pour les autres) :wink:

Pour la question tu peux donner un nom dynamique aux listes avec la concaténation de la variable de boucle:
for ($i ....)
   echo '<select name="select_'.$i.'">';
avec un champ caché tu récupères la valeur de $i pour le traitement de récupération où tu fait de même (boucle + concaténation).

Posté : 27 juil. 2006, 10:56
par abidrochdi
Bon, il est urgent pour moi :wink:

Le script est le suivant:

$req = mysql_query("SELECT id_course from package where  id_package = '$pack' ");	
		
$resultat = mysql_fetch_array($req);
$course = $resultat[0];

if ( $course != 3 )
{
$req = mysql_query("SELECT * from tee_time where id_course = '$course' AND date_tee_time <= '$calendarDate2' AND date_tee_time >= '$calendarDate1'  AND nbre_dep != 0  ORDER BY date_tee_time, heure_tee_time ");	
}

else{ // Si course = 3
$req = mysql_query("SELECT * from tee_time, handicap_tee_time  where tee_time.id_course = '$course' AND tee_time.date_tee_time <= '$calendarDate2' AND tee_time.date_tee_time >= '$calendarDate1'  AND tee_time.heure_tee_time = handicap_tee_time.time AND handicap_tee_time.handicap >= '$hdc' AND tee_time.nbre_dep != 0 ORDER BY tee_time.date_tee_time, tee_time.heure_tee_time ");
}
						
if ( mysql_num_rows ($req) )
{
$date = "";
echo "<form name='form1' method='post' action='check_book.php'><table width='85%' border='0' align='center'>
							
<input name='players' type='hidden' value='$noplayers'>
<input name='pack' type='hidden' value='$pack'>";
							
while ( $resultat = mysql_fetch_array( $req ))
{
if ( $date != $resultat[2] )
{
$date = $resultat[2];
$i = 0 ;
echo "
echo"
<tr>
<td>&nbsp;</td>
<td bgcolor='$col'><div align='center'><font face='Arial, Helvetica, sans-serif' size='2'>$resultat[3]  </font></div></td>
<td bgcolor='$col'><div align='center'>
													<select name='select' class='SELECT'>
														<option value='1'>1</option>";
														if ( $resultat[1] == 2 )
															echo "<option value='2'>2</option>";
														if ( $resultat[1] == 3 )
														{
															echo "  <option value='2'>2</option>
																	<option value='3'>3</option>";
														}
														if ( $resultat[1] == 4 )
														{
															echo "  <option value='2'>2</option>
																	<option value='3'>3</option>
																	<option value='4'>4</option>";
														}		
													echo"</select>
												</div></td>
												<td bgcolor='$col'><div align='center'>
													<input type='checkbox' name='booking[]' value= $id_tee_time >
												</div></td>
</tr>";
$i ++;
}
echo "
	<tr>
	<td colspan='4'><br><div align='right'><input name='Submit' type='submit' class='submit' value='$buton'></div></td>
</tr>
</table></form>	";
}


Le probléme est que je veux recupérer juste les valeurs des select dont les cases à cocher correspondant sont cochés

c urgent :D

Posté : 27 juil. 2006, 11:05
par nejme.eddinne
Votre question n'est pas clair
mais je vous donne un exemple:
par exemple j'ai un nbre n de catégories et je veux récupérer les sous catégories:
structure des deux tables:
"cats"= "id_cat" | "nom_cat"
"sub_cats"="id_sub" | "name_sub" | "cat"

où "cat" est le "id_cat" de la categorie supérieur
<?
$cats_rq=mysql_query("SELECT nom_cat,id_cat FROM cats");
while($cats=mysql_fetch_array($cats_rq))
{
  $sub_cat_rq=mysql_query("SELECT id_sub,name_sub FROM sub_cats WHERE cat=".$cats["id_cat"]);
  echo "<OPTION name=cat$nbr >";
     while($sub_cats=mysql_fetch_array($sub_cat_rq))
          echo "<OPTION value=".$sub_cats["id_sub"]." > ".$sub_cats["name_sub"]."</OPTION>";

$nbr++;
}

echo "<br> le nombre des SELECT est ".($nbr-1);
?>
donc tu peux récupérer le nbr des SELECT en le mettant dans un hidden ou un truc comme ça

Posté : 27 juil. 2006, 11:11
par abidrochdi
Merci

pour être plus clair, dans la boucle while j'ai deux balises : une SELECT et l'autre CHECKBOX

Je veux recupérer les valeurs des balises SELECT dont le checkbox correspondant est coché

J'espéer que je suis clair
Merci

Posté : 27 juil. 2006, 11:14
par nejme.eddinne
Merci

pour être plus clair, dans la boucle while j'ai deux balises : une SELECT et l'autre CHECKBOX

Je veux recupérer les valeurs des balises SELECT dont le checkbox correspondant est coché

J'espéer que je suis clair
Merci
la mm chose que les select devant chaque SELECT tu met un checkbox qui a le mm " $nbr "
donc après si tu va appeller

select_2 certainement le checkbox check_2 devant sera celle qui est devant le SELECT

Posté : 27 juil. 2006, 11:14
par aelurus
Et avec une boucle while ?
While (isset($_post[select])){
$a=$_post[select];
$req=mysql_query("SELECT '$a' FROM ...... WHERE ......);

Posté : 27 juil. 2006, 11:50
par Truc
C'est encore plus facile avec une checkbox accompagnant les listes.

name des listes => "select_$i"
name des checkbox => "check[]" avec "value=$i"

ensuite tu boucles sur les cases qui ont été cochées avec uhn foreach:
// tester que $_POST['check']  est bien un tableau is_array() et débuter $i à 0

foreach($_POST['check'] as $value)
{
   $valeur_liste = $_POST['select_'.$value];
   echo $valeur_liste.'<br />';
}
Seules les cases cochées renvoient une valeur tu peux donc concaténer avec les ces valeurs pour retrouver les listes.