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 :

Selection automatique dans une liste


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Points : 206
    Points
    206
    Par défaut Selection automatique dans une liste
    Bonjour à tous !

    Je vous expose mon problème.
    Je cherche à automatiser la selection d'un certain élément lorsque j'arrive sur la page.

    Voici la liste en question :

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    <form action="liste_pc_section.php" method="post" name="myform">
            <tr>
              <td align="center" ><select name="year[]" multiple>
                <option value="2008">2008</option>
                <option value="2009">2009</option>
                <option value="2010">2010</option>
                <option value="2011">2011</option>
                <option value="2012">2012</option>
                <option value="2013">2013</option>
              </td>
     
            <tr>
              <td align="center" ><select name="mois[]" multiple>
                <option value="Avril">Avril</option>
                <option value="Mai">Mai</option>
                <option value="Juin">Juin</option>
                <option value="Juillet">Juillet</option>
                <option value="Aout">Aout</option>
                <option value="Septembre">Septembre</option>
                <option value="Octobre">Octobre</option>
                <option value="Novembre">Novembre</option>
                <option value="Decembre">Decembre</option>
                <option value="Janvier">Janvier</option>
                <option value="Fevrier">Fevrier</option>
                <option value="Mars">Mars</option>
              </td>
            </tr>
     
            <tr>
    	    <td>
    		 <input type="radio" name="choix1">Les PC par section
    	    </td>
    	</tr>
    	<tr>
    	     <td>
    		 <input type="radio" name="choix2">Afficher les PC en trop
    	     </td>
    	</tr>
            <tr>
              <td align="center" colspan="2">
                <input type="reset" name="Reset" value ="Reset" >&nbsp;<input type="submit" value="Submit">
              </td>
            </tr>
          </form>
    Comme vous pouvez le constater, cette liste ( encore au format de test, pas encore dynamique pour les années ) contient des mois et des années.

    Je cherche à sélectionner un mois et une année en fonction de la date actuelle. N'y a t-il pas d'autres moyens que de faire un if sur chaque "option" en testant si le mois est correspondant du genre :

    SI ( mois_courant EGAL mois_testé )
    ALORS On place une balise selected avec l'option
    SINON on affiche juste l'option

    ???

    Bien cordialement.
    La politesse n'a jamais tué personne
    Le langage SMS c'est le mal !
    Pensez au tag

  2. #2
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    ba non y a pas d'autre moyen t'aurais voulu quoi?
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 60
    Points : 75
    Points
    75
    Par défaut
    tu va faire une boucle pour afficher tes mois ?
    donc ça rajoute juste 1 ligne dans ta boucle....

  4. #4
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Points : 206
    Points
    206
    Par défaut
    Il faut que je fasse le test (if) sur chaque option pour afficher le selected qui va bien non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php 
    if(strcasecmp($moisencours, "avril") == 0)
    {
    ?>
    <option value="Avril" selected>Avril</option>
    <?php 
    }
    else 
    { 
    ?>
    <option value="Avril">Avril</option>
    <?php 
    } 
    ?>
    Et ce, sur toutes les options ? Ca surcharge bien le code non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php 
    if(strcasecmp($moisencours, "avril") == 0)
        echo '<option value="Avril" selected>Avril</option>';
    else 
        echo '<option value="Avril">Avril</option>';
    ?>
    Peut être un peu mieux non ?
    Bien cordialement

    EDIT : Ce que je veux, c'est que quand j'arrive sur ma page, les choix mois et année soient selectionnés en fonction de la date actuelle.
    La politesse n'a jamais tué personne
    Le langage SMS c'est le mal !
    Pensez au tag

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour à tous

    Tu as peut-être l'impression que ce n'est pas très propre ou que c'est lourd mais ça reste du traitement assez simple, même si il y a beaucoup d'instructions.

    Si tu es à l'aise avec l'opérateur ternaire tu peux alléger l'apparence du code comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (condition) ? instruction si TRUE : instruction si FALSE
    Même si là n'est pas la question, je vois que ton code HTML n'est pas très propre :

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    <form action="liste_pc_section.php" method="post" name="myform">
        <tr>
            <td align="center" >
                <select name="year[]" multiple>
                    <option value="2008">2008</option>
                    <option value="2009">2009</option>
                    <option value="2010">2010</option>
                    <option value="2011">2011</option>
                    <option value="2012">2012</option>
                    <option value="2013">2013</option>
            </td>
            <tr>
                <td align="center" >
                    <select name="mois[]" multiple>
                        <option value="Avril">Avril</option>
                        <option value="Mai">Mai</option>
                        <option value="Juin">Juin</option>
                        <option value="Juillet">Juillet</option>
                        <option value="Aout">Aout</option>
                        <option value="Septembre">Septembre</option>
                        <option value="Octobre">Octobre</option>
                        <option value="Novembre">Novembre</option>
                        <option value="Decembre">Decembre</option>
                        <option value="Janvier">Janvier</option>
                        <option value="Fevrier">Fevrier</option>
                        <option value="Mars">Mars</option>
                </td>
            </tr>
            <tr>
                <td>
                    <input type="radio" name="choix1">Les PC par section
                </td>
            </tr>
            <tr>
                <td>
                    <input type="radio" name="choix2">Afficher les PC en trop
                </td>
            </tr>
            <tr>
                <td align="center" colspan="2">
                    <input type="reset" name="Reset" value ="Reset" >&nbsp;<input type="submit" value="Submit">
                </td>
            </tr>
    </form>

    • Il faut penser à utiliser la balise fermante </select>
      Citation Envoyé par W3C
      Les éléments SELECT, OPTGROUP et OPTION
      Balise ouvrante : obligatoire, balise fermante : obligatoire
      source : Traduction des spécification HTML 4.01 en Français

    • Il faut éviter d'utiliser des valeurs d'attributs trop exotiques, tu as mis des crochets !! :
      Citation Envoyé par W3C
      Les types SGML de base
      Les atomes ID et NAME doivent commencer par une lettre ([A-Za-z]), qui peut être suivie par un nombre quelconque de lettres, de chiffres ([0-9]), de caractères trait d'union « - », souligné « _ », deux-points « : » et points « . ».
      source : Traduction des spécification HTML 4.01 en Français


    • Il me semble que tu utilises les tableaux pour mettre en forme ta page. Ce n'est pas très efficace et c'est dépassé, il est désormais TRÈS conseillé d'utiliser (x)HTML pour la structure semantique et les feuilles de style CSS pour la mise en forme.



    http://xhtml.developpez.com/cours/

    Bien sûr ce ne sont que des conseils et des suggestions
    Dernière modification par Invité ; 27/08/2010 à 11h25. Motif: Corrections d'erreurs de frappe

  6. #6
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Points : 206
    Points
    206
    Par défaut
    Merci beaucoup
    Ce sont des conseils, mais ils sont à suivre :p

    Bien cordialement.
    La politesse n'a jamais tué personne
    Le langage SMS c'est le mal !
    Pensez au tag

  7. #7
    Invité
    Invité(e)
    Par défaut
    Voici ce que cela donnerait, en effectuant les modifications suivantes :

    • Remplacement des attributs align="center" par style="text-align:center;"
    • Fermeture des balises <selected> : ( </selected> )
    • Ajouts des balises manquantes
    • Suppression des attributs value sur les balises <option> : Ce n'est pas une erreur, mais cet attribut n'est pas obligatoire, il est inutile si la valeur envoyée par le formulaire est la même que la valeur située entre les balises <option> </option>.
      En effet, ceci :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      <select name="foo">
                  <option value="choix1">choix1</option>
                  <option value="choix2">choix2</option>
      </select>
      est exactement équivalent à ceci :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      <select name="foo">
                  <option>choix1</option>
                  <option>choix2</option>
      </select>
      L'attribut value n'a d'interêt que lorsque l'on veut attribuer une valeur différente du texte affiché dans la liste déroulante :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      <select name="foo">
                  <option value="choix1">Le choix N° 1</option>
                  <option value="choix2">Le choix N° 2</option>
      </select>
    • Utilisation de l'opérateur ternaire


    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <?php
     
    echo '<form action="liste_pc_section.php" method="post" name="myform">
        <tr>
            <td style="text-align:center;">
                <select name="year" multiple>';
     
    ($anneeEnCours == '2008') ? echo '                <option selected>2008</option>' : echo '                <option>2008</option>';
    ($anneeEnCours == '2009') ? echo '                <option selected>2009</option>' : echo '                <option>2009</option>';
    ($anneeEnCours == '2010') ? echo '                <option selected>2010</option>' : echo '                <option>2010</option>';
    ($anneeEnCours == '2011') ? echo '                <option selected>2011</option>' : echo '                <option>2011</option>';
    ($anneeEnCours == '2012') ? echo '                <option selected>2012</option>' : echo '                <option>2012</option>';
    ($anneeEnCours == '2013') ? echo '                <option selected>2013</option>' : echo '                <option>2013</option>';
     
    echo '            </selected>
            </td>
        </tr>
        <tr>
            <td style="text-align:center;">
                <select name="mois" multiple>';
     
    (strcasecmp($moisencours, 'Janvier') == 0 ) ? echo '<option selected>Janvier</option>' : echo '<option>Janvier</option>';
    (strcasecmp($moisencours, 'Fevrier') == 0 ) ? echo '<option selected>Fevrier</option>' : echo '<option>Fevrier</option>';
    (strcasecmp($moisencours, 'Mars') == 0 ) ? echo '<option selected>Mars</option>' : echo '<option>Mars</option>';
    (strcasecmp($moisencours, 'Avril') == 0 ) ? echo '<option selected>Avril</option>' : echo '<option>Avril</option>';
    (strcasecmp($moisencours, 'Mai') == 0 ) ? echo '<option selected>Mai</option>' : echo '<option>Mai</option>';
    (strcasecmp($moisencours, 'Juin') == 0 ) ? echo '<option selected>Juin</option>' : echo '<option>Juin</option>';
    (strcasecmp($moisencours, 'Juillet') == 0 ) ? echo '<option selected>Juillet</option>' : echo '<option>Juillet</option>';
    (strcasecmp($moisencours, 'Aout') == 0 ) ? echo '<option selected>Aout</option>' : echo '<option>Aout</option>';
    (strcasecmp($moisencours, 'Septembre') == 0 ) ? echo '<option selected>Septembre</option>' : echo '<option>Septembre</option>';
    (strcasecmp($moisencours, 'Octobre') == 0 ) ? echo '<option selected>Octobre</option>' : echo '<option>Octobre</option>';
    (strcasecmp($moisencours, 'Novembre') == 0 ) ? echo '<option selected>Novembre</option>' : echo '<option>Novembre</option>';
    (strcasecmp($moisencours, 'Decembre') == 0 ) ? echo '<option selected>Decembre</option>' : echo '<option>Decembre</option>';
     
    echo '            </select>
            </td>
        </tr>
        <tr>
            <td>
                <input type="radio" name="choix1">Les PC par section
            </td>
        </tr>
        <tr>
            <td>
                <input type="radio" name="choix2">Afficher les PC en trop
            </td>
        </tr>
        <tr>
            <td style="text-align:center;" colspan="2">
                <input type="reset" name="Reset" value ="Reset" >&nbsp;<input type="submit" value="Submit">
            </td>
        </tr>
    </form>
    
    ?>
    Après, on peut encore plus simplifier et optimiser. La liste par exemple, pourrait être générée en fonction de l'année courante (afficher de année -2 à année +3 par exemple)

    Je ne sais pas comment tu testes $moisencours mais tu pourrais lui attribuer la valeur de date(m).

    Comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $moisencours = date(m);
     
    // puis tester ainsi : 
     
    ($moisencours == '01') ? echo '<option selected>Janvier</option>' : echo '<option>Janvier</option>';

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 60
    Points : 75
    Points
    75
    Par défaut
    oui, ou avec une boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    echo '<select>'."\n";
    $une_annee = array(1 => 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'Decembre');
     
    $mois_courant = date('n');
    foreach($une_annee as $no_mois => $mois) {
    $no_mois == $mois_courant ? $selected = ' selected="selected"' : $selected = ' ';
    echo "\t".'<option value="'. $mois .'"'. $selected .'>'. $mois .'</option>'."\n";
    }
    echo '</select>';

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 17
    Dernier message: 23/12/2009, 17h12
  2. Calcul automatique dans une list
    Par todoweb dans le forum SharePoint
    Réponses: 2
    Dernier message: 21/10/2009, 17h29
  3. Réponses: 2
    Dernier message: 22/09/2009, 17h56
  4. [VB6] [Acess2007] selection champ dans une liste
    Par ptit_fumiste dans le forum VBA Access
    Réponses: 1
    Dernier message: 10/02/2009, 19h02
  5. Déposer un fichier automatiquement dans une list sharepoint
    Par nico18987 dans le forum SharePoint
    Réponses: 7
    Dernier message: 22/12/2007, 12h19

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