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

Signaler
Messages postés
36
Date d'inscription
mercredi 17 novembre 2010
Statut
Membre
Dernière intervention
18 avril 2011
-
Messages postés
36
Date d'inscription
mercredi 17 novembre 2010
Statut
Membre
Dernière intervention
18 avril 2011
-
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

Messages postés
7
Date d'inscription
samedi 26 décembre 2009
Statut
Membre
Dernière intervention
8 février 2011

a première vue y a pas de problème dans ton code...
donnes nous en un peu plus.
Messages postés
36
Date d'inscription
mercredi 17 novembre 2010
Statut
Membre
Dernière intervention
18 avril 2011

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
Messages postés
7
Date d'inscription
samedi 26 décembre 2009
Statut
Membre
Dernière intervention
8 février 2011

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..
Messages postés
36
Date d'inscription
mercredi 17 novembre 2010
Statut
Membre
Dernière intervention
18 avril 2011

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
Messages postés
36
Date d'inscription
mercredi 17 novembre 2010
Statut
Membre
Dernière intervention
18 avril 2011

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
Messages postés
36
Date d'inscription
mercredi 17 novembre 2010
Statut
Membre
Dernière intervention
18 avril 2011

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
Messages postés
36
Date d'inscription
mercredi 17 novembre 2010
Statut
Membre
Dernière intervention
18 avril 2011

Rectification, avec ce code ca marche uniquement pour le dernier !!


abdinfo6
Messages postés
36
Date d'inscription
mercredi 17 novembre 2010
Statut
Membre
Dernière intervention
18 avril 2011

Résolu !!

Comparaison chaine de caracteres erronée ...




abdinfo6