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écupérer données d'un champ Mysql dans une liste déroulante [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Septembre 2009
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Septembre 2009
    Messages : 458
    Par défaut Récupérer données d'un champ Mysql dans une liste déroulante
    Bonjour,

    Je vous explique mon problème.

    Lorsque j'entre des informations multi-champs, ceux-ci sont sauvegardés en Mysql, cependant j'ai une liste déroulante qui affiche les données venant d'une autre table (table club); l'ajout se passe bien, ainsi que l'affichage mais lorsque je retourne dans ce formulaire pour modifier l'enregistrement, tous les champs sont bien transmis sauf la liste déroulante qui affiche toujours le premier de la liste et non celui que j'ai sélectionné lors du premier ajout.

    Voici une démonstration avec deux captures d'écrans.

    Nom : 1.png
Affichages : 3938
Taille : 5,9 KoNom : 2.png
Affichages : 4021
Taille : 5,7 Ko

    Je pense que mon soucis ce situe ici ?
    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
    <tr> 
    				<td>Nom du Club:</td>
    					<td><select name="fk_club">
     
    				<?php 
     
    						while($data = mysqli_fetch_array($reso)) 
    							{ 
    						?>	
     
    						<option value="<?php echo $data['pk_club']?>"><?php echo $data['nom_club']?></option>
     
    						<?php }
     
    						?>
    					</select></td>
    				</tr>

    Voici mon code complet

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    <?php
    // including the database connection file
    include_once("config_bd.php");
     
    if(isset($_POST['update']))
    {	
     
    	$pk_membre = mysqli_real_escape_string($mysqli, $_POST['pk_membre']);
     
    	$nom_membre = mysqli_real_escape_string($mysqli, $_POST['nom_membre']);
    	$prenom_membre = mysqli_real_escape_string($mysqli, $_POST['prenom_membre']);
    	$dateNaissance_membre  = mysqli_real_escape_string($mysqli, $_POST['dateNaissance_membre']);
    	$fk_club = mysqli_real_escape_string($mysqli, $_POST['fk_club']);	
     
     
    	if(empty($nom_membre) || empty($prenom_membre) || empty($dateNaissance_membre) || empty($fk_club)){	
     
    		if(empty($nom_membre)) {
    			echo "<font color='red'>Le nom du membre est vide.</font><br/>";
    		}
     
    		if(empty($prenom_membre)) {
    			echo "<font color='red'>Le prenom du membre est vide.</font><br/>";
    		}	
     
    		if(empty($dateNaissance_membre)) {
    			echo "<font color='red'>La date de naissance du membre est vide.</font><br/>";
    		}	
     
    		if(empty($fk_club)) {
    			echo "<font color='red'>Le fk club est vide.</font><br/>";
    		}
     
    	} else {	
    		//updating the table
    		$result = mysqli_query($mysqli, "UPDATE membres SET nom_membre='$nom_membre',prenom_membre='$prenom_membre', dateNaissance_membre='$dateNaissance_membre', fk_club='$fk_club' WHERE pk_membre=$pk_membre");
     
    		//redirectig to the display page. In our case, it is index.php
    		header("Location: vue_membre.php");
    	}
    }
     
     
    //getting id from url
    $pk_membre = $_GET['pk_membre'];
     
    //selecting data associated with this particular id
    $result = mysqli_query($mysqli, "SELECT * FROM membres WHERE pk_membre=$pk_membre");
     
    while($res = mysqli_fetch_array($result))
    {
    	$nom_membre = $res['nom_membre'];
    	$prenom_membre = $res['prenom_membre'];
    	$dateNaissance_membre = $res['dateNaissance_membre'];
    	$fk_club = $res['fk_club'];
    }
     
    // requete pour la liste déroulante
    $reso = mysqli_query($mysqli,"SELECT pk_club,nom_club FROM clubs"); 
     
    ?>
    <html>
    <head>	
     
    </head>
    	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Palais des Sports</title>
        <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
        <link rel="stylesheet" type="text/css" href="style/style1.css">
    <body>	
     
    	<div class="bandeau-bleu">
        <h2>Palais des Sports</h2>
        <a href="index.php?logout='1'"><i class="material-icons">&#xe897;</i></a>
        <a href="welcome.php"><i class="material-icons">&#xE88A;</i></a>
    	</div>
     
    	<div class="form_encodage">
    		<a href="vue_membre.php"><h3>Cliquez ici pour afficher les enregistrements</h3></a>
    	<br />
    		<h4> Editer un enregistrement</h4><br />
     
    	<form name="form1" method="post" action="edit_membre.php">
    		<table border="0">
    			<tr> 
    				<td>Nom du Membre:</td>
    				<td><input type="text" name="nom_membre" value="<?php echo $nom_membre;?>"></td>
    			</tr>
     
    			<tr> 
    				<td>Prenom du Membre:</td>
    				<td><input type="text" name="prenom_membre" value="<?php echo $prenom_membre;?>"></td>
    			</tr>
     
    			<tr> 
    				<td>Date Naissance du Membre:</td>
    				<td><input type="text" name="dateNaissance_membre" value="<?php echo $dateNaissance_membre;?>"></td>
     
    			<tr> 
    				<td>Nom du Club:</td>
    					<td><select name="fk_club">
     
    				<?php 
     
    						while($data = mysqli_fetch_array($reso)) 
    							{ 
    						?>	
     
    						<option value="<?php echo $data['pk_club']?>"><?php echo $data['nom_club']?></option>
     
    						<?php }
     
    						?>
    					</select></td>
    				</tr>
     
            </td></tr>
    				<td><input type="submit" name="update" class="bouton_bleu" value="Update"></td>
    				<td><input type="hidden" name="pk_membre" value=<?php echo $_GET['pk_membre'];?>></td>
     
    			</tr>
    		</table>
    	</form>
    </div>
    </body>
    </html>
    Pourriez-vous m'aider afin que cette liste déroulante affiche le bon élément lorsque je retourne dans le formulaire pour effectuer une modification?

    D'avance merci

  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
    C'est sûr que si tu n'as rien écrit pour mettre une valeur selectionnée, ça ne va pas se faire tout seul :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while($data = mysqli_fetch_array($reso)) 
    	{ 
    	$selected = $data['pk_club'] == $valeur_de_la_bdd ? ' selected="selected" ' : '';
    ?>	
    	<option value="<?php echo $data['pk_club']; ?>"<?php echo $selected; ?>><?php echo $data['nom_club']?></option>
    <?php }
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Il manque le paramètre selected dans la balise HTML de l'option pour que la liste déroulante pointe sur la bonne sélection.
    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
    <tr> 
    	<td>Nom du Club:</td>
    	<td>
    		<select name="fk_club">
    <?php 
    while($data = mysqli_fetch_array($reso)) 
    { 
    ?>	
    			<option value="<?php echo $data['pk_club']; ?>"
    <?php
    // Ici il faut du code pour tester si $data['pk_club'] = l'identifiant du club du membre
    // Un truc du genre :
    if($data['pk_club'] == $idclubdumembre)
    {
    	echo 'selected';
    }
    ?>
    			>
    				<?php echo $data['nom_club']?>
    			</option>
    <?php 
    }
    ?>
    		</select>
    	</td>
    </tr>
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre éclairé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Septembre 2009
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Septembre 2009
    Messages : 458
    Par défaut
    Citation Envoyé par sabotage Voir le message
    C'est sûr que si tu n'as rien écrit pour mettre une valeur selectionnée, ça ne va pas se faire tout seul :
    Bonjour Sabotage,

    Effectivement, c'est pour cela que je pose la question pour qu'on puisse m'aider.

    Citation Envoyé par CinePhil Voir le message
    Il manque le paramètre selected dans la balise HTML de l'option pour que la liste déroulante pointe sur la bonne sélection.
    Bonjour CinePhil,

    Merci beaucoup mon problème est résolu, encore merci à toi.

  5. #5
    Membre éclairé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Septembre 2009
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Septembre 2009
    Messages : 458
    Par défaut
    Bonsoir,

    Je décide de ré-ouvrir ce topic car j'ai fait quelques modifs et plus rien ne fonctionne correctement. J'ai décidé également de travailler en PDO.
    Je travaille sur deux tables clubs et membres. Mon objectif est de pouvoir modifier l'élément de ma liste déroulante (nom club) par un autre.
    Cela fonctionne mais quand j'essaye de remodifier l'élément dans mon formulaire de modification il sélectionne un autre item il ne stock par celui que j'ai choisi.

    Voici une démonstration
    Le but est de changer le nom du club donc c'est FC.Brussel


    Quand je clique sur la modification, j'ai par défaut FC.Mechelen et non FC.Brussel


    Voici mon code je pense que le soucis est à cause de mes deux boucles WHILE et l'accolade en bas du formulaire ?

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    <?php
     
    $db = new PDO("mysql:host=localhost;dbname=bd_palaisdessport", "root", "");
     
    // requête qui affiche les clubs dans une une liste déroulante 
    $dropdown_list = $db->query("SELECT pk_club, nom_club FROM clubs");
     
     
    $pk_membre=$_GET['pk_membre'];
    $result = $db->prepare("SELECT * FROM membres WHERE pk_membre = :userid"); 
    $result->bindParam(':userid', $pk_membre);
    $result->execute();
     
     
    while($affichage = $result->fetch()){  
      $nom_membre = $affichage['nom_membre'];
      $prenom_membre = $affichage['prenom_membre'];
      $date_naissance_membre = $affichage['date_naissance_membre'];
      $fk_club = $affichage['fk_club'];
     
     
     
    ?>
     
     
    <!DOCTYPE html>
    <html lang="fr">
     
        <head>
            <meta charset="utf-8">
            <title>Palais des Sports</title>
            <link rel="stylesheet" href="styletable.css">
            <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
          <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
            <script src="script.js"></script>
        </head>
     
          <header>
          <a href="login.php"><i class="material-icons">&#xe897;</i></a>
          <a href="home.php"><i class="material-icons">&#xE88A;</i></a>
          <div class="header-bandeau">
          <h4><a href="home.php"> Le Palais des Sports</a></h4>
        </div>
        </header>
     
     
     
        <body>
        <br><br><br><br><br><br>
     
        <h2>Modification d'une entrée</h2>
     
      		<form method="POST" action="edit_membre.php">
     
          <table>
     
                <tr> 
                    <td>Nom du membre:</td>
                    <td><input type="text" name="nom_membre" value="<?php echo $affichage['nom_membre']; ?>"/></td>
                </tr>
     
                <tr> 
                    <td>Prenom du membre:</td>
                    <td><input type="text" name="prenom_membre" value="<?php echo $affichage['prenom_membre']; ?>"/></td>
                </tr>
     
                <tr> 
                    <td>Date de naissance:</td>
                    <td><input type="date" name="date_naissance_membre" value="<?php echo $affichage['date_naissance_membre']; ?>"/></td>
                </tr>
     
                <tr><td>Nom du club:</td><td><select name="fk_club">
                    <?php
     
                    while($row = $dropdown_list->fetch()) { ?>
                      <option value="<?php echo $row['pk_club']; ?>"
     
                      <?php
                      // Ici il faut du code pour tester si $data['pk_club'] = l'identifiant du club du membre
                      // Un truc du genre :
                      if($row['pk_club'] == $pk_membre){
                        echo 'selected';
                      }
                      ?>
     
                      >
                      <?php echo $row['nom_club']?>
                      </option>
     
                      <?php 
                      }
                      ?>
                      </select>
                    </td>
                    </tr>
     
              </td></tr>
     
            <td><input type="submit" name="update" class="bouton_bleu" value="Update"></td>  
            <input type="hidden" name="pk_membre" value="<?php echo $pk_membre; ?>" />  
     
     
            </table>
        </form>
     
      		<a href="vue_membre.php" > Consulter les entrées </a><br />
      		<?php
      		 }
      		?>
     
    	</body>
     
      </head>
    </html>
    ou bien le pk_membre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if($row['pk_club'] == $pk_membre){
                        echo 'selected';
                      }

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    1) Il vaut mieux éviter la guerre des étoiles !

    2) En principe, la requête sur la table membre ne devrait remonter qu'une seule ligne. Le while ne sert donc à rien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $affichage = $result->fetch();
    $nom_membre = $affichage['nom_membre'];
    $prenom_membre = $affichage['prenom_membre'];
    $date_naissance_membre = $affichage['date_naissance_membre'];
    $fk_club = $affichage['fk_club'];
    3) Comment l'identifiant du club pourrait-il logiquement être celui du club du membre ?
    En valeur, c'est possible mais ça tient du hasard.
    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    // Ici il faut du code pour tester si $data['pk_club'] = l'identifiant du club du membre
    // Un truc du genre :
    if($row['pk_club'] == $fk_club){
    echo 'selected';
    }
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre éclairé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Septembre 2009
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Septembre 2009
    Messages : 458
    Par défaut
    Bonjour CinePhil;

    Merci pour ton aide mon problème est désormais résolu.
    Je vais comme même faire quelques backups histoire de pas perdre mon code...

    Bonne journée et encore merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/06/2015, 14h41
  2. Récupérer données formulaire et les afficher dans une liste à puce
    Par johnny3 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 06/02/2010, 20h38
  3. [MySQL] Modifier champs (choisi dans une liste déroulante)
    Par Destampes_SA dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 23/06/2009, 14h32
  4. [MySQL] Chargement de données MySQL dans une liste déroulante
    Par brindherbe86 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 17/03/2008, 18h02
  5. Réponses: 2
    Dernier message: 29/12/2006, 15h56

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