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 :

Présélectionner une valeur dans un lenu déroulant [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Par défaut Présélectionner une valeur dans un lenu déroulant
    Bonjour,

    Avant tout, milles excuses au cas où je n'ai pas posté au bon endroit, il y a un tel choix. ^^

    Ma question concerne les menus déroulants.

    J'en utilise un pour faire des saisies dans des fiches.
    J'ai ensuite une page d'édition de la fiche pour modifier si besoin les saisies.

    En voici une partie du code :

    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
    <?php
    include("../connect.php");
    $id = $_GET["id"];
    $sql = "SELECT * FROM table1 WHERE id_ech=$id"; 
    $req = mysql_query($sql); 
    $val = mysql_fetch_array($req);
    ?>
     
    <form name="valid" action="edit_fiche_event.php" method="get">
     
    <input name="id" type="hidden" size="70" <?php echo "value=\"".$id."\""; ?> >
     
    <p><strong>Edition : </strong></p>
    <table width="626" border="0">
     
            <td valign="top" nowrap class="infos"><strong>Contact : </strong></td>
            <td valign="middle"><strong>
     
            <input name="d2_name_ctct" type="text" size="49" <?php echo "value=\"".$val['c_name_ctct']."\""; ?>>
     
            <select name="d_name_ctct">
         	<?php
    	$nom = $val['c_name_ctct'];
            $SQL2 = "SELECT * FROM table2 order by c_ctctn ASC";
    	$result2 = mysql_query($SQL2);
            while (list($id_ctct,$c_ctctn) = mysql_fetch_row($result2)) 
    			{ 
    			echo "<option value=\"$c_ctctn\">$c_ctctn</option>\n";
    			}
    		mysql_free_result($result2);
    		?>
               </select></strong></td></tr>
    La partie "d2_name_ctct" me sert juste à rappeler la donnée (CONTACT3).
    Si je veux la modidier, je repasse par le menu déroulant et j'envoie dans la base la "d_name_ctct". Aujourd'hui quand je fais un edit, je suis obligé de réactualiser à la main tous les menus déroulants (4) pour y réafficher la valeur du premier imput car ceux-ci apparaissent avec en valeur présélectionnée la première de la liste des "c_ctctn" (CONTACT1).



    Ce que j'aimerai avoir, c'est qu'à la place de CONTACT1, là où c'est entouré en rouge, le menu déroulant soit automatiquement positionné à la bonne valeur, celle déjà saisie dans la base, c'est à dire CONTACT3 dans mon exemple ; tout en ayant accès au menu déroulant avec tous les autres choix, au cas où je veuille justement modifier cette valeur.
    Ainsi je pourrai virer le premier imput et ne pas devoir revalider ces 4 valeurs à chaque édition.
    Est-ce clair...

    J'ai testé un certains nombre d'idées, mais sans résultat.

    J'imagine que ça doit être tout bête, c'est tout le temps comme ça, mais là...

    Merci par avance !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     while ($row = mysql_fetch_array($result2)) 
    			{
                    if ($row['id_ctct'] == $val['champ_correspondant_dans_table1']) {
                           $selected= 'selected="selected"';
     
                    }
                    else {
                         $selected= '';
                      } 
    			echo '<option value="' . $id_ctct .'" ' . $selected .'>' . $c_ctctn . '</option>',"\n";
    			}
    J'ai mis $id_ctct comme value, je pense que c'est plutot ca que tu veux recuperer.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Par défaut
    Je cherche à récupérer le nom du contact en fait.

    J'ai testé avec ton code et avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
         	<?php
            $SQL2 = "SELECT * FROM table2 order by c_ctctn ASC";
            $result2 = mysql_query($SQL2);
            while ($row = mysql_fetch_array($result2)) 
    			{
                    if ($row['c_ctctn'] == $val['c_name_ctct']) {
                        $selected= 'selected="selected"'; 
                    }
                    else {
                        $selected= '';
                    } 
                echo '<option value="' . $c_ctctn .'" ' . $selected .'>' . $c_ctctn . '</option>',"\n";
    			}
    Ça remonte un menu vide, mais il apparait en sélectionné la zone où devrait se situer le nom du contact dans le menu.



    Ça bug au niveau de l'eccho ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    je suis une truffe c'est tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo '<option value="' . $row['c_ctctn'] .'" ' . $selected .'>' . $row['c_ctctn'] . '</option>',"\n";
    Attention c'est quand même plus sur de travailler avec les id comme "value".
    Imagine qu'un contact s'appelle 'Roger d"argent', tu vas obtenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value="Roger d" argent ">
    Tu vois le problème : argent se retrouve perdu en dehors de ta value.
    Pour éviter ça il faudrait recourir a htmlspecialchars() en entrée et htmlspecialchars_decode() en sortie, un vrai mic-mac.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value="3">Roger d"argent</option>
    ca marche a tous les coups.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Par défaut
    Pas une truffe, mon sauveur.

    Après test ce matin ça m'a tout l'air de marcher !
    Big merci.

  6. #6
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Par défaut
    Je confirme, ça marche sur l'ensemble des menus d'édition.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/07/2014, 12h24
  2. Réponses: 2
    Dernier message: 09/02/2011, 14h39
  3. Présélectionner une valeur par défaut dans liste déroulante
    Par kate59 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 25/07/2009, 22h52
  4. Requête prenant une valeur dans un menu déroulant
    Par skerboeu dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 06/12/2008, 11h44
  5. Réponses: 7
    Dernier message: 27/05/2008, 13h59

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