Garder la sélection d'une liste déroulante [Résolu]

Signaler
Messages postés
9
Date d'inscription
samedi 2 juin 2007
Statut
Membre
Dernière intervention
26 juillet 2008
-
Messages postés
56
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
17 octobre 2009
-
Voilà mon problème:

J'ai créé un liste déroulante qui  est remplie par un boucle while avec les données d'une base de données après une requête sql.
Quand je clique sur une des lignes je déclenche (entr'autre) un rechargement de la page compet_saisie.php (onclick=submit()  + method="post").
Le problème est que j'aimerais garder la sélection après le rechargement de page mais ceci ne se fait pas.

Voici le code du fichier compet_saisie.php
Il semble que le test $licencie_selectionne==$_POST['liste5'] ne marche pas et je n'arrive pas à comprendre pourquoi.
Merci d'avance pour votre contribution.

<form id="form1" name="form1"  onclick=submit() method="post" action="compet_saisie.php">
 
    <select name="liste5" size="10"  style="background: #FFFFCC" >
      <?php
  
    while($val=mysql_fetch_array($req))
    {
     $licencie_selectionne=$val['num_lic']."\t"."&nbsp"."\t"."&nbsp"."\t".$val['nom_lic']."\t"."&nbsp"."\t"."&nbsp"."\t".$val['pnom_lic']."\t"."&nbsp"."\t"."&nbsp"."\t".$val['sexe_lic']."\t".$val['categorie_lic']."\t";
    
     echo "<option>" .$licencie_selectionne; 
    }
    if (isset($_POST['liste5']))
     {
         $selected="";
         $licencie_selectionne=$val['num_lic']."\t"."&nbsp"."\t"."&nbsp"."\t".$val['nom_lic']."\t"."&nbsp"."\t"."&nbsp". "\t".$val['pnom_lic']."\t"."&nbsp"."\t"."&nbsp"."\t".$val['sexe_lic']."\t".$val['categorie_lic']."\t"; 
      
         echo "<option>" .$licencie_selectionne; 
        
          if ($licencie_selectionne==$_POST['liste5'])
           {
            $selected="selected="selected"";
            echo "<option value ="".$licencie_selectionne.""" .$selected.">".$licencie_selectionne."</option>   \n";
           }
     }
   
  ?>
    </select>
  
</form>

12 réponses

Messages postés
56
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
17 octobre 2009

Utilise tu easy PHP car sur easy php lors cve ke le poste n'est pas envoyé il renvoi une erreur

deplus le poste ne dépend pas du nom prénom du licincié mais de son numéro :
echo "<option value ='".$licencie_num.'"'; 
     if ( !empty($_POST['numerodelicence']) ) {
      $_POST['numerodelicence'] = $licencie_nomprenom );
     if ( $_POST['numerodelicence'] == $licencie_num ) {
          echo " selected";
     }
     }
     echo ">".$licencie_nomprenom."</option>";
De plus j'ai trouvé mon érreur! C'es tchipoter mais ca suffi a planter un script!

<form id="form1" name="form1"  onclick=submit() method="post" action="compet_saisie.php">
 
    <select name="numerodelicence" size="10"  style="background: #FFFFCC" >
      <?php
  
    while($val=mysql_fetch_array($req))
    {
     $licencie_nomprenom=$val['nom_lic']."&nbsp".$val['pnom_lic'];
     $licencie_num=$val['num_lic'];
    
     echo "<option value ='".$licencie_num."'"; 
     if ( !empty($_POST['numerodelicence']) ) {
      $_POST['numerodelicence'] = $licencie_nomprenom );
     if ( $_POST['numerodelicence'] == $licencie_num ) {
          echo " selected";
     }
     }
     echo ">".$licencie_nomprenom."</option>";
    }
    ?>
    </select>
  
</form>

Et oui car si on regarde le code original nous avion inversé les balises comme après il y avais un IF elle ne renvoyai aucune érreure!

Essaye ca devrai mieu marcher!
Messages postés
56
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
17 octobre 2009

A ta place je ne ferai pas comme ca!

voici ton code :


<hr />


<form id="form1" name="form1"  onclick=submit() method="post" action="compet_saisie.php">
 
    <select name="liste5" size="10"  style="background: #FFFFCC" >
      <?php
  
    while($val=mysql_fetch_array($req))
    {
     $licencie_selectionne=$val['num_lic']."\t"."&nbsp"."\t"."&nbsp"."\t".$val['nom_lic']."\t"."&nbsp"."\t"."&nbsp"."\t".$val['pnom_lic']."\t"."&nbsp"."\t"."&nbsp"."\t".$val['sexe_lic']."\t".$val['categorie_lic']."\t";
    
     echo "<option>" .$licencie_selectionne; 
    }
    if (isset($_POST['liste5']))
     {
         $selected="";
         $licencie_selectionne=$val['num_lic']."\t"."&nbsp"."\t"."&nbsp"."\t".$val['nom_lic']."\t"."&nbsp"."\t"."&nbsp". "\t".$val['pnom_lic']."\t"."&nbsp"."\t"."&nbsp"."\t".$val['sexe_lic']."\t".$val['categorie_lic']."\t"; 
      
         echo "<option>" .$licencie_selectionne; 
        
          

if ($licencie_selectionne==$_POST['liste5'])
           {
            $selected="selected="selected"";
            echo "<option value ="".$licencie_selectionne.""" .$selected.">".$licencie_selectionne."</option>   \n";
           }
     }
   
  ?>
    </select>
  
</form>
<hr />
Moi je te conseil :
<hr />
<form id="form1" name="form1"  onclick=submit() method="post" action="compet_saisie.php">
 
    <select name="liste5" size="10"  style="background: #FFFFCC" >
      <?php
  
    while($val=mysql_fetch_array($req))
    {
     $licencie_selectionne=$val['num_lic']."\t"."&nbsp"."\t"."&nbsp"."\t".$val['nom_lic']."\t"."&nbsp"."\t"."&nbsp"."\t".$val['pnom_lic']."\t"."&nbsp"."\t"."&nbsp"."\t".$val['sexe_lic']."\t".$val['categorie_lic']."\t";
    
     echo "<option value ='".$licencie_selectionne.'"'; 
     if ($licencie_selectionne==$_POST['liste5']) {
          echo " selected";
     }
     echo ">".$licencie_selectionne."</option>";
    }
    ?>
    </select>
  
</form>
<hr />Je me permet de texpliquer pourquoi!

Dabord si tu ne passe aucun parametre a ton select ( le value de chaque otpion ) ta variable $_POST['liste5'] sera toujours nulle vue que tu ne la passe pas! ensuite tu test le post directement sur ta boucle et pas a la suite car sinon elle va retourner tous les resultats! et voila je pense que c'est tt se ke je peut dire!
Messages postés
9
Date d'inscription
samedi 2 juin 2007
Statut
Membre
Dernière intervention
26 juillet 2008

Bonsoir,


Je te remercie de prendre de ton temps pour t'interesser à mon problème.

J'ai essayé le sript et voilà ce qui en ressort:
-dans la liste déroulante, je n'ai que 10 noms au lieu de 32
-A côté de chaque noms dans la liste j'ai un message qui me dit que la variable $_POST['liste5'] n'est pas définie (ligne où il y a : if ($licencie_selectionne==$_POST['liste5']))



-Le nom cliqué ne reste pas sélectionné au rechargement de page.


L'affaire ne me paraît  pas simple....

Peut-être as tu une autre solution ?

Merci en attendant
Messages postés
56
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
17 octobre 2009

je voudrai juste que tu esplik ca!

['num_lic']."\t"."&nbsp"."\t"."&nbsp"."\t".$val['nom_lic']."\t"."&nbsp"."\t"."&nbsp"."\t".$val['pnom_lic']."\t"."&nbsp"."\t"."&nbsp"."\t".$val['sexe_lic']."\t".$val['categorie_lic']."\t";

tu ressort plusieurs fois la meme colone et ligne du tableau
Messages postés
9
Date d'inscription
samedi 2 juin 2007
Statut
Membre
Dernière intervention
26 juillet 2008

Bonjour,

La variable $val est le résultat d'une requête sur la table licencié
la variable session représente le club concerné.

Dans le bout de code que je t'ai fourni il manque les deux lignes suivantes:

$sql="SELECT  *  FROM  licencies WHERE club='".$_SESSION['club']."' ' ";
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());

while($val=mysql_fetch_array($req))

Suite à cette requête j'extrais le n° de licence, le nom, prénom, le sexe et la catégorie du licencié:

$licencie_selectionne=$val['num_lic']."\t"."&nbsp"."\t"."&nbsp"."\t".$val['nom_lic']."\t"."&nbsp"."\t"."&nbsp"."\t". $val['pnom_lic']."\t"."&nbsp"."\t"."&nbsp"."\t".$val['sexe_lic']."\t".$val['categorie_lic']."\t";
Messages postés
56
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
17 octobre 2009

aaa okai
alors a ta place je ne ferai pas comme ca!!!

a koi te sert ton menu déroulant si tu y affiche la totalitée des informations?

a ta place je n'extrairai que le nom et prenom enfin regarde je te montre!


<hr />
// Pour la partie menu déroulant
<?php
$sql="SELECT  *  FROM  licencies WHERE club='".$_SESSION['club']."' ' ";
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
?>
<form id="form1" name="form1"  onclick=submit() method="post" action="compet_saisie.php">
 
    <select name="numerodelicence" size="10"  style="background: #FFFFCC" >
      <?php
  
    while($val=mysql_fetch_array($req))
    {
     $licencie_nomprenom=$val['nom_lic']."&nbsp".$val['pnom_lic'];
     $licencie_num=$val['num_lic'];
    
     echo "<option value ='".$licencie_num.'"'; 
    

if ($_POST['numerodelicence'] == $licencie_num ) {
          echo " selected";
     }
     echo ">".$licencie_nomprenom."</option>";
    }
    ?>
    </select>
  
</form>
<?php
// pour la partie tableau

$sql2="SELECT  *  FROM  licencies WHERE club='".$_SESSION['club']."' AND num_lic='".$_POST['numerodelicence']."' LIMIT 1";
$req2 = mysql_query($sql2) or die('Erreur SQL !
'.$sql2.'
'.mysql_error());
if ( $val2 = mysql_fetch_array($req2) ) {
// et la tu met toute les information tel que le nom prenom numéro sex ...
}
?>
Messages postés
56
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
17 octobre 2009

Ouaaaiiiiiisssss!
Messages postés
9
Date d'inscription
samedi 2 juin 2007
Statut
Membre
Dernière intervention
26 juillet 2008

Je suis désolé mais hélas d'une part j'ai toujours les mêmes problèmes que le 1 er code que tu m'avais fourni (la variable POST non définie avant d'avoir cliqué sur un nom de la liste) et d'autre part, quand je clique sur une ligne de la liste celle-ci ne reste toujours pas sélectionnée après le rechargement de page.

Dans ton code, tu remplis d'une part une liste avec les noms et les prénoms et d'autre part un tableau avec les caractéristique du licencié sélectionné. Ceci je l'avais déjà fait.

Le problème reste la liste déroulante où la ligne sélectionnée ne veut pas rester sélectionnée après un rechargement de page
Messages postés
56
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
17 octobre 2009

si tu test ton script sur easy php la variable $_POST renvéra toujour cette érreur le code idéale serai de la tester avant de l'utiliser! ce qui n'est pas un problème et je ne voi pas pourquoi la ligne ne resterai pas sélectionné! c'est un copier collé d'un de mes menu déroulant!

Voila le code idéal

<?php
$sql="SELECT  *  FROM  licencies WHERE club='".$_SESSION['club']."' ' ";
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
?>
<form id="form1" name="form1"  onclick=submit() method="post" action="compet_saisie.php">
 
    <select name="numerodelicence" size="10"  style="background: #FFFFCC" >
      <?php
  
    while($val=mysql_fetch_array($req))
    {
     $licencie_nomprenom=$val['nom_lic']."&nbsp".$val['pnom_lic'];
     $licencie_num=$val['num_lic'];
    
     echo "<option value ='".$licencie_num.'"'; 
     if ( !empty($_POST['numerodelicence']) ) {
     if ( $_POST['numerodelicence'] == $licencie_num ) {
          echo " selected";
     }
     }
     echo ">".$licencie_nomprenom."</option>";
    }
    ?>
    </select>
  
</form>
<?php
// pour la partie tableau
if ( !empty($_POST['numerodelicence']) ){
$sql2="SELECT  *  FROM  licencies WHERE club='".$_SESSION['club']."' AND num_lic='".$_POST['numerodelicence']."' LIMIT 1";
$req2 = mysql_query($sql2) or die('Erreur SQL !
'.$sql2.'
'.mysql_error());
if ( $val2 = mysql_fetch_array($req2) ) {
// et la tu met toute les information tel que le nom prenom numéro sex ...
}
}
else {
echo "Vous devez sélectionner une personne licenciée";
}
?>

Donc voila a modifier a ta guise et évite d'utilise easy php ou autre mais le en ligne c'est plus directe et les variables non postées ne retourne aucune érreur car le désaventage de ce genre de logiciel c'est que tu ne peut pas utiliser les variables ou tu a défini la valeur 0 car pour ce logiciel elle seront quand meme retournée vide alors que tu les a définie!
Messages postés
9
Date d'inscription
samedi 2 juin 2007
Statut
Membre
Dernière intervention
26 juillet 2008

Bonsoir,
Me revoila de retour.
J'ai essayé ton code hélas ça ne marche pas.
J'ai fait quelques tests et j'ai constaté ceci:

- Dans l'égalité if ( $_POST['numerodelicence'] == $licencie_num )à la place de $licencie_num il faudrait peut-être $licencie_nomprenom car le $_POST['numerodelicence'] pointe un nom et un prénom ?



- D'autre part, pour forcer et tester cette egalité, jute avant j'ai inséré la ligne:$_POST['numerodelicence'] = $licencie_nomprenom );

le résultat c'est que la sélection de la ligne se met à fonctionner mais la ligne sélectionnée est la dernière quelque soit la ligne sélectionnée. 

Avec ce test, on sait au moins que, sans la forcer, l'égalité ne fonctionne pas.

Je n'arrive pas à comprendre car pour moi ton code est nickel.

<form id="form1" name="form1"  onclick=submit() method="post" action="compet_saisie.php">
 
    <select name="numerodelicence" size="10"  style="background: #FFFFCC" >
      <?php
  
    while($val=mysql_fetch_array($req))
    {
     $licencie_nomprenom=$val['nom_lic']."&nbsp".$val['pnom_lic'];
     $licencie_num=$val['num_lic'];
    
     echo "<option value ='".$licencie_num.'"'; 
    

if ( !empty($_POST['numerodelicence']) ) {
      $_POST['numerodelicence'] = $licencie_nomprenom );
     if ( $_POST['numerodelicence'] == $licencie_num ) {
          echo " selected";
     }
     }
     echo ">".$licencie_nomprenom."</option>";
    }
    ?>
    </select>
  
</form>
Messages postés
9
Date d'inscription
samedi 2 juin 2007
Statut
Membre
Dernière intervention
26 juillet 2008

Bravo ! Bravo ! Bravo !

La seule erreur qui restait était effectivement ce double cote.

C'était cette erreur qui faisait que ça ne fonctionnait pas.
Cétait cette erreur qui faisait que j'avais la moitié des licenciés qui s'afiichaient dans la liste déroulante.

Bravo pour ta persévérance. Tu ne sais pas comme ça me fait plaisir.

Merci pour ta disponibilité.
Messages postés
56
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
17 octobre 2009

En même temps c'est en copiant le code juste au dessus que j'ai remarqué! je trouvé que ma façon de coder ne ressemblait pas a ca! et comme quoi! Même si je suis bordelique je retrouve mes erreures!