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

PHP & Base de données Discussion :

Réafficher sélection dans une liste déroulante [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    GYK
    GYK est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Par défaut Réafficher sélection dans une liste déroulante
    Bonjour,
    Je génere une liste déroulante avec le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    		    echo '<select class="nom" size=1 name=nomsel >'."\n";  
     
    		   	mysql_select_db($database_connection, $connection);
    			$SQLsel = "SELECT Prenom, Nom FROM fichier WHERE substr(Nom,1,1) = '$initial' ORDER BY trim(Nom) ASC, trim(Prenom) ASC" ;
    			$ressel = mysql_query($SQLsel) or die('Erreur SQLsel : '.mysql_error());
     
    			while ($resultat = mysql_fetch_row($ressel))
    			{
     
    			echo   '<option  value="'.$resultat[0].';'.$resultat[1].';'.$resultat[2].'">'.$resultat[1]. ' ' .$resultat[0].'</option>'."\n";
     
    			} 
     
       			echo '</select>'."\n";
    Comme je retourne dans le php et que je raffiche ma liste déroulante, j'aimerais réafficher la selection qui à été faite précédement.
    C'est possible, mais comment ?
    Quelqu'un peut'il m'aider.
    Merci

  2. #2
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Si j'ai bien compris,
    voici un petit exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <form action="" method="post">
    <select name="selection">
    	<?php 
    	for ($i=0; $i<5; $i++) {
    	?>
    	<option value="<?php echo $i; ?>" <?php if (isset($_POST['selection']) && $_POST['selection'] == $i ) echo 'selected="selected"'?>>
    	choix <?php echo $i; ?> 
    	</option>
    	<?php 
    	}
    	?>
    </select>
    <input type="submit" name="valider" value="valider"/>
    </form>
    Dans lequel le code important me paraît être celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_POST['selection']) && $_POST['selection'] == $i ) echo 'selected="selected"'
    Fred

  3. #3
    GYK
    GYK est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Par défaut
    Merci micetf,

    Je testerais ca demain, ce soir peux pas.
    Je te tiens au courant

  4. #4
    GYK
    GYK est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Par défaut
    Bonjour micetf,

    D'abord 2 questions sans doute pour toi completement idiote. Par rapport au script que tu met en exemple.
    Dans ta boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for ($i=0; $i<5; $i++)
    Tu ne remet pas $i à 0 à chaque passage?
    Dans le code important
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (isset($_POST['selection']) && $_POST['selection'] == $i ) echo 'selected="selected"'
    Il n'y à pas d'accolade dans ton if c'est normal ?

    Moi j'ai fais ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    			echo   '<option class="Profs" value="'.$resultat[0].';'.$resultat[1].';'.$resultat[2].' " '  if (isset($_POST['nomsel']) && $_POST['nomsel'] == ' '.$resultat[0].';'.$resultat[1].';'.$resultat[2].'') echo 'selected="selected"' ' > ' .$resultat[1]. ' ' .$resultat[0] . '</option>'."\n";
    (avec ou sans {})
    et j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Parse error: syntax error, unexpected T_IF, expecting ',' or ';' in /mnt/140/sdc/f/f/xxx.php on line 156
    Ca te dit quelque chose ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 12
    Par défaut
    Salut à tous, je me permet de tenter une réponse ^^

    Je crois que tu t'es bien emmêler les pinceaux dans cette ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo   '<option class="Profs" value="'.$resultat[0].';'.$resultat[1].';'.$resultat[2].' " '  if (isset($_POST['nomsel']) && $_POST['nomsel'] == ' '.$resultat[0].';'.$resultat[1].';'.$resultat[2].'') echo 'selected="selected"' ' > ' .$resultat[1]. ' ' .$resultat[0] . '</option>'."\n";

    Alors ce que je vois qui pourrait poser problème :

    Pourquoi concaténes tu des variables avec espaces vide..?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    && $_POST['nomsel'] == ' '.$resultat[0]
    et :
    Sinon la tu n'est pas obligé de concaténer vu que la totalité est du texte :
    au lieu de
    Je dois avouer que tu m'as pommé avec toutes tes quottes / guillemets.

    Essaye de reprendre ton code en commençant ton echo par une guillemet, je trouve que c'est plus clair : echo " code.'html' ";

  6. #6
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Citation Envoyé par GYK Voir le message
    Dans ta boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for ($i=0; $i<5; $i++)
    Tu ne remet pas $i à 0 à chaque passage?
    Le code ci-dessus signifie :
    Depuis $i=0, tant que $i est plus petit que 5, en rajoutant 1 à $i à chaque fin de boucle, faire ...
    Citation Envoyé par GYK Voir le message
    Dans le code important
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (isset($_POST['selection']) && $_POST['selection'] == $i ) echo 'selected="selected"'
    Il n'y à pas d'accolade dans ton if c'est normal ?
    Les accolades sont facultatives lorsqu'il n'y a qu'une instruction.
    Citation Envoyé par GYK Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    			echo   '<option class="Profs" value="'.$resultat[0].';'.$resultat[1].';'.$resultat[2].' " '  if (isset($_POST['nomsel']) && $_POST['nomsel'] == ' '.$resultat[0].';'.$resultat[1].';'.$resultat[2].'') echo 'selected="selected"' ' > ' .$resultat[1]. ' ' .$resultat[0] . '</option>'."\n";
    (avec ou sans {})
    et j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Parse error: syntax error, unexpected T_IF, expecting ',' or ';' in /mnt/140/sdc/f/f/xxx.php on line 156
    Ca te dit quelque chose ?
    Tu fais un echo d'une chaine de caractères, mais à l'intérieur de cette chaine, tu places du PHP. Avant le if, le parseur attend un point virgule.
    Voici une solution pour cette ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $selected = (isset($_POST['nomsel']) && $_POST['nomsel'] == ' '.$resultat[0].';'.$resultat[1].';'.$resultat[2].'') ? 'selected="selected"' : null;
    $option = '<option class="Profs" value="'.$resultat[0].';'.$resultat[1].';'.$resultat[2].'" ' .$selected. ' />';
    $option .= $resultat[1]. ' ' .$resultat[0];
    $option .= '</option>'."\n";
    echo $option;
    Fred

  7. #7
    GYK
    GYK est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Par défaut
    Bopnjour et merci à vous deux

    Pour neeko71
    && $_POST['nomsel'] == ' '.$resultat[0]
    Je concatene pas la quote me sert pour que la suite soit interprété en code et pas en texte (c'est tout ce que j'avais trouvé, j'y connais pas grand chose)

    Pour Fred,
    Je te joins mon code select complet que j'avais abréger pour ne pas surcharger l'esprit étant quand même là et modifier avec tes infos.

    Mais ca marche pas !


    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
     
    		    echo '<select class="Eleves" size=1 name=nomsel >'."\n";  
     
    		   	mysql_select_db($database_connection, $connection);
    			$SQLsel = "SELECT Prenom, Nompat, Numero, Profs, DCD, Invitation, refuse FROM fichier WHERE substr(Nompat,1,1) = '$initial' ORDER BY trim(Nompat) ASC, trim(Prenom) ASC" ;
    			$ressel = mysql_query($SQLsel) or die('Erreur SQLsel : '.mysql_error());
     
    			while ($resultat = mysql_fetch_row($ressel))
    			{
    			if ($resultat[3] == 1)
    			{ 
    			$selected = (isset($_POST['nomsel']) && $_POST['nomsel'] == ' '.$resultat[0].';'.$resultat[1].';'.$resultat[2].';'.$resultat[3].';'.$resultat[4].';'.$resultat[5].';'.$resultat[6].'') ? 'selected="selected"' : null;
    $option = '<option class="Profs" value="'.$resultat[0].';'.$resultat[1].';'.$resultat[2].';'.$resultat[3].';'.$resultat[4].';'.$resultat[5].';'.$resultat[6].'" ' .$selected. ' />';
    $option .= $resultat[1]. ' ' .$resultat[0];
    $option .= '</option>'."\n";
    echo $option;	
    			}
    			else
    			{
    			$selected = (isset($_POST['nomsel']) && $_POST['nomsel'] == ' '.$resultat[0].';'.$resultat[1].';'.$resultat[2].';'.$resultat[3].';'.$resultat[4].';'.$resultat[5].';'.$resultat[6].'') ? 'selected="selected"' : null;
    $option = '<option class="Eleve" value="'.$resultat[0].';'.$resultat[1].';'.$resultat[2].';'.$resultat[3].';'.$resultat[4].';'.$resultat[5].';'.$resultat[6].'" ' .$selected. ' />';
    $option .= $resultat[1]. ' ' .$resultat[0];
    $option .= '</option>'."\n";
    echo $option;
    			}
     
     
    			} 
     
       			echo '</select>'."\n";
    Je reprendrais le fil en fin d'après-midi quand je rentrerais. Excusez-moi

    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ODBC] Garder une saisie après sélection dans une liste déroulante
    Par nawak.seb dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 27/08/2008, 14h48
  2. forcer la sélection dans une liste déroulante avec firefox
    Par Pierre Eric dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/06/2008, 06h26
  3. Sélection dans une liste déroulante
    Par DaisyVIP dans le forum ASP.NET
    Réponses: 11
    Dernier message: 30/05/2007, 13h00
  4. Réponses: 2
    Dernier message: 02/03/2007, 22h20
  5. obliger sélection dans une liste déroulante
    Par doyle01 dans le forum Access
    Réponses: 4
    Dernier message: 15/05/2006, 15h31

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