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

4D Discussion :

Liste déroulante HTML et préselection


Sujet :

4D

  1. #1
    Membre régulier Avatar de Patrice.H
    Homme Profil pro
    Étudiant en alternance
    Inscrit en
    Février 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant en alternance

    Informations forums :
    Inscription : Février 2010
    Messages : 82
    Points : 111
    Points
    111
    Par défaut Liste déroulante HTML et préselection
    Bonjour,
    j'essaie d'adapter un morceau de formulaire 4D sous forme de page web.
    Je voudrais (après avoir sélectionné l'enregistrement voulu) afficher une liste déroulante proposant "Mme, Mr, Mlle" qui affiche le genre actuellement renseigné dans ma table [CLIENTS] dans 4D.

    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
     
    <!--Affichage pour le debug (affiche "Mlle")-->
    <!--#4DVAR [CLIENTS]Gène-->
     
                <select name="gène">
                    <!--#4DIF([CLIENTS]Gène="Mlle")-->
                        <!--Selected si la variable est "Mlle"-->
                        <option  selected="selected" value="Mlle">Mlle</option> 
                    <!--#4DELSE-->
                        <option value="Mlle">Mlle</option>
                        <!--Pas de selected si la variable est différente-->
                    <!--#4DENDIF-->
     
                    <!--#4DIF([CLIENTS]Gène="Mr")-->
                        <option value="Mr"  selected="selected">Mr</option>
                    <!--#4DELSE -->
                        <option value="Mr">Mr</option>
                    <!--#4DENDIF-->
     
                    <!--#4DIF([CLIENTS]Gène="Mme")-->
                        <option value="Mme"  selected="selected">Mme</option>
                    <!--#4DELSE -->
                        <option value="Mme">Mme</option>
                    <!--#4DENDIF-->
     
                </select>
    Ma liste déroulante m'affiche curieusement deux fois Mr, deux fois Mlle et deux fois Mme. Le programme passe donc dans les deux parties de chaque "if". Pourtant la variable en debug au départ indique bien "Mlle" comme valeur.

    Merci pour vos conseils.
    "Il n'y a que deux façons d'avoir le dernier mot avec une femme. Le problème, c'est qu'aucune ne marche."
    Samuel Clemens

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 162
    Points : 193
    Points
    193
    Par défaut
    Essaies comme ça peut-être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option <!--#4DIF ([CLIENTS]Gène="Mlle")-->selected="selected"<!--#4DENDIF--> value="Mlle">Mlle</option>

  3. #3
    Membre confirmé Avatar de ZeFiF
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2008
    Messages
    303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 303
    Points : 486
    Points
    486
    Par défaut
    Bonjour,

    le 4DIF n'est pas très pratique tu as pu t'en rendre compte.

    Je te suggère une autre approche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <select name="gène">
    <!--#4DSCRIPT methode_lesoptions-->
    </select>
    la méthode appelée fera tout les tests que tu souhaites
    et renverra par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $0:=<option value="Mr"  selected="selected">Mr</option>
    HTH
    FiF

  4. #4
    Membre régulier Avatar de Patrice.H
    Homme Profil pro
    Étudiant en alternance
    Inscrit en
    Février 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant en alternance

    Informations forums :
    Inscription : Février 2010
    Messages : 82
    Points : 111
    Points
    111
    Par défaut
    Merci pour vos réponses. J'ai d'abord essayé la méthode de stanc car elle m'évitait d'avoir à encombrer la base d'une méthode supplémentaire mais elle ne fonctionne pas. Me voilà de moins en moins convaincu par les #4DIF...

    J'ai donc utilisé ton approche ZeFIF:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <select name="gène">
    <!--#4DSCRIPT/WebGETGENE--> (la méthode est séparée par un "/" et pas un espace)
    </select>
    Le code de ma méthode "WebGETGENE:
    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
     
    TRACE**`Récupérer le "gène" du client affiché et préselectionner le gène adéquat dans la liste déroulante
    C_TEXTE($0;$1;$codehtml)
     
    Si ([CLIENTS]Gène="M.")
        $codehtml:="<option selected=\"selected\" value=\"M.\">M.</option> <option value=\"Mme\">Mme</option>  <option value=\"Mlle\">Mlle</option> "
    Sinon 
        Si ([CLIENTS]Gène="Mme")
            $codehtml:="<option selected=\"selected\" value=\"Mme\">Mme</option> <option value=\"M.\">M.</option>  <option value=\"Mlle\">Mlle</option> "
        Sinon 
            Si ([CLIENTS]Gène="Mlle")
                $codehtml:="<option selected=\"selected\" value=\"Mlle\">Mlle</option> <option value=\"M.\">M.</option>  <option value=\"Mme\">Mme</option> "
            Sinon 
                $codehtml:="Erreur"
            Fin de si 
        Fin de si 
    Fin de si 
    ENVOYER TEXTE HTML($codehtml)
    J'ai également tenté avec le code suivant en dernière ligne sans plus de succès:
    Cordialement,
    Patrice.
    "Il n'y a que deux façons d'avoir le dernier mot avec une femme. Le problème, c'est qu'aucune ne marche."
    Samuel Clemens

  5. #5
    Membre confirmé Avatar de ZeFiF
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2008
    Messages
    303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 303
    Points : 486
    Points
    486
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $selected1:="Selected"*(num([CLIENTS]Gène="M."))
    $selected2:="Selected"*(num([CLIENTS]Gène="Mme"))
    $selected3:="Selected"*(num([CLIENTS]Gène="Mlle"))
     
    $ze_texte:=caractere(1)
    $ze_texte:=$ze_texte+"<option value=\"M.\" "+$selected1+">M.</option>"+caractere(13)
    $ze_texte:=$ze_texte+"<option value=\"Mme\" "+$selected2+">Mme</option>"+caractere(13)
    $ze_texte:=$ze_texte+"<option value=\"Mlle\" "+$selected3+">Mle</option>"+caractere(13)
     
    $0:=$ze_texte
    N.B : tapé en direct sur le web et pas testé dans 4D...

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 162
    Points : 193
    Points
    193
    Par défaut
    Citation Envoyé par Patrice.H Voir le message
    Merci pour vos réponses. J'ai d'abord essayé la méthode de stanc car elle m'évitait d'avoir à encombrer la base d'une méthode supplémentaire mais elle ne fonctionne pas. Me voilà de moins en moins convaincu par les #4DIF...
    Tu m'en vois fort étonné car je l'utilise avec succès avec les attributs checked ou disabled. La technique fonctionne, ça c'est sûr. Le problème vient d'autre part. Tes soucis avec l'autre technique #4DSCRIPT me confortent dans cette idée.
    Essaies d'enlever l'accent dans le nom du champ Gène. C'est possible que ça le gêne. D'une manière générale, c'est mieux de ne pas mettre d'accent en structure pour être conforme à la norme sql si tu es amené à l'utiliser.

  7. #7
    Membre régulier Avatar de Patrice.H
    Homme Profil pro
    Étudiant en alternance
    Inscrit en
    Février 2010
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant en alternance

    Informations forums :
    Inscription : Février 2010
    Messages : 82
    Points : 111
    Points
    111
    Par défaut
    Avec un peu d'acharnement les deux méthodes fonctionnent bien (ouf).

    Citation Envoyé par stanc Voir le message
    Essaies d'enlever l'accent dans le nom du champ Gène. C'est possible que ça le gêne. D'une manière générale, c'est mieux de ne pas mettre d'accent en structure pour être conforme à la norme sql si tu es amené à l'utiliser.
    En effet, c'était l'accent! Je suis contre leur utilisation dans les noms de tables/fichiers/variable, mais la base que j'utilise est celle d'un logiciel déjà en production depuis un moment, cela risque de rester ainsi malheureusement...

    Citation Envoyé par ZeFiF
    N.B : tapé en direct sur le web et pas testé dans 4D...
    Bien joué ça fonctionne du premier coup. J'avais jamais pensé à l'astuce du *booléen pour écrire des conditions rapidement, j'en prends bonne note!


    Au final je pense garder la méthode de stanc pour ne pas encombrer la base, déjà surchargée de méthodes.

    Merci à tous les deux!
    "Il n'y a que deux façons d'avoir le dernier mot avec une femme. Le problème, c'est qu'aucune ne marche."
    Samuel Clemens

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 162
    Points : 193
    Points
    193
    Par défaut
    Citation Envoyé par Patrice.H Voir le message
    J'avais jamais pensé à l'astuce du *booléen pour écrire des conditions rapidement, j'en prends bonne note!
    Tu peux faire plus simple encore avec la fonction Choisir http://doc.4d.com/4D-Langage-12/Outi...155245.fr.html. Elle peut aussi prendre un entier en paramètre.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/03/2012, 17h09
  2. Enrichir une liste déroulante HTML
    Par bernes dans le forum VBScript
    Réponses: 2
    Dernier message: 15/09/2010, 15h43
  3. [HTML] Liste déroulante html
    Par pigeon11 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 26/06/2008, 17h41
  4. Liste déroulante html
    Par khamett dans le forum Langage
    Réponses: 8
    Dernier message: 25/02/2008, 21h48
  5. [HTML] Liste déroulante
    Par Boeing dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 20/12/2004, 19h16

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