[RESOLU] Combobox selection d'id

Petit nouveau ! | 5 Messages

15 déc. 2014, 12:14

Bonjour,

Dans ma combobox je voudrais sélectionner l'id membre par rapport a mon id materiel, pour l'instant il affiche bien l'id_membre mais il l'affiche 2 fois dans ma combobox et je voudrais qu'il ne l'affiche qu'une seule fois.
Voici le code html :
[php]<select id="membre" name="membre">
      <option value="<?php if(isset($materiel)) echo $materiel['id_membre']; ?>"> <?php if(isset($materiel)) echo utf8_encode($materiel['nom'].' '.$materiel['prenom']); ?></option>
			<?php
							
				while( $data = mysqli_fetch_array($liste_membre)){
								echo utf8_encode("<option value='".$data['id_membre']."'";
									if(isset($"???") &&  $"???" == $data['id_membre]){
									echo ' selected="selected" ';
									}

									echo ">".$data['nom']." ".$data['prenom']."</option>");
							
							}
							
				?>
				</select>[/php]
Le code php :
 $query ="SELECT * FROM membre ORDER BY type_membre,nom ASC ";
$liste_membre = mysqli_query($connexion, $query);
J'ai un problème avec la ligne : "if(isset($"???") && $"???" == $data['id_membre']){" dans mon html je ne sais pas du tout quoi mettre dans le if(isset($ "???") && $"???" == $date[' ???'])
Ou si vous avez une autre solution pour faire cette selection je suis preneuse !

Merci de votre aide.
Méghan

Mammouth du PHP | 1966 Messages

15 déc. 2014, 13:04

La question à te poser,

Que veux tu que ta liste sélectionne par défaut. Si tu n'a pas la réponse à cette question, il est inutile de garder la partie qui ajoute le selected="selected" à tes options

Si tes options sont affichées 2 fois, vérifie ta requète
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Petit nouveau ! | 5 Messages

15 déc. 2014, 16:17

Je veux que ma liste affiche par défaut le nom de la personne sur qui j'ai cliqué auparavant.

Par exemple je clique sur Modifier le profil de Madame X sa m'ouvre une autre page avec ma combobox :
Et dans ma combobox il me met :
Madame X
Monsieur X

Et la il m'affiche :
Madame X <- (par défaut)
Monsieur X
Madame X

Normalement avec selected=selected je dois pouvoir le faire non ?


Sinon,
Dans ma requête, il faudrait que je mette "sauf Madame X"

Donc ca j'ai fais :
$id_membre_liste = $materiel['id_membre'];
$query ="SELECT * FROM membre WHERE id_membre != '".$id_membre_liste."'  ORDER BY type_membre,nom ASC ";
$liste_membre = mysqli_query($connexion, $query);
Et ça fonctionne.

Au final avec la requête ça fait ce que je veux mais j'aimerai bien savoir si c'est possible de le faire avec selected pour savoir au cas où.
Merci à vous !
Méghan

Mammouth du PHP | 1966 Messages

15 déc. 2014, 16:29

Je suis pas sur de comprendre pourquoi tu as un double, je suppose que cela vient du fait que tu ajoute une balise option avant de parcourir ta requète.
Si c'est bien cela, il te faut décider si tu veux madame X toujours au dessus ou bien le classement de ta base te convient et juste la sélectionner par défaut

Si tu la veux au dessus :
<select id="membre" name="membre">
      <?php if(isset($materiel)) echo '<option value="'.$materiel['id_membre'].'"selected = "selected">'.utf8_encode($materiel['nom'].' '.$materiel['prenom']).'</option>'; ?>
                        <?php
                                                       
                                while( $data = mysqli_fetch_array($liste_membre)){
                                                                if(isset($id_membre_liste) &&  $id_membre_liste == $data['id_membre]){
                                                                        continue;// Si on detecte que l'id du membre est égale à l'id sélectionner précedement, on le passe puisqu'il est dèjà en premiere ligne                                                                        }
                                                                echo utf8_encode("<option value='".$data['id_membre']."'";
                                                                echo ">".$data['nom']." ".$data['prenom']."</option>");
                                                        }
                                                       
                                ?>
                                </select>
Tu notera que j'ai inclus tout l'echo de l'option dans un isset pour ne pas en générer un sans id et sans nom.

Sinon tu ne doit pas inclure ta première option et juste détecter lorsqu'elle se présente dans ta boucle
<select id="membre" name="membre">
      <?php
                                                       
                                while( $data = mysqli_fetch_array($liste_membre)){
                                                                echo utf8_encode("<option value='".$data['id_membre']."'";
                                                                        if(isset($id_membre_liste) &&  $id_membre_liste == $data['id_membre]){
                                                                        echo ' selected="selected" ';
                                                                        }

                                                                        echo ">".$data['nom']." ".$data['prenom']."</option>");
                                                       
                                                        }
                                                       
                                ?>
                                </select>
La différence entre les 2 codes c'est l'id que tu recupère après l'envoi du formulaire, $materiel['id_membre'] ou $data['id_membre'] mais c'est probablement la même valeur
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Petit nouveau ! | 5 Messages

15 déc. 2014, 17:09

A Merci beaucoup c'est très claire et bien détaillé !! Comme ça je peux choisir ce qui est le mieux.

Par contre, j'ai du retiré mon utf8_encode() car sur cette ligne : echo "<option value='".$data['id_membre']."'";
Il me met une erreur à cause du ";"
Enfin, je viens de résoudre le problème je met le utf8_encode sur cette ligne : echo utf8_encode(">".$data['nom']." ".$data['prenom']."</option>");

Par contre, aurais-tu une autre solution pour que toutes mes combobox soient en utf8_encode sans l'écrire pour chaque combobox ?