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

Langage PHP Discussion :

[Tableaux] liste déroulante et php


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 340
    Points : 97
    Points
    97
    Par défaut [Tableaux] liste déroulante et php
    Bonjour à tous,

    J'ai un problème avec une liste déroulante. J'ai fait une page ou je peux modifier des données qui sont dans ma base.
    Certains champs sont sous formes de liste déroulante et d'autre sous forme de champs de saisie.

    J'ai une table cheval, et une table race. Lorsque l'on ajoute un cheval, il faut choisir le race par une liste déroulante.

    Par contre lorsque je veux modifier un cheval, on peut modifier le nom et la race. La race est modifié avec la liste déroulante. Dans la table race j'ai les valeurs suivantes :
    • alezan
    • demi-sang


    Est-ce possible que si j'ai attribué demi sang au cheval. Que lorsque je modifie un cheval que ca reprenne dans la liste race la valeur que je lui ai attributé.
    Car maintenant si je fais modifier, ma liste déroulante est à alezan, alors que pour ce cheval j'avais mis demi sang.

    J'èespère avoir été suffisamment clair, ce n'est pas facile à expliquer
    D'avance merci pour l'aide

  2. #2
    Membre habitué Avatar de Cyberbob002
    Inscrit en
    Mai 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 140
    Points : 146
    Points
    146
    Par défaut
    Oui pas de problème.

    Lorsque tu charges ton enregistrement pour la modification, tu récupères la race dans une variable $race (par exemple) et tu appliques ce type de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value="demi-sang" <?php if ($race == 'demi-sang') echo 'selected="selected"'; ?>>demi-sang</option>

  3. #3
    Invité
    Invité(e)
    Par défaut
    J'ai THE solution à ce problème!

    Alors tu devras déjà modifier ton formulaire de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <form action='blablabla' method='post'>
    <select name='race'>
    <option $alezan> alezan </option>
    <option $demi-sang> demi-sang</option>
    </select>
    <input type='hidden' name='statut' value='envoye'>
    <input type='submit' value='Envoyer!'>
    </form>
    Ensuite tu vérifies si le formulaire a déjà été soumis et là l'astuce...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ($_POST['statut'] == 'envoye') {
       $$_POST['race'] = 'selected';
    }
    Attention le test if doit précéder la déclaration du formulaire sinon ça ne fonctionnera pas!

    L'astuce est d'utiliser des variables de variables. Lorsque le formulaire est soumis tu entres dans le test if et si tu as choisi par exemple alezan :

    $_POST['race'] contient "alezan" donc $$_POST['race'] vaut $alezan et tu lui attribues la valeur "selected".

    Dans ton formulaire $alezan = selected donc ce sera lui qui sera sélectionné!

    Attention aussi à la casse que tu utilises dans tes <option> car les variables sont sensibles à la casse...

    @++

    webrider

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Cyberbob002
    Oui pas de problème.

    Lorsque tu charges ton enregistrement pour la modification, tu récupères la race dans une variable $race (par exemple) et tu appliques ce type de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value="demi-sang" <?php if ($race == 'demi-sang') echo 'selected="selected"'; ?>>demi-sang</option>
    Ta méthode fonctionne très bien aussi mais pour de très longues listes tu vas te retrouver avec plein de test if donc pas très opérationnel. Très bien pour une petite liste.

    webrider

  5. #5
    Membre habitué Avatar de Cyberbob002
    Inscrit en
    Mai 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 140
    Points : 146
    Points
    146
    Par défaut
    Oui !
    Mais normalement ça doit être dans une boucle for ; donc une seule ligne

  6. #6
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    +1 Cyberbob002

    comme tu dois remplir ta liste dans un while ou quelque chose du genre
    tu n'as pas besoin de la mettre partout cette condition
    MAIS si t'as liste déroulante est trop longue..c'est ennuyant d'avoir une liste déroulante..alors a toi de voir

    du genre pour une liste assez longue moi j'ai ce genre de truc!

    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
     
     
    <select name="dpdCategorie" id="_dpdCategorie">
       <option value="0">Categorie de perte</option>
         <?
    	$strScript = "Select categorieID,description ";
    	$strScript .= "FROM tblCategorieSinistre ORDER BY description";
     
    	$req = $objCon->dbQuery($strScript);
     
    	while($lig = mysql_fetch_array($req)){
    	   if(isset($_POST['dpdCategorie']) && $_POST['dpdCategorie'] == $lig['categorieID']){
    		echo"<option value=".$lig['categorieID']." selected>".$lig['description']."</option>";
    	   }
    	   else{
    		 echo"<option value=".$lig['categorieID'].">".$lig['description']."</option>";
    	   }
    	}
        ?>
    </select>
    alors comme ca tu fais une vérification en meme temps que remplir ta liste
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Cyberbob002
    Oui !
    Mais normalement ça doit être dans une boucle for ; donc une seule ligne
    Bien vu! Je dirais du coup que les 2 méthodes se valent : je n'ai qu'un test if aussi!

    Mais qu'en pense notre amie kitty2006?

    webrider

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 340
    Points : 97
    Points
    97
    Par défaut
    Bonjour à tous

    Merci pour vos réponses.

    la réponse que Cyberbob002 à noté a l'air de mieux correspondre à mes besoins, c'est ce qu'il me semble....

    Ma liste déroulante est dynamique et non statique. Est-ce que vos réponses peuvent aussi fonctionner.

    En fait j'ai une page ou je peux visualiser un tableau qui contient toutes les valeurs que j'ai dans ma base et pour chaque ligne du tableau j'ai un bouton modifier.
    Lors d'un clic sur ce dernier, ca ouvre par exemple la page modifierclient. Ca reprend, le nom, le prénom...du client ainsi que la localité, mais la localité est en fait une liste déroulante. Et je voudrais que si auparavant j'avais Paris pour ce client et bien que je fais modifier ca affiche la liste mais que l'on voit Paris comme enregistrement, même s'il y Mulhouse en premier.

    Voila ma liste si ca peut aider

    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
    <form method=post action=clientmenu.php?modifierclient=<?php echo $value ["CLIENT_ID"]; ?>>
     
     
      <table width="502" border="1" align="center">
        <tr> 
          <th width="21" height="23"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">Id</font></th>
          <td><?php echo $value["CLIENT_ID"]; ?> </td>
        </tr>
        <tr> 
          <th width="155"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">Localite</font></th>
          <td> <select size="1" name=localite>
              <?php
    				$requete = "SELECT LOCALITE_ID, LOCALITE_NOM, LOCALITE_NPA FROM localite";
    				$resultat =  mysql_query($requete);
     
    				while ($valeur=mysql_fetch_array($resultat))
    				{
     
    					echo "<option value =".$valeur ["LOCALITE_ID"].">".$valeur["LOCALITE_NOM"]."</option>\n";					
     
    				}
    				//etant donnée que j'ai déjà un tableau en dessus il faut changer les noms des variables
    				?>
            </select></td>
    D'avance merci

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 340
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par kitty2006
    Bonjour à tous

    Merci pour vos réponses.

    la réponse que Cyberbob002 à noté a l'air de mieux correspondre à mes besoins, c'est ce qu'il me semble....

    Ma liste déroulante est dynamique et non statique. Est-ce que vos réponses peuvent aussi fonctionner.

    En fait j'ai une page ou je peux visualiser un tableau qui contient toutes les valeurs que j'ai dans ma base et pour chaque ligne du tableau j'ai un bouton modifier.
    Lors d'un clic sur ce dernier, ca ouvre par exemple la page modifierclient. Ca reprend, le nom, le prénom...du client ainsi que la localité, mais la localité est en fait une liste déroulante. Et je voudrais que si auparavant j'avais Paris pour ce client et bien que je fais modifier ca affiche la liste mais que l'on voit Paris comme enregistrement, même s'il y Mulhouse en premier.

    Voila ma liste si ca peut aider

    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
    <form method=post action=clientmenu.php?modifierclient=<?php echo $value ["CLIENT_ID"]; ?>>
     
     
      <table width="502" border="1" align="center">
        <tr> 
          <th width="21" height="23"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">Id</font></th>
          <td><?php echo $value["CLIENT_ID"]; ?> </td>
        </tr>
        <tr> 
          <th width="155"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">Localite</font></th>
          <td> <select size="1" name=localite>
              <?php
    				$requete = "SELECT LOCALITE_ID, LOCALITE_NOM, LOCALITE_NPA FROM localite";
    				$resultat =  mysql_query($requete);
     
    				while ($valeur=mysql_fetch_array($resultat))
    				{
     
    					echo "<option value =".$valeur ["LOCALITE_ID"].">".$valeur["LOCALITE_NOM"]."</option>\n";					
     
    				}
    				//etant donnée que j'ai déjà un tableau en dessus il faut changer les noms des variables
    				?>
            </select></td>
    D'avance merci

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 340
    Points : 97
    Points
    97
    Par défaut
    est-ce que quelqu'un peut m'aider...

    je n'y arrive vraiment pas...

    encoremerci

  11. #11
    Membre éclairé
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Points : 708
    Points
    708
    Par défaut
    dans ta page modifierclient

    quand tu génères ton select, pour chaque <option> tu mets ça :

    <option value=" ... " <?php if (value_option == id_localite_client) echo 'selected';?> > ... </option>

    (j'ai juste lu le dernier message en diagonale alors pour le code exact...)
    Dia [ Page DVP ] [ Site pro ]

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 340
    Points : 97
    Points
    97
    Par défaut
    Merci pour la réponse....c'est sympa je teste et je redonne des nouvelles

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 340
    Points : 97
    Points
    97
    Par défaut
    Merci pour la réponse,


    J'ai modifié le code comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	echo "<option value =".$valeur ["LOCALITE_ID"]." if(value_option == LOCALITE_ID) echo 'selected';>".$valeur["LOCALITE_NOM"]."</option>\n";
    Mais ca ne fonctionne pas...qu'est-ce que j'ai oublié?

  14. #14
    Membre éclairé
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Points : 708
    Points
    708
    Par défaut
    quand j'ai mis value_option et id_localite_client, c'était juste des indications pour te dire quoi mettre, c'était pas du code
    faut pas les recopier texto dans ta page

    vu le code que tu montres là, il faut que tu remplaces value_option par $valeur['LOCALITE_ID']
    Dia [ Page DVP ] [ Site pro ]

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 340
    Points : 97
    Points
    97
    Par défaut
    Merci pour l'info

    mais voila ce que j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	echo "<option value =".$valeur ["LOCALITE_ID"]."if (FK_LOCALITE == LOCALITE_ID) echo 'selected'>".$valeur["LOCALITE_NOM"]."</option>\n";
    et ca ne marche pas du tout...peux-tu encore m'aider s'il te plait

    D'avance merci

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 340
    Points : 97
    Points
    97
    Par défaut
    Bonjour,

    Est-ce que quelqu'un peut m'aider
    D'avance merci ca serait vraiment sympa

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 340
    Points : 97
    Points
    97
    Par défaut
    Pourriez-vous m'aider s'il vous plait ?

  18. #18
    Membre éclairé
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Points : 708
    Points
    708
    Par défaut
    apparemment tu dois avoir une table du genre 'localites' qui a au moins les champs 'id' et 'nom'
    bon, dans ta table 'clients', tu dois stocker l'id de la localité qu'il a sélectionné

    et quand tu affiches la liste déroulante dans la page modifier, tu fais la liste des localités enregistrées dans la table 'localite' donc tu dois faire un select * from localites puis un while ... = mysql_fetch_arry...

    pour chaque balise option de ta liste déroulante, tu compares l'id de la localité que tu es en train de lister à l'id de la localité du client

    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
    $localites = mysql_query('select id, nom from localites');
    $donneesclient = mysql_query("select idlocalite from clients where idclient='xxx'");
     
    $client = mysql_fetch_array($donneesclients);
     
    $idlocaliteclient = $client['idlocalite'];
     
    echo '<select name="...">';
     
    while ($localite = mysql_fetch_array($localites)) {
     
      echo '<option value="' . $localite['id'] . "' ";
      if ($localite['id'] == $idlocaliteclient) echo "selected ";
      echo ">" . $localite['nom'] . "</option>";
     
    }
     
    echo '</select>';
    un truc dans ce goût là...
    Dia [ Page DVP ] [ Site pro ]

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 340
    Points : 97
    Points
    97
    Par défaut
    il me semble que c'est ce que j'ai fait et ca ne marche pas...Voila le code de ma page modifiier

    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
    $query= "SELECT CLIENT_ID, FK_LOCALITE, CLIENT_NO, CLIENT_NOM, CLIENT_PRENOM, CLIENT_RUE, CLIENT_TEL_FIXE, CLIENT_TEL_MOBILE, CLIENT_EMAIL FROM client, localite WHERE FK_LOCALITE=LOCALITE_ID and CLIENT_ID = '$numclimod'";
    		$result = mysql_query ($query);
    		$value = mysql_fetch_array ($result);
     
     
    		?>
    </div>
    <form method=post action=clientmenu.php?modifierclient=<?php echo $value ["CLIENT_ID"]; ?>>
     
     
      <table width="502" border="1" align="center">
        <tr> 
          <th width="21" height="23"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">Id</font></th>
          <td><?php echo $value["CLIENT_ID"]; ?> </td>
        </tr>
        <tr> 
          <th width="155"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">Localite</font></th>
          <td> <select size="1" name=localite>
              <?php
    				$requete = "SELECT LOCALITE_ID, LOCALITE_NOM, LOCALITE_NPA FROM localite, client";
    				$resultat =  mysql_query($requete);
     
    				while ($valeur=mysql_fetch_array($resultat))
     
    				{
     
    						echo "<option value =".$valeur ["LOCALITE_ID"]."if (FK_LOCALITE == LOCALITE_ID) echo 'selected'>".$valeur["LOCALITE_NOM"]."</option>\n";
     
     
     
     
     
    				}
    				//etant donnée que j'ai déjà un tableau en dessus il faut changer les noms des variables
    				?>
            </select></td>
    Qu'est -ce qu'il y a de faux

  20. #20
    Membre éclairé
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Points : 708
    Points
    708
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo '<option value ="' . $valeur['LOCALITE_ID'] . '" ';
    if ($valeur['LOCALITE_ID'] == $value['FK_LOCALITE']) echo 'selected ';
    echo '>' . $valeur['LOCALITE_NOM'] . '</option>';
    Dia [ Page DVP ] [ Site pro ]

Discussions similaires

  1. [Tableaux] Listes déroulantes dépendantes en php
    Par rach20032 dans le forum Langage
    Réponses: 3
    Dernier message: 25/08/2007, 23h39
  2. [Tableaux] Liste déroulante
    Par Net dans le forum Langage
    Réponses: 3
    Dernier message: 19/05/2006, 15h30
  3. [SQL] Liste déroulante dynamique PHP only
    Par gforce dans le forum PHP & Base de données
    Réponses: 24
    Dernier message: 11/05/2006, 21h30
  4. [Système] Liste déroulante et PHP
    Par moonia dans le forum Langage
    Réponses: 15
    Dernier message: 28/04/2006, 09h44
  5. [PHP-JS] Liste déroulante + Javascript + Php et Mysql : Besoin d'aide
    Par vampyrx dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/03/2006, 01h40

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