Problème de l'affichage dans la liste déroulante

Résolu
vandouzen007 Messages postés 48 Date d'inscription lundi 21 octobre 2013 Statut Membre Dernière intervention 29 mars 2014 - 21 janv. 2014 à 07:29
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 22 janv. 2014 à 11:14
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

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
Modifié par jordane45 le 21/01/2014 à 10:06
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
0
vandouzen007 Messages postés 48 Date d'inscription lundi 21 octobre 2013 Statut Membre Dernière intervention 29 mars 2014 1
22 janv. 2014 à 07:01
Jusqu' à maintenant, j'arrive même pas à comprendre votre code! En tout cas, il y a une erreur que j'arrive pas à trouver!
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
22 janv. 2014 à 08:32
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>'; }
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
22 janv. 2014 à 10:43
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+
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
22 janv. 2014 à 11:14
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..... )
0
Rejoignez-nous