Afficher valeur selectionné liste déroulante après validation

abdinfo6 Messages postés 36 Date d'inscription mercredi 17 novembre 2010 Statut Membre Dernière intervention 18 avril 2011 - 20 déc. 2010 à 16:30
abdinfo6 Messages postés 36 Date d'inscription mercredi 17 novembre 2010 Statut Membre Dernière intervention 18 avril 2011 - 22 déc. 2010 à 11:10
Bonjour,

je n'arrive pas à conserver l'élément selectionné dans ma liste déroulante après validation de mon formulaire :

		<td><select name="activite" id="activite" style="width: 100px">
<?php
while($j<$nb)
{
if (isset($_POST['activite']) && ($_POST['activite'] == $tab[$j]))
{
print '<option value="'.$tab[$j].'" selected="selected">'.$tab[$j].'</option>';
}
else
{
print '<option value="'.$tab[$j].'">'.$tab[$j].'</option>';
}

$j++;
}
}
?>
  	     </select></td>
</tr>
<tr width="100px">
<td></td>
<td align="center"></td>


Merci d'avance

abdinfo6

8 réponses

vorace54 Messages postés 7 Date d'inscription samedi 26 décembre 2009 Statut Membre Dernière intervention 8 février 2011
21 déc. 2010 à 01:22
a première vue y a pas de problème dans ton code...
donnes nous en un peu plus.
0
abdinfo6 Messages postés 36 Date d'inscription mercredi 17 novembre 2010 Statut Membre Dernière intervention 18 avril 2011
21 déc. 2010 à 09:30
Il ne me garde dans ma liste déroulante que si c'est le premier ou le dernier qui est sélectionné ...

Tout est là concernant ma demande. Aucune autre partie de mon code ne gere le fait de conserver ce qui est choisi dans
ma liste déroulante.


abdinfo6
0
vorace54 Messages postés 7 Date d'inscription samedi 26 décembre 2009 Statut Membre Dernière intervention 8 février 2011
21 déc. 2010 à 20:07
si je te demandes plus de code c'est que t'as une acollade fermante en trop...l'as tu ouverts plus haut dans ton code?
<form action="" method="post">
<select name="activite" id="activite" style="width: 100px">
<?php
$nb=10;
$tab=array();
for($i=0;$i<$nb;$i++)
{
$tab[$i]=$i;
}
while($j<$nb)
{
if (isset($_POST['activite']) && ($_POST['activite'] == $tab[$j]))
{
print '<option value="'.$tab[$j].'" selected="selected">'.$tab[$j].'</option>';
}
else
{
print '<option value="'.$tab[$j].'">'.$tab[$j].'</option>';
}

$j++;
}
?>
</select>,

----

,


</form>

j'ai repris ton code et ca marche chez moi..
0
abdinfo6 Messages postés 36 Date d'inscription mercredi 17 novembre 2010 Statut Membre Dernière intervention 18 avril 2011
22 déc. 2010 à 09:29
Alors effectivement ton code fonctionne bien car la liste déroulante est alimentée par des nombres.

Ma liste déroulante est alimentée par des données d'un fichier texte et en superposant la liste déroulante alimentée par
des nombres et celle alimentée par mes données de fichier texte, lorsque je clique sur le bouton submit, la liste à nombres ne
se remet pas à sa valeur initiale (ce que je veux) alors que ma liste alimentée par mon fichier texte se repositionne sur
la premiere valeur.

Voici le code qui permet d'afficher cette seconde liste :

<?php
$fp=fopen("", "r");
$taille_ficact=filesize("$fic_act");
    	if ((!$fp=fopen($fic_act, "r")) || ($taille_ficact == '0')) // Si l'on arrive pas a lire le fichier activites.txt, c'est qu'il n'existe pas ou ou qu'il est vide
{	
?>
<tr>
<td width="33"></td>
<td><select name="activite" id="activite" style="width: 100px" >
<option>Absence ou fichier activites vide</option>
<?php	
} 
else
{                    
$tab= array();
$i=0;
     			while (!feof($fp))
{ 
$tab[$i]=fgets($fp);
     		$i++;
}
  		$nb=count($tab);
  		$j=0;	
?>
<tr>
<td width="33"></td>
<td><select name="activite" id="activite" style="width: 100px" >
<?php
while($j<$nb)
{
if ($activite == $tab[$j])
{															
print '<option value="'.$tab[$j].'" selected>'.$tab[$j].'</option>';
}
else
{
print '<option value="'.$tab[$j].'">'.$tab[$j].'</option>';				
}
$j++;
}
       		fclose($fp); 
}
?>
  	     </select></td>
</tr>

Merci en tout cas !!


abdinfo6
0

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

Posez votre question
abdinfo6 Messages postés 36 Date d'inscription mercredi 17 novembre 2010 Statut Membre Dernière intervention 18 avril 2011
22 déc. 2010 à 10:05
J'ai minimisé mon code au maximum de manière à ce que ce soit plus lisible en enlevant message d'erreur que j'affiche :

<?php
$fp=fopen($fic_act, "r");
$tab= array();
$i=0;
while (!feof($fp))
{ 
$tab[$i]=fgets($fp);
$i++;
}
$nb=count($tab);
$j=0;	
?>
<tr>
<td><select name="activite" id="activite" style="width: 100px" >
<?php
while($j<$nb)
{
if ($activite == $tab[$j])
{									
print '<option value="'.$tab[$j].'" selected>'.$tab[$j].'</option>';
}
else
{
print '<option value="'.$tab[$j].'">'.$tab[$j].'</option>';				
}
$j++;
        }
fclose($fp); 
?>
</select></td>
</tr>


Ca ne fonctionne toujours pas peut etre du qu'a chaque submit il me recontruit le tableau ...


abdinfo6
0
abdinfo6 Messages postés 36 Date d'inscription mercredi 17 novembre 2010 Statut Membre Dernière intervention 18 avril 2011
22 déc. 2010 à 10:34
J'ai modifié cette ligne :
print '<option value="'.$tab[$j].'" selected>'.$tab[$j].'</option>';

en :
print '<option value="'.$tab[$j].'" selected="selected">'.$tab[$j].'</option>';


Il reste sur le bon affichage pour le premier element et pour le dernier pas pour les autres lorsque je soumet mon formulaire ... incompréhensible

abdinfo6
0
abdinfo6 Messages postés 36 Date d'inscription mercredi 17 novembre 2010 Statut Membre Dernière intervention 18 avril 2011
22 déc. 2010 à 10:40
Rectification, avec ce code ca marche uniquement pour le dernier !!


abdinfo6
0
abdinfo6 Messages postés 36 Date d'inscription mercredi 17 novembre 2010 Statut Membre Dernière intervention 18 avril 2011
22 déc. 2010 à 11:10
Résolu !!

Comparaison chaine de caracteres erronée ...




abdinfo6
0
Rejoignez-nous