Liste Déroulante Garder la saisie

Résolu
Cocob84
Messages postés
38
Date d'inscription
mercredi 10 octobre 2012
Statut
Membre
Dernière intervention
23 juin 2014
- 17 juin 2014 à 09:07
Cocob84
Messages postés
38
Date d'inscription
mercredi 10 octobre 2012
Statut
Membre
Dernière intervention
23 juin 2014
- 18 juin 2014 à 08:30
Bonjour

J'ai effectuer une liste déroulante comme ceci:
Pour modifier le champs "droits" dans ma bdd

                    <tr align="center">
                        <td>Droits</td>
 
     <td> 
            <select name="Droits" id="Droits">
                <option value="Administrateur">Administrateur </option>
                <option value="Visiteur">Visiteur</option>
                <option value="Moderateur">Moderateur</option>
           </select></br>
     </td>



Quand je sélectionne exemple 'visiteur" dans ma liste déroulante et que je valide il le saisie bien dans ma bdd.la requêtes s'effectue bien .
Le souci c'est quand je veut a nouveau modifier ,La liste déroulante ne garde pas la valeur saisie soit ici :"visiteur" dans le premier terme de la liste déroulante

Je pense qu'il faut utiliser selected=selected ou/et Option selected mais je sais pas comment je peut faire.

Merci D'avance

4 réponses

jordane45
Messages postés
35415
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
356
Modifié par jordane45 le 17/06/2014 à 10:43
Bonjour,

Imaginons que tu utilises une FORM avec la méthod POST pour l'envoie de tes données...

Le code pourrait donner quelque chose du genre au niveau du select :


<?php

if(isset($_POST['Droits']){
$valSelect = $_POST['Droits'];
$sel1 =( $valSelect ==  "Administrateur")? "selected='selected'":'';
$sel2 =( $valSelect ==  "Visiteur")? "selected='selected'":'';
$sel3 =( $valSelect ==  "Moderateur")? "selected='selected'":'';
        
     Echo "<select name='Droits' id='Droits'>
                <option value='Administrateur' $sel1>Administrateur </option>
                <option value='Visiteur' $sel2>Visiteur</option>
                <option value='Moderateur' $sel3>Moderateur</option>
           </select></br>";


}
?>





Edit : correction : oublie d'un guillemet dans les variables


Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
0
Cocob84
Messages postés
38
Date d'inscription
mercredi 10 octobre 2012
Statut
Membre
Dernière intervention
23 juin 2014

Modifié par Cocob84 le 17/06/2014 à 10:44
Ok vu correction
0
jordane45
Messages postés
35415
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
356
17 juin 2014 à 10:44
$sel1 =( $valSelect ==  "Administrateur")? "selected='selected'":'';
$sel2 =( $valSelect ==  "Visiteur")? "selected='selected'":'';
$sel3 =( $valSelect ==  "Moderateur")? "selected='selected'":'';
0
jordane45
Messages postés
35415
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
356
17 juin 2014 à 10:46
Et pourquoi avoir changé le ECHO ?

     Echo "<select name='Droits' id='Droits'>
                <option value='Administrateur' $sel1>Administrateur </option>
                <option value='Visiteur' $sel2>Visiteur</option>
                <option value='Moderateur' $sel3>Moderateur</option>
           </select></br>";
0
Cocob84
Messages postés
38
Date d'inscription
mercredi 10 octobre 2012
Statut
Membre
Dernière intervention
23 juin 2014

Modifié par Cocob84 le 17/06/2014 à 10:57
"Et pourquoi avoir changé le ECHO ?" Pour tester dans ma page il étais pas en blue

Marche toujours pas
J'ai test sa j'arrive toujours pas afficher ma page

                    <tr align="center">
                    <td>Droits</td>
                    <td>
                        <?php
                        
                    if(isset($_POST['Droits']){
                        $valSelect = $_POST['Droits'];
                        $sel1 =( $valSelect ==  "Administrateur")? "selected='selected'":'';
                        $sel2 =( $valSelect ==  "Visiteur")? "selected='selected'":'';
                        $sel3 =( $valSelect ==  "Moderateur")? "selected='selected'":'';
                                
                             Echo "<select name='Droits' id='Droits'>
                                        <option value='Administrateur' $sel1>Administrateur </option>
                                        <option value='Visiteur' $sel2>Visiteur</option>
                                        <option value='Moderateur' $sel3>Moderateur</option>
                                   </select></br>";
                        
                        
                        }
                        ?>
        
                    </td>

0
jordane45
Messages postés
35415
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
356
17 juin 2014 à 10:56
Tu as regardé ce que vaut ta variable DROITS ??

-> Fais donc un print_r sur $_POST et colles nous ce qui apparait.
0
jordane45
Messages postés
35415
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
356
17 juin 2014 à 11:26
Je voudrais que tu fasses un print_r($_POST) au niveau du code que je t'ai donné....

<tr align="center">
                    <td>Droits</td>
                    <td>
                        <?php

//----------------------------------------                     
echo "<pre>";
echo " Variables POST = <br>";
print_r($_POST);
echo "</pre>";
//--------------------------------------   
                    if(isset($_POST['Droits']){
                        $valSelect = $_POST['Droits'];
                        $sel1 =( $valSelect ==  "Administrateur")? "selected='selected'":'';
                        $sel2 =( $valSelect ==  "Visiteur")? "selected='selected'":'';
                        $sel3 =( $valSelect ==  "Moderateur")? "selected='selected'":'';
                                

//----------------------------------------                     
echo "<pre>";
echo " Variables SEL = <br>";
echo "sel1 : ".$sel1."<br>";
echo "sel2 : ".$sel1."<br>";
echo "sel3 : ".$sel1."<br>";
echo "</pre>";
//--------------------------------------

                             Echo "<select name='Droits' id='Droits'>
                                        <option value='Administrateur' $sel1>Administrateur </option>
                                        <option value='Visiteur' $sel2>Visiteur</option>
                                        <option value='Moderateur' $sel3>Moderateur</option>
                                   </select></br>";
                        
                        
                        }
                        ?>
        
                    </td>

0
Cocob84
Messages postés
38
Date d'inscription
mercredi 10 octobre 2012
Statut
Membre
Dernière intervention
23 juin 2014

17 juin 2014 à 11:34
J'ai test pareil j'arrive pas a avoir accés a ma page
j'ai enlever la boucle si est sa me donne ceci :et j'arrive a avoir accés


 Variables POST = 
Array
(
)

 Variables SEL = 
sel1 : 
sel2 : 
sel3 : 
0
jordane45
Messages postés
35415
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
356
17 juin 2014 à 12:13
Comme tu peux le constater.... ta variable POST est vide....;

A quel moment souhaites tu afficher la sélection dans ta liste ?
Après avoir soumis ton formulaire ??
Ou bien... lorsque tu réaffiche ta page ?

Car si c'est lors de l'affichage de ta page.... il faut que tu fasses une requête dans ta BDD pour aller rechercher l'info....
0
Cocob84
Messages postés
38
Date d'inscription
mercredi 10 octobre 2012
Statut
Membre
Dernière intervention
23 juin 2014

Modifié par Cocob84 le 17/06/2014 à 12:35
Quand je suis dans le formulaire pour modifier je sélectionne le droits choisie exemple "Visiteur" j'appuie sur valider
sa modifie dans ma bdd,
et quand je reclick sur modifier sa m'amène sur a nouveau sur le formulaire dans droits la première option est toujours administrateur n'est pas cèle que je sélectionne juste avant soit "visiteur"

je voudrais que le choix numéro 1 de la liste déroulante soit celle qui est dans la bdd pour que le client quand il modifie il voie en quel droits et
l'utilisateur.

Dans le formulaire j'ai mis sa le souci c'est que comme sa me le répéte 2 fois


<option selected><?php echo($result->Droits);?>

0
jordane45
Messages postés
35415
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
356
17 juin 2014 à 12:54
je voudrais que le choix numéro 1 de la liste déroulante soit celle qui est dans la bdd
Donc... il te faut REQUETER ta BDD pour avoir les informations qui s'y trouvent......
0
Cocob84
Messages postés
38
Date d'inscription
mercredi 10 octobre 2012
Statut
Membre
Dernière intervention
23 juin 2014

Modifié par Cocob84 le 17/06/2014 à 13:21
Oui sa me donne ceci quand je sélectionne "Visiteur" et que je le modifie
http://hpics.li/0433ca1
avec comme requetes
   $id  = $_GET["idCompte"] ;
 
  //requête SQL:
    $sql = "SELECT * From Compte Where Login = '$id' ";
0
Cocob84
Messages postés
38
Date d'inscription
mercredi 10 octobre 2012
Statut
Membre
Dernière intervention
23 juin 2014

Modifié par Cocob84 le 17/06/2014 à 15:22
D'accord
Page ModifiUtilisateur
   $id  = $_GET["idCompte"] ;
 
  //requête SQL:
    $sql = "SELECT * From Compte
               Where Login = '$id' ";
  
  
  //exécution de la requête:
  $requete = mysql_query($sql);
 
 
  //affichage des données:
    if( $result = mysql_fetch_object( $requete ) )
  {
  ?>
<center>

<form method="POST" action="Modifuser2.php" enctype="multipart/form-data">
<center>
   <table>         
            <input type="hidden" name="Login" value="<?php echo($id) ;?>">
            
            
                    <tr align="center">
                        <td>Login</td>
                        <td><input type="text" name="Login"  value="<?php echo($result->Login) ;?>"></td>
                    </tr>
                    <tr align="center">
                        <td>Password</td>
                        <td><input type="text" name="Password" value="<?php echo ($result->Password) ;?>"></td>
                    </tr>
                    <tr align="center">
                        <td>Nom</td>
                        <td><input type="text" name="Nom" value="<?php echo($result->Nom) ;?>"></td>
                    </tr>
                    <tr align="center">
                        <td>Prénom</td>
                        <td><input type="text" name="Prenom" value="<?php echo($result->Prenom) ;?>"></td>
                    </tr>
                   <tr align="center">
                    <td>Droits</td>
                    <td>
                        
                             <select name='Droits' id='Droits'>
                                        <option value="Administrateur">Administrateur </option>
                                        <option value="Visiteur">Visiteur</option>
                                        <option value="Moderateur">Moderateur</option>
                                        <option selected><?php echo($result->Droits);?>
                                   </select></br>
                       
    
                    </td>
                         
                        <tr align="center">
                        <td> </td>
                        <td><input type="submit" name="envoyer" value="Modifier"></td>
                    </tr>
    
                   </table>
                   <br>
                   <a href="Utilisateur.php" class="bouton">Retour</a>
                </center>
            </form>        
 
<?php


Page ModifiUtilisateur2


//récupération des valeurs des champs:
  //nom:
  $log    = $_POST["Login"] ;
  $pas    = $_POST["Password"] ;
  $nom    = $_POST["Nom"] ;
  $pre    = $_POST["Prenom"] ;
  $droi   = $_POST["Droits"] ;


  //récupération de l'identifiant de la personne:
  $id      = $_POST["Login"] ;
  

  //création de la requête SQL:
  
   $sql = "UPDATE Compte
            SET Login    = '$log'    , 
            Password      = '$pas'   ,
            Nom           = '$nom'   ,
            Prenom        = '$pre'   ,
            Droits        = '$droi'   
            WHERE Login  = '$id' "   ;
             mysql_query($sql);
             

  //affichage des résultats, pour savoir si la modification a marchée:
$result = mysql_query($sql);
$nbRows = mysql_num_rows($result);

if($nbRows >0) 
  {
    echo("La modification à échouée") ;
    
  }
  else
  {
      echo("La modification a été correctement effectuée");
      echo"droits:"; print_r($_POST['Droits']);

  }
?>







0
jordane45
Messages postés
35415
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
356
17 juin 2014 à 15:28
C'est bien dans la page : Page ModifiUtilisateur que tu dois mettre le code en effet...
Mais pas TOUTE ta FORM dans la boucle While.......

Tu as regardé ce que je t'ai donné comme code ????


Ca devrait à peu prêt ressembler à ça :
(A toi de l'adapter si besoin...)
$id  = isset($_GET["idCompte"])?$_GET["idCompte"]'0' ;

//--------------------------------- 
 //requête SQL:
//---------------------------------
    $sql = "SELECT * 
               FROM Compte 
              WHERE Login = '$id' ";

  // Exécution de la requête :
$result = mysql_query($sql);

if (!$result) {
     die('Requête invalide : ' . mysql_error() . " Requête :".$sql);
   }

// Le traitement de la requête
$result= mysql_fetch_assoc($result))



// Le reste de ton code....
?>
<center>

<form method="POST" action="Modifuser2.php" enctype="multipart/form-data">
<center>
   <table>         
            <input type="hidden" name="Login" value="<?php echo($id) ;?>">
            
            
                    <tr align="center">
                        <td>Login</td>
                        <td><input type="text" name="Login"  value="<?php echo($result->Login) ;?>"></td>
                    </tr>
                    <tr align="center">
                        <td>Password</td>
                        <td><input type="text" name="Password" value="<?php echo ($result->Password) ;?>"></td>
                    </tr>
                    <tr align="center">
                        <td>Nom</td>
                        <td><input type="text" name="Nom" value="<?php echo($result->Nom) ;?>"></td>
                    </tr>
                    <tr align="center">
                        <td>Prénom</td>
                        <td><input type="text" name="Prenom" value="<?php echo($result->Prenom) ;?>"></td>
                    </tr>
                   <tr align="center">
                    <td>Droits</td>
                    <td>
                        

<?php

   $valSelect = $result->Droits;
                      
                      $sel1 =( $valSelect ==  "Administrateur")? "selected='selected'":'';
                        $sel2 =( $valSelect ==  "Visiteur")? "selected='selected'":'';
                        $sel3 =( $valSelect ==  "Moderateur")? "selected='selected'":'';
                                
                        Echo "<select name='Droits' id='Droits'>
                                        <option value='Administrateur' $sel1>Administrateur </option>
                                        <option value='Visiteur' $sel2>Visiteur</option>
                                        <option value='Moderateur' $sel3>Moderateur</option>
                                   </select></br>";

?>

 </td>
                         
                        <tr align="center">
                        <td> </td>
                        <td><input type="submit" name="envoyer" value="Modifier"></td>
                    </tr>
    
                   </table>
                   <br>
                   <a href="Utilisateur.php" class="bouton">Retour</a>
                </center>
            </form>        



0
Cocob84
Messages postés
38
Date d'inscription
mercredi 10 octobre 2012
Statut
Membre
Dernière intervention
23 juin 2014

Modifié par Cocob84 le 17/06/2014 à 17:43
je viens d'adapter et j'ai sa comme erreur
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in Modifuser.php on line 24 sur cette ligne

$id  = isset($_GET["idCompte"])?$_GET["idCompte"]'0' ;
0
jordane45
Messages postés
35415
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
356
17 juin 2014 à 18:25
Et bien vu que tu as la ligne... tu aurais pu corriger par toi même non ?
Si tu ne connais pas..ok.... c'est une écriture alternative d' un IF....
Ce qu'on appel un if TERNAIRE.
Voici l'explication :
http://www.manuelphp.com/php/language.operators.comparison.ternary.php

Bref,
Il manque les ":" avant le 0

$id  = isset($_GET["idCompte"])?$_GET["idCompte"]:'0' ;
0
Cocob84
Messages postés
38
Date d'inscription
mercredi 10 octobre 2012
Statut
Membre
Dernière intervention
23 juin 2014

17 juin 2014 à 19:18
je savais pas j'ai essayer j'ai essaye de changer les guillemets du 0 mais c'était pas sa c'est bon corriger ici
Mais dans le formulaire il y a pas les résultats

j'ai fais un Echo de la requêtes elle affiche bien la requêtes :
SELECT * FROM Compte WHERE Login = 'admin'


aussi un Echo de la variable résult et m'affiche que :
Array
0
jordane45
Messages postés
35415
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
356
17 juin 2014 à 19:43
Result est un array.
Il te faut donc utiliser print_r ($result) et non un echo
0
Cocob84
Messages postés
38
Date d'inscription
mercredi 10 octobre 2012
Statut
Membre
Dernière intervention
23 juin 2014

17 juin 2014 à 19:46
a mince je vais y arriver ^^
Array ( [Login] => admin [Password] => admin [Nom] => admin [Prenom] => admin [Droits] => Moderateur )
0