IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

sélect et conserver la sélection


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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>';

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    Par défaut
    je ne suis pas sur de bien comprendre la question, cependant le selected="selected" doit être situé dans le <option>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <option selected="selected">blabla</option>

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <option selected="selected">blabla</option>
    J'ai mis ma ligne dans option et l'écran est vide maintenant

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    Par défaut
    tu as quelque chose comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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";

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Par défaut
    Citation Envoyé par numew Voir le message
    tu as quelque chose comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    Par défaut
    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é." ?...

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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>';
    			?>

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  9. #9
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    Par défaut
    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.

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    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)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  11. #11
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Bonjour,
    Un exemple de liste déroulante avec la valeur choisie qui reste après le submit du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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>

  12. #12
    Membre éprouvé Avatar de arthak
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 91
    Par défaut
    Moi j'ai ma petite fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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");

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Par défaut
    $choix à la bonne information
    mais mon echo sur val n'affiche rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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>';
    			?>

  14. #14
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    Par défaut
    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.

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 487
    Par défaut
    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.

Discussions similaires

  1. Conserver la sélection d'une Listbox
    Par Mairequimby dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/04/2012, 22h44
  2. [AC-2003] Conserve la sélection d'une ligne dans un treeview
    Par lio33 dans le forum IHM
    Réponses: 3
    Dernier message: 18/03/2010, 14h10
  3. Réponses: 3
    Dernier message: 15/02/2010, 09h34
  4. Conserver la sélection d'un contrôle
    Par soso78 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 28/03/2007, 21h32
  5. Réponses: 1
    Dernier message: 10/09/2006, 05h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo