Problème de l'affichage dans la liste déroulante [Résolu]

Signaler
Messages postés
48
Date d'inscription
lundi 21 octobre 2013
Statut
Membre
Dernière intervention
29 mars 2014
-
Messages postés
31544
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 mars 2021
-
Bonjour,

J'ai un peu la difficulté de faire afficher la valeur sélectionner pour que je puisse la modifier! Bon voila, si dans
<input type="text">
, après sélection dans la base de donnée, juste on fait

<input type="text" value=" <?php echo ($answer->departement);?>" />
et on modifie juste le département. mais mon problème c'est que je ne veux pas utiliser input type="text" mais j'aime utiliser une liste déroulante.
Dans la base de donnée, il y a une table département que je sélectionne.
Voila la requête

<select name="departement">
<option value="" selected="selected"></option>
<?php
$req="SELECT * FROM departement";
$exec=mysql_query($req) or die(mysql_error());
while($affiche=mysql_fetch_object($exec)){
echo '<option value="'.$affiche->id_departement.'" >'.$affiche->nom_departement.'</option>';
}
?>
</select>
et ça marche, mais voila donc ci_dessous mon problème,
je veux que la valeur de département à modifier sera afficher en premier dans la liste déroulante et les restes valeurs suivent en bas de la liste déroulante.
Par exemple je suis en département informatique et je souhaite modifier en Financier. Schématiquement,
<select name="departement">
   <option value="ancienne valeur à modifier" selected="selected"></option>
   <option value="Département1" selected="selected"></option>
   <option value="Département2" selected="selected"></option>
   <option value="Département3" selected="selected"></option>


Département1, Département2, Département3 seront les départements de choix de modification

Quelqu'un pourra m'aider

Cdt,

2 réponses

Messages postés
31544
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 mars 2021
344
Bonjour,
Ce que tu cherches à faire, c'est de selectionner dans ta liste déroulante la valeur correspondante à celle enregistrée dans ta table ?
Il te faut donc utiliser un IF et (uniquement sur la valeur souhaitée) "selected"



<select name="departement">
<option value="" selected="selected"></option>
 <?php 
 $req="SELECT * FROM departement";
 $exec=mysql_query($req) or die(mysql_error());
 while($affiche=mysql_fetch_object($exec)){
  // On teste si le departement dans la réponse = celui de la boucle
  $selected ="";
  ($answer->departement == .$affiche->nom_departement)?$selected="selected":$selected=""
echo '<option value="'.$affiche->id_departement.'" '. $selected.' >'.$affiche->nom_departement.'</option>';
       }
 ?>   
</select>



Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
Messages postés
48
Date d'inscription
lundi 21 octobre 2013
Statut
Membre
Dernière intervention
29 mars 2014
1
Jusqu' à maintenant, j'arrive même pas à comprendre votre code! En tout cas, il y a une erreur que j'arrive pas à trouver!
Messages postés
31544
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 mars 2021
344
Il semble que j'ai oublié un ;

($answer->departement == .$affiche->nom_departement) ? $selected="selected":$selected="" ;
echo '<option value="'.$affiche->id_departement.'" '. $selected.' >'.$affiche->nom_departement.'</option>'; }
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
6
Hello,

le test conditionnel que t'as filé jordane45 est en ternaire :


($answer->departement == .$affiche->nom_departement)?$selected="selected":$selected=""

La même chose en binaire :


if($answer->departement == .$affiche->nom_departement){
$selected="selected";
}else{
$selected="";
}

A+
Messages postés
31544
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 mars 2021
344
A noter que j'ai omis également une partie de la variable $selected....

($answer->departement == .$affiche->nom_departement)?$selected='selected="selected"':$selected='';


le test conditionnel que t'as filé jordane45 est en ternaire
Oui.. c'est en effet une autre façon d'écrire un bloc IF.


PS: @Vandouzen.. Nous dire que tu as une erreur c'est bien.. nous dire laquelle c'est mieux.
Si tu rencontres encoure un souci avec le code que l'on te donne, merci de nous préciser le message d'erreur rencontré ou le fonctionnement du code qui ne correspondrait pas à tes souhaits.
En effet , je te donne du code issue de ma pauvre tête et ne le met pas en oeuvre sur mon poste.. (sinon il faudrait à chaque fois que je réecrive entièrement le code de chaque page html/php que les utilisateurs (toi en l'occurence) utilisent pour leurs pages afin de reprouire le même comportement sur mon poste..... )