Page 1 sur 1

Problème avec <select...

Posté : 17 mai 2011, 15:31
par Jonathan
Bonjour,

Je suis désolé de spamer le forum en ce moment, mais je n'y arrive vraiment pas. J'ai tout essayé (façon de parler, car j'ai évidemment pas essayé la BONNE solution) pour parvenir à mes fins, mais je ne m'en sors pas...

J'ai un champ "département" dans un formulaire, et je souhaiterais garder en mémoire le choix de l'utilisateur, s'il souhaite revenir sur la page plus tard. Or, s'il rafraichit la page, la valeur revient à la première par défaut... Voici mon code :
$val = $_SESSION['dept'];
<select name="Dept" id="Dept">

<?php
$SQL = "SELECT Dept_NomDept FROM departements";
$res = mysql_query($SQL);
while($val=mysql_fetch_array($res))
{
   echo '<option value='.$val['Dept_NomDept'].' >'.$val['Dept_NomDept'].'</option>\n';
}
?>
</select>

Re: Problème avec <select...

Posté : 17 mai 2011, 15:41
par moogli
salut,

ta solution ne semble pas la bonne :mrgreen:

la bonne solution c'est de comparée la valeur issue la table à celle qu'il y a dans la variable de session et de la tu utilise la propriété selected de l'option liste prédéfinie

@+

Re: Problème avec <select...

Posté : 17 mai 2011, 16:02
par macgawel
Bonjour.
<?php
// Bon début : on récupère la valeur gardée en session
$val = $_SESSION['dept'];?>
<select name="Dept" id="Dept">
<?php
$SQL = "SELECT Dept_NomDept FROM departements";
$res = mysql_query($SQL);
// while($val=mysql_fetch_array($res)) Là, par contre, tu viens de tuer ta variable !!!
while ($dept = mysql_fetch_array($res) ) {
   echo '<option value='.$dept['Dept_NomDept'];
   if ( $dept['Dept_NumeroDept'] == $val ) {
      // On rajoute le mot clé selected sur le département correspondant à cleui gardé en session
      echo ' selected';
   }
   echo ' >'.$dept['Dept_NomDept'].'</option>\n';
}
?>
</select>

Re: Problème avec <select...

Posté : 17 mai 2011, 16:27
par Jonathan
Ca ne marche pas avec ce code... :( Ca me met la dernière valeur présente dans la base de données (988 - Nouvelle Calédonie), et non celle que l'utilisateur a choisi précédemment...

Re: Problème avec <select...

Posté : 17 mai 2011, 16:37
par macgawel
Ca ne marche pas avec ce code... :( Ca me met la dernière valeur présente dans la base de données (988 - Nouvelle Calédonie), et non celle que l'utilisateur a choisi précédemment...
- Affiche le contenu de ta session print_r ($_SESSION);, histoire de vérifier...
- Regarde le source de la page (surtout du select :oops: ) s'il n'y a pas de truc bizarre.
- Copie le code ici, qu'on puisse voir ce qu'il donne.

Re: Problème avec <select...

Posté : 17 mai 2011, 16:43
par moogli
correction xhtml (ou jepourrais dire simplement html correcte et évitant le cas imprévue ;))
<?php
// Bon début : on récupère la valeur gardée en session
$val = $_SESSION['dept'];?>
<select name="Dept" id="Dept">
<?php
$SQL = "SELECT Dept_NomDept FROM departements";
$res = mysql_query($SQL);
// while($val=mysql_fetch_array($res)) Là, par contre, tu viens de tuer ta variable !!!
while ($dept = mysql_fetch_array($res) ) {
   echo '<option value="'.$dept['Dept_NomDept'].'"';
   if ( $dept['Dept_NumeroDept'] == $val ) {
      // On rajoute le mot clé selected sur le département correspondant à cleui gardé en session
      echo ' selected="selected"';
   }
   echo ' >'.$dept['Dept_NomDept'].'</option>'."\n";
}
?>
</select>
ce code devrais fonctionner.
sinon qu'elle est la valeur de $val (var_dump($val) pour avoir un résultat)
est ce qu'il y a bien un session_start() ? si ce n'est pas le cas il serait bon d'utiliser un niveau d'erreur adéqua au développement ;) (error_reporting(E_ALL|E_STRICT); ini_set('display_error',1);)

a quoi ressemble la source html généré ?

@+

Re: Problème avec <select...

Posté : 17 mai 2011, 16:48
par Jonathan
-Je viens de vérifier le contenu de ma variable de session. Résultat, il n'y avait rien dedans... Mais maintenant que j'ai rectifié le problème, ça ne fonctionne toujours pas
-Mon select est bon !
-Et voici le code :
$val = $_SESSION['dept'];
<select name="dept" id="dept">
<?
$SQL = "SELECT Dept_NomDept FROM departements";
$res = mysql_query($SQL);
while($dept=mysql_fetch_array($res)) {
    echo '<option value='.$dept['Dept_NomDept'];
    if ( $dept['Dept_NumeroDept'] == $val ) {
       echo ' selected';
    }
    echo ' >'.$dept['Dept_NomDept'].'</option>\n';
}
?>
</select>
C'est juste au niveau de l'affichage que ça pêche...



Même problème avec ton code, moogli.
La valeur de $val est celle que j'ai sélectionné. La valeur est bien stockée, mais je n'arrive pas à l'afficher...
Il y a bien un session_start(), à la ligne 2 de ma page !

Re: Problème avec <select...

Posté : 17 mai 2011, 16:58
par moogli
poste le code complet ainsi que le résultat généré (quand tu regarde le code source HTML a partir du navigateur).

@+

Re: Problème avec <select...

Posté : 17 mai 2011, 17:34
par Jonathan
Bon et bien ça marche, je ne sais pas comment j'ai fait mais ça marche !
<select name="dept" id="dept">
<?
$SQL = "SELECT Dept_NomDept FROM departements";
$res = mysql_query($SQL);
while($dept=mysql_fetch_array($res)) {
	if (substr($dept['Dept_NomDept'],0,2) == substr($val,0,2) ) {
	echo '<option value="'.$val.'" selected="selected">'.$val.'</option>\n';
	}
	else {
	echo '<option value="'.$dept['Dept_NomDept'].'">'.$dept['Dept_NomDept'].'</option>\n';
	}
}
?>
</select>

Merci encore à vous tous, toujours réactifs et sympas...