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

[Résolu/Fermé]
Signaler
Messages postés
126
Date d'inscription
mercredi 13 septembre 2006
Statut
Membre
Dernière intervention
3 juillet 2008
-
Messages postés
126
Date d'inscription
mercredi 13 septembre 2006
Statut
Membre
Dernière intervention
3 juillet 2008
-
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 !!

5 réponses

Messages postés
148
Date d'inscription
dimanche 31 juillet 2005
Statut
Membre
Dernière intervention
10 mars 2012
82
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
126
Date d'inscription
mercredi 13 septembre 2006
Statut
Membre
Dernière intervention
3 juillet 2008
14
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 ... ;-)
Messages postés
126
Date d'inscription
mercredi 13 septembre 2006
Statut
Membre
Dernière intervention
3 juillet 2008
14
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
Messages postés
148
Date d'inscription
dimanche 31 juillet 2005
Statut
Membre
Dernière intervention
10 mars 2012
82
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
Messages postés
126
Date d'inscription
mercredi 13 septembre 2006
Statut
Membre
Dernière intervention
3 juillet 2008
14
Comment ça marche ??

Très bien !!!

Merci beaucoup ...