Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/05/2008, 14h27   #1
Membre du Club
 
Yvan Fournier
Inscription : juin 2005
Messages : 234
Détails du profil
Informations personnelles :
Nom : Yvan Fournier

Informations forums :
Inscription : juin 2005
Messages : 234
Points : 41
Points : 41
Par défaut sélect et conserver la sélection

Bonjour,

J'ai une liste déroulante qui permet d'afficher les statuts disponibles.

Après avoir cliquer sur afficher la liste, le choix n'est pas conservé.

J'ai essayé de mettre un sélected mais ça ne fonctionne pas.

J'aimerais un peu d'aide sur ce point.

Merci!

Code :
1
2
3
4
5
6
7
8
				echo '<FORM action="statut.php?" METHOD="GET">';
				echo '<p align="center"><select name="statut">';
				while(ora_fetch_into($cur,$val))
        {
					echo "<option>".htmlspecialchars($val[0])."</option>\n";
				  if($choix == $val[0]) {echo ' selected="selected"';}
				}
				echo '</select>';
fourniey est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 14h33   #2
Membre actif
 
Inscription : janvier 2008
Messages : 170
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2008
Messages : 170
Points : 175
Points : 175
Envoyer un message via MSN à numew
je ne suis pas sur de bien comprendre la question, cependant le selected="selected" doit être situé dans le <option>

Code :
1
2
 
<option selected="selected">blabla</option>
numew est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 14h42   #3
Membre du Club
 
Yvan Fournier
Inscription : juin 2005
Messages : 234
Détails du profil
Informations personnelles :
Nom : Yvan Fournier

Informations forums :
Inscription : juin 2005
Messages : 234
Points : 41
Points : 41
Citation:
Envoyé par numew Voir le message
je ne suis pas sur de bien comprendre la question, cependant le selected="selected" doit être situé dans le <option>

Code :
1
2
 
<option selected="selected">blabla</option>
J'ai mis ma ligne dans option et l'écran est vide maintenant
fourniey est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 14h48   #4
Membre actif
 
Inscription : janvier 2008
Messages : 170
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2008
Messages : 170
Points : 175
Points : 175
Envoyer un message via MSN à numew
tu as quelque chose comme ça ?
Code :
1
2
3
4
5
6
7
8
9
10
 
if($choix == $val[0]) 
{
$selected='selected="selected"';
}
else
{
$selected='';
}
echo "<option ".$selected.">".htmlspecialchars($val[0])."</option>\n";
numew est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 15h13   #5
Membre du Club
 
Yvan Fournier
Inscription : juin 2005
Messages : 234
Détails du profil
Informations personnelles :
Nom : Yvan Fournier

Informations forums :
Inscription : juin 2005
Messages : 234
Points : 41
Points : 41
Citation:
Envoyé par numew Voir le message
tu as quelque chose comme ça ?
Code :
1
2
3
4
5
6
7
8
9
10
 
if($choix == $val[0]) 
{
$selected='selected="selected"';
}
else
{
$selected='';
}
echo "<option ".$selected.">".htmlspecialchars($val[0])."</option>\n";
Avec ce code, l'affichage est ok mais ma liste déroulante affiche la première option au lieu de conserver celle sélectionnée.
fourniey est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 15h50   #6
Membre actif
 
Inscription : janvier 2008
Messages : 170
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2008
Messages : 170
Points : 175
Points : 175
Envoyer un message via MSN à numew
Alors il faudrait en savoir un peu plus, d'où sort la variable $choix ? qu'entend tu pat "Après avoir cliquer sur afficher la liste, le choix n'est pas conservé." ?...
numew est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 15h57   #7
Membre du Club
 
Yvan Fournier
Inscription : juin 2005
Messages : 234
Détails du profil
Informations personnelles :
Nom : Yvan Fournier

Informations forums :
Inscription : juin 2005
Messages : 234
Points : 41
Points : 41
Merci de ton aide!

1) Je fais un choix dans la liste déroulante
2) je clique afficher pour voir le résultat
3) je voudrais que ma liste déroulante affiche mon choix.

Voilà!



Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
			<?php
			 $choix=$_GET['statut'];
			 //echo 'Choix : '.$choix;
				$statut = mysql_real_escape_string($_GET['statut']);
				$conn = Ora_Logon("php_fondation@prod", "fokilfas") or die(Ora_Error($conn));
				$cur = ora_open($conn) or die(Ora_Error($conn));
				ora_parse($cur,"SELECT distinct STATUT FROM FON_PHP_STATUT_VUE",$x) or die(Ora_Error($conn)); 
				ora_exec($cur) or die(Ora_Error($conn));
					echo '<FORM action="statut.php?" METHOD="GET">';
				echo '<p align="center">Liste disponible : <select name="statut">';
				//echo 'Valeur : '.$val[0];		
    		while(ora_fetch_into($cur,$val)) {
  				if($choix == $val[0]) 
          {
            $selected='selected="selected"';
          }
          else
          {
            $selected='';
          }
          echo "<option ".$selected.">".htmlspecialchars($val[0])."</option>\n";
 
				}
				echo '</select>';
				echo '<INPUT TYPE="submit" VALUE="Afficher la liste"></p>';
				echo '</FORM>';
			?>
fourniey est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 16h02   #8
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 453
Points : 5 453
EUh... c'est normal qu'il n'y ait pas d'attribut value dans tes option ?
Normalement un select s'écrit comme ça :
Code html :
1
2
3
4
5
<select name="le_nom_du_select">
  <option value="valeur_option1" selected="selected">option 1</option>
  <option value="valeur_option2">option 2</option>
  <option value="valeur_option3">option 3</option>
</select>
Sans value, ton select ne transmet rien...
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 16h08   #9
Membre actif
 
Inscription : janvier 2008
Messages : 170
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2008
Messages : 170
Points : 175
Points : 175
Envoyer un message via MSN à numew
Oui en principe il faut l'attribut value, même si je pense que par défaut il transmet ce qu'il y'à entre le <option> et le </option>.

le code devrait fonctionner, fait un echo de $choix et de $val[0] pour voir si ils sont bien identiques, et qu'ils n'y a pas de différence à cause des htmlspecialchars ou autres.
numew est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 16h17   #10
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 453
Points : 5 453
Citation:
Envoyé par numew Voir le message
Oui en principe il faut l'attribut value, même si je pense que par défaut il transmet ce qu'il y'à entre le <option> et le </option>.
Tu arrives à faire marcher une option sans value ? Pour autant que je sache, si il n'y a pas de value, il n'y a pas de valeur transmise....
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 16h27   #11
Membre Expert
 
Avatar de Jumano
 
Inscription : février 2007
Messages : 1 162
Détails du profil
Informations personnelles :
Âge : 43
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : février 2007
Messages : 1 162
Points : 1 369
Points : 1 369
Bonjour,
Un exemple de liste déroulante avec la valeur choisie qui reste après le submit du formulaire :
Code :
1
2
3
4
5
6
7
<form id="form" name="form" method="post" action="">
  <select name="test" id="test">
    <option value="1" <?php if (!(strcmp(1, $_GET['test']))) {echo "selected=\"selected\"";} ?>>1</option>
    <option value="2" <?php if (!(strcmp(2, $_GET['test']))) {echo "selected=\"selected\"";} ?>>2</option>
    <option value="3" <?php if (!(strcmp(3, $_GET['test']))) {echo "selected=\"selected\"";} ?>>3</option>
  </select>
</form>
Jumano est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 17h00   #12
Membre régulier
 
Avatar de arthak
 
Développeur informatique
Inscription : mai 2008
Messages : 91
Détails du profil
Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mai 2008
Messages : 91
Points : 86
Points : 86
Moi j'ai ma petite fonction :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
function select_me($name,$arr,$var=0,$defaut=0,$choix="-- choisir --")
{
	// teste l'existance d'une var pour arr
	if ($var=="") {
		$var = $defaut;
	}
 
	// on ajoute une entrée dans le tableau avec le choix
	array_unshift  ($arr,$choix);
 
	// on initialise le buffer de sortie
	$buff = "<select name='$name'>";
 
	// on compte le nombre de champs du tableau
	$tot = count($arr);
 
	// et c'est parti pour une boucle
      for($i = 0; $i < $tot; $i++)
      {
      	//on remplace le 0 du champ choix par NULL (ou pas)
      	//$u = $i == 0 ? "" : $i ;
      	$u = $i;
 
        $selected = $var == $i ? 'selected="selected"' : '';
 
        $buff .= '<option value="'.$u.'" '.$selected.'>'.$arr[$i].'</option>'."\n\r";
        $buff .= '</select>';
      }
 
      return $buff;
}
pour l'utiliser par exemple avec la page toto.php?val=1 (donne tomate) :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
 
$val_sauver = !isset($_GET['val']) ? "" : $_GET['val'];
 
$fruits = array('tomates','courgettes','poivrons');
echo select_me('fruits',$fruits,$val_sauver);
 
// ou avec valeur par défaut 'tomates'
echo select_me('fruits',$fruits,$val_sauver,1);
 
// et / ou changer le texte par défaut pour la valeur nulle
echo select_me('fruits',$fruits,$val_sauver,1,"Choisi par ici");
arthak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 17h38   #13
Membre du Club
 
Yvan Fournier
Inscription : juin 2005
Messages : 234
Détails du profil
Informations personnelles :
Nom : Yvan Fournier

Informations forums :
Inscription : juin 2005
Messages : 234
Points : 41
Points : 41
$choix à la bonne information
mais mon echo sur val n'affiche rien.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
			<?php
			 $choix=$_GET['statut'];
			 //echo 'Choix : '.$choix;
				$statut = mysql_real_escape_string($_GET['statut']);
				$conn = Ora_Logon("php_fondation@prod", "fokilfas") or die(Ora_Error($conn));
				$cur = ora_open($conn) or die(Ora_Error($conn));
				ora_parse($cur,"SELECT distinct STATUT FROM FON_PHP_STATUT_VUE",$x) or die(Ora_Error($conn)); 
				ora_exec($cur) or die(Ora_Error($conn));
 
				echo '<FORM action="statut.php?" METHOD="GET">';
				echo '<p align="center">Liste disponible : <select name="statut">';
 
 
    		while(ora_fetch_into($cur,$val)) {
    		  echo $val[0];	
  				if($choix == $val[0]) 
          {
            $selected='selected="selected"';
          }
          else
          {
            $selected='';
          }
          echo "<option ".$selected.">".htmlspecialchars($val[0])."</option>\n";
 
				}
 
				echo '</select>';
				echo '<INPUT TYPE="submit" VALUE="Afficher la liste"></p>';
				echo '</FORM>';
			?>
fourniey est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 18h02   #14
Membre actif
 
Inscription : janvier 2008
Messages : 170
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : janvier 2008
Messages : 170
Points : 175
Points : 175
Envoyer un message via MSN à numew
Citation:
Tu arrives à faire marcher une option sans value ? Pour autant que je sache, si il n'y a pas de value, il n'y a pas de valeur transmise....
C'est certainement pas valide, et çà ne marche peut être pas avec tout les navigateurs, donc il ne faut pas le faire mais après vérification, c'est bien la valeur prise entre <option> et </option> qui est transmise dans ce cas.

Pour la question, ton problème viens donc de la valeur $val[0], fait des tests, il est difficile de t'aider.
numew est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 18h16   #15
Membre du Club
 
Yvan Fournier
Inscription : juin 2005
Messages : 234
Détails du profil
Informations personnelles :
Nom : Yvan Fournier

Informations forums :
Inscription : juin 2005
Messages : 234
Points : 41
Points : 41
Citation:
Envoyé par numew Voir le message
C'est certainement pas valide, et çà ne marche peut être pas avec tout les navigateurs, donc il ne faut pas le faire mais après vérification, c'est bien la valeur prise entre <option> et </option> qui est transmise dans ce cas.

Pour la question, ton problème viens donc de la valeur $val[0], fait des tests, il est difficile de t'aider.
J'ai fait pas mal de tests depuis 3 heures.
fourniey est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h45.


 
 
 
 
Partenaires

Hébergement Web