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 :

Formulaire :Réafficher la valeur d'un select


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut Formulaire :Réafficher la valeur d'un select
    Bonjour,

    Dans mon formulaire j'ai un select rempli avec une requete.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if (isset($_POST['nationalite']))	$nationalite=$_POST['nationalite'];
    else $nationalite="";
    ....
    <td valign="top" align="right"><select name='nationalite_film' style='width:150px; font-size:13px'>
    	<option value=''></option>
    <?php
    $sql = mysql_query("SELECT * FROM nationalite ORDER BY nationalite");
    while ($row = mysql_fetch_array($sql))
    {
    	$nationalite = stripslashes(htmlentities(trim($row['nationalite'])));
    	?><option value='<?php echo $row['id_nationalite']?>'><?php echo "$nationalite";?></option><?php
    }
    ?></select><td>";
    Je voudrais afficher dans ce select le texte sélectionné quand on valide le formulaire.

    Merci d'avance

  2. #2
    Membre actif Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Points : 221
    Points
    221
    Par défaut
    Je comprend pas du tout ce que tu veux faire, tu peux être plus clair ? Dans quel contexte, quel est le but du script ?

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Quand je complète le select avec une requete j'ai le résultat suivant :
    <option value="1">français</option>
    <option value="2">anglais</opttion>

    <option value="n">nationalité</option>

    Quand je sélectionne une nationalité et que je valide le formulaire, je veux réafficher dans le select la nationalité sélectionnée.
    Le problème est que j'ai n enregistrements.

    J'espère que c'est plus clair.

  4. #4
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while ($row = mysql_fetch_array($sql))
    {
            if($row['nationalite'] == $nationalite) $selected = ' selected="selected"'
            else $selected = '';
    	?><option value="<?php echo $row['id_nationalite']?>" <?php echo $selected; ?>><?php echo stripslashes(htmlentities(trim($row['nationalite'])));?></option><?php
    }

    Conseil : Pour les propriétés des balises HTML toujours utiliser des doubles cotes
    Zend PHP5 Certification
    MySQL 4 Core Certification

  5. #5
    Membre actif Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Points : 221
    Points
    221
    Par défaut
    Donc en fait la page de traitement de ton formulaire est la même que la page dans laquelle il est.

    Et tu veux qu'après avoir validé le formulaire il se ré affiche en sélectionnant par défaut la nationalité que tu avais sélectionné précédemment ?

    Ben dans ce cas lors du remplissage du formulaire tu peux tout simplement tester si la valeur que renvoi ta BDD est là même que celle reçue en POST.
    Si c'est le cas tu utilise l'attribut selected de la balise option pour cette nationalité là.

  6. #6
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Citation Envoyé par Gats Voir le message
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while ($row = mysql_fetch_array($sql))
    {
            if($row['nationalite'] == $nationalite) $selected = ' selected="selected"'
            else $selected = '';
    	?><option value="<?php echo $row['id_nationalite']?>" <?php echo $selected; ?>><?php echo stripslashes(htmlentities(trim($row['nationalite'])));?></option><?php
    }

    Conseil : Pour les propriétés des balises HTML toujours utiliser des doubles cotes
    J'ai testé ton code. Dans la liste j'ai 2 fois les valeurs mais la valeur sélectionnée n'est pas réaffichée à la validation du formulaire.

  7. #7
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    Je te l'écris de manière général :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    while($row = mysql_fetch_assoc($res)
    {
       if($valeur_du_post == $row['db']) $selected = ' selected="selected"';
       else $selected = '';
     
       echo '<option value="'.$row['db'].'" '.$selected.'>'.$row['db'].'</option>'
    }


    dans ton code il y une différence entre :

    $_POST['nationalite'] et name="nationalite_film"
    Zend PHP5 Certification
    MySQL 4 Core Certification

  8. #8
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    J'ai beau tourner tout ça dans les sens je n'y arrive pas
    mon code modifié
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <td valign="top" align="right"><select name='nationalite_film' style='width:150px; font-size:13px'>
    <option value=''></option>
    <?php
    $sql = mysql_query("SELECT * FROM nationalite ORDER BY nationalite");
    while($row = mysql_fetch_assoc($res))
    {
            if($_POST['nationalite_film'] == $row['id_nationalite']) $selected = ' selected="selected"';
            else $selected = '';
    	?><option value="<?php echo $row['id_nationalite']?>" <?php echo $selected; ?>><?php echo stripslashes(htmlentities(trim($row['nationalite'])));?></option><?php
    }
    ?></select><td></td>
    les 2 champs de ma table nationalite sont :
    id_nationalite
    nationalite

    le code ci-dessus n'affiche rien dans le select

  9. #9
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Bon alors voilà j'ai essayé ça :
    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
    echo "<br /><select name='nationalite'>
    <option value=''></option>";
    	$sql = mysql_query("SELECT * FROM nationalite ORDER BY nationalite");
    	while ($row = mysql_fetch_array($sql))
    	{
            	$id = $row['id_nationalite'];
    		$nat = $row['nationalite'];
    		if ($_GET['nationalite']==$id){
    			$selection='selected="selected"';
    			echo "<option value='$id; $selection;'><$nat</option>";
    		}
    		else {
    			echo "<option value='$id;'><$nat</option>";
    		}
    	}
    echo "</select><br />
    </form>";
    dans le select j'ai ce message :[/code]Undifined index:nationalite ....ligne 235[/code]


    J'ai vraiment besoin d'aide, je rame la dessus depuis des heures.

  10. #10
    Membre actif Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Points : 221
    Points
    221
    Par défaut
    Déjà je comprend pas bien pourquoi tu met des ; aprés tes variables ni pourquoi tu met selection dans valeur de l'attribut value (balise option) ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<option value='$id; $selection;'><$nat</option>";
    Ensuite je suppose que tu valide ton formulaire par méthode POST donc tu dois utiliser $_POST['nationalite'].

    Essaye plutôt ça :
    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
    echo "<br /><select name='nationalite'>
    <option value=''></option>";
    	$sql = mysql_query("SELECT * FROM nationalite ORDER BY nationalite");
    	while ($row = mysql_fetch_array($sql))
    	{
            	$id = $row['id_nationalite'];
    		$nat = $row['nationalite'];
    		if ($_POST['nationalite']==$id){
    			$selection="selected='selected'";
    			echo "<option value='$id' $selection'>$nat</option>";
    		}
    		else {
    			echo "<option value='$id;'>$nat</option>";
    		}
    	}
    echo "</select><br />
    </form>";

  11. #11
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Merci
    J'ai essayé sur tous les select de mon formulaire et c'est ok

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

Discussions similaires

  1. [2.x] Récupération de la valeur d'un select dans un formulaire
    Par oromeyer dans le forum Symfony
    Réponses: 3
    Dernier message: 10/01/2013, 20h21
  2. Réponses: 5
    Dernier message: 29/09/2011, 16h55
  3. Réafficher un formulaire avec les valeurs déjà saisies
    Par lebanner82 dans le forum Langage
    Réponses: 3
    Dernier message: 22/06/2009, 13h41
  4. Réponses: 10
    Dernier message: 14/03/2008, 18h10
  5. [formulaire] Récuperer la valeur d'un select dans une variable
    Par Despec dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 03/11/2006, 15h45

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