[PHP] Liste déroulante + select HELP !!

Résolu/Fermé
elsadelatoundra Messages postés 126 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 3 juillet 2008 - 21 sept. 2006 à 16:27
elsadelatoundra Messages postés 126 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 3 juillet 2008 - 22 sept. 2006 à 12:52
Bonjour ou plutôt re-bonjour !

J'ai un formulaire de saisie, toujours avec des dates et un formulaire de traitement des données postées qui me permet de contrôler si les champs obligatoires sont saisis.

Si certains champs ne sont pas saisis, je recharge le formulaire et je voudrais réafficher les infos déjà saisies ... Ce qui me fait un peu galérer c'est que je travaille avec des listes déroulantes et je ne sais pas comment faire pour indiquer à un champ d'être préselectionné.

Voici ma liste déroulante pour les dates :

<td class="form_text" valign='top'>
<select name="DATE_DEBUT_JJ"  class='form_text' >
	<option value=''>JJ</option>
	<?php
	for($i=1; $i <= 9 ; $i++){	
		echo '<option value="0'.$i.'">0'.$i.'</option>';
		echo"\n";
	}
     
	for($i=10; $i <= 31 ; $i++){
		echo '<option value="'.$i.'">'.$i.'</option>';
		echo"\n";
	}
	?>
</select>

J'avais pensé à un truc comme ça dans la section php, mais rien ne se passe, je pense que ça pourrait si je mettais les bonnes choases aux bons endroits !!

if($_POST['DATE_DEBUT_JJ']==$DATE_DEBUT_JJ){
	$defaut="selected";
	}	
	else{
		$defaut="";
	}



Merci de votre aide !!
A voir également:

5 réponses

ceddec Messages postés 148 Date d'inscription dimanche 31 juillet 2005 Statut Membre Dernière intervention 10 mars 2012 82
21 sept. 2006 à 17:30
Il faut que tu compares la valeur que tu récupères dans le formulaire ($_POST['DATE_DEBUT_JJ']) avec la valeur que tu affiches ("0".$i ou $i)

Ca c'est censé marché :

<td class="form_text" valign='top'>
<select name="DATE_DEBUT_JJ"  class='form_text' >
	<option value=''>JJ</option>
	<?php
	for($i=1; $i <= 9 ; $i++)
        {
                if($_POST['DATE_DEBUT_JJ']=="0".$i) $defaut="selected";
                else $defaut="";
		echo '<option value="0'.$i.'" $defaut>0'.$i.'</option>';
		echo"\n";
	}
     
	for($i=10; $i <= 31 ; $i++)
        {
                if($_POST['DATE_DEBUT_JJ']==$i) $defaut="selected";
                else $defaut="";
		echo '<option value="'.$i.'" $defaut>'.$i.'</option>';
		echo"\n";
	}
	?>
</select>
1
elsadelatoundra Messages postés 126 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 3 juillet 2008 14
21 sept. 2006 à 19:33
Ha oki, j'étais persuadée que $DATE_DEBUT_JJ était la valeur prise par l'élément de ma liste !

Je teste ça dès demain matin !!

Encore merci ... ;-)
0
elsadelatoundra Messages postés 126 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 3 juillet 2008 14
22 sept. 2006 à 09:58
Bonjour tout le monde ...

C'est à n'y rien comprendre !!

<?php
echo'<select name="ACTIVITE_ID"  class="form_text" onchange="this.form.submit();"><option></option>';
while($ligne=mysql_fetch_array($resultat1))
	{
          extract($ligne);
	  if ($NOM_ACTIVITE<>"")
	  {
                if(isset($_POST['ACTIVITE_ID']) && $_POST['ACTIVITE_ID']==$ACTIVITE_ID)
                  $defaut="selected";
                else $defaut="";
		echo "<option value='$ACTIVITE_ID' $defaut>$NOM_ACTIVITE</option>\n";
	  }
	}
	echo "</select>\n";

?>

Ici le $defaut="selected" marche et ici, non :

<select name="DATE_DEBUT_JJ"  class='form_text' >
	<option value=''>JJ</option>
	<?php
	for($i=1; $i <= 9 ; $i++){
		if($_POST['DATE_DEBUT_JJ']=="0".$i){
			$case=1; $defaut="selected";
		}
		else{
			$defaut="";
		}
		echo '<option value="0'.$i.'" $defaut>0'.$i.'</option>';
		echo"\n";
	}
     
	for($i=10; $i <= 31 ; $i++){
		if($_POST['DATE_DEBUT_JJ']==$i){
			$case=2; $defaut="selected";
		}
		else{
			$defaut="";
		}
		echo '<option value="'.$i.'" $defaut>'.$i.'</option>';
		echo"\n";
	}
	?>
</select>

Quand je dis que ça ne marche pas, ça veut juste dire que la liste se remet à neuf avec JJ comme affichage au lieu du jour sélectionné précédemment par l'user !

J'ai créé une variable "case" qui me permet de savoir si on rentre dans un des deux if et le cas échéant dans lequel on est rentré. Bref, je voulais savoir si ce n'était pas
$_POST['DATE_DEBUT_JJ']==$i
qui buggait...

Ensuite, je fais un
echo$case;
et à l'écran le bon cas s'affiche => on rentre dans le bon if...

J'en déduis donc que c'est au niveau du select que y a un petit sushis, mais j'ai beau regarder, je ne vois pas trop.

Je me décourage ... en plus dans mon application j'ai des dizaines et des dizaines de listes déroulantes pour choisir la date comme ça !! :-S

Et puis mes calendriers ne marchent pas encore !! lol
Heureusement que mon projet dure 4 mois !

Bref, toujours pareil, si quelqu'un voit le bug et peut m'aider, c'est bien cool !

Merci d'avance
0
ceddec Messages postés 148 Date d'inscription dimanche 31 juillet 2005 Statut Membre Dernière intervention 10 mars 2012 82
22 sept. 2006 à 12:40
Bonjour

Le problème est que tu fais :

echo '....$defaut...';

Je m'explique: le fait d'utiliser de simple quote fait que php n'interprete pas $defaut, il ne considere pas que c'est une valeur contrairement avec les guillemets. la solution est donc :

echo '<option value="0'.$i.'" '.$defaut.'>0'.$i.'</option>';


ou

echo "<option value=\"0$i\" $defaut>0$i</option>";


Un conseil pour que tu puisses voir par toi même l'erreur :

Regardes le source de la page à partir du navigateur. Tu n'auras pas de PHP mais tu verras ce qui est interprété. Dans ce cas ci, tu aurais vu que $defaut n'avait pas changer.

Bon courage
0

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

Posez votre question
elsadelatoundra Messages postés 126 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 3 juillet 2008 14
22 sept. 2006 à 12:52
Comment ça marche ??

Très bien !!!

Merci beaucoup ...
0