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

XMLRAD Discussion :

formulaire choix multiple


Sujet :

XMLRAD

  1. #1
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 130
    Points : 58
    Points
    58
    Par défaut formulaire choix multiple
    Bonjour,

    Comment peut on récupérer dans un xmlService les champs issus d'une liste déroulante à choix multiples d'un formulaire

    Merci d'avance

  2. #2
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    c'est pas possible avec ce type la.
    utilise plutot checkbox.
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 284
    Points : 349
    Points
    349
    Par défaut <select> multiple
    La réponse courte :
    pas possible, il faut utiliser la technique avancée du pivot.

    La réponse longue :

    Le Framework XMLCLX ne supporte pas le passage de multiples paramètres HTTP portant le mêmes noms.

    Voici la raison :

    En exemple, le code html utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     <select name="test" mode="multiple">
      <option value="1">...</option>
      <option value="2">...</option>
      <option value="3">...</option>
    </select>
    Si l'utilisateur sélectionne l'option 1 et 2, la requete HTTP (en GET ici pour une meilleure compréhension) serait :
    Lorsque le Framework dispatch la requete, il interprète les paramètres et les placent dans le Context, en fonction du nom.
    Il placera donc le champ test avec la valeur 1 une permiere fois dans le Context. Puis il placera le champ test avec la valeur 2 dans le Context.
    Le probleme... C'est que le Context est un tableau hashé qui ne supporte pas 2 champs portant le meme nom... La deuxième valeur écrase donc la première.

    Pour s'en sortir, il faut laisser tomber le <SELECT> mode multiple inutilisable et utiliser la technique du Pivot avec une liste de checkbox.

    Pour cela, vous construiser votre formulaire comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <form name="..." action="..." post="...">
      <input type="hidden" name="XMLC_Pivot" value="OPTION" />
      ...
      <xsl:for-each select="Item">
          <input type="checkbox" name="OPTION[{position()}].ITEM_ID" value="{ITEM_ID} />
        <xsl:value-of select="ITEM_NAME" />
      <xsl:for-each>
    </form>
    Le XMLC_Pivot indique le champ à pivoter. Le nom est à votre guise. Généralement, c'est le node-name sur lequel on travaille (publisher, ORG ou ce que vous voulez).

    Le xsl:for-each peut bien sûr etre remplacé par des templates match. Il permet de matcher sur tous les éléments que vous voulez voir apparaitre dans votre liste. Si vous n'avez pas cette liste dans le XML, à vous de la construire directement en placant correctement les <input type="checkbox">

    Ensuite chaque champ porte un nom différent. Dans l'exemple, après construction par le for-each, le premier Item créera un <input type="checkbox" name="OPTION[1].ITEM_ID" value="1001" />

    Lorsque vous validerez cette requete, le Framework construira un InputDoc avant l'éxécution du XMLService, qui contiendra la structure suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <Context>
      <OPTION>
        <ITEM_ID>1001</ITEM_ID>
      <OPTION>
      ...
    </Context>
    Vous pourrez y accéder par code, dans le BeforeXMLGRAM ou bien utiliser l'instruction Match dans le XMLGram directement, pour décrire un traitement s'éxécutant pour chaque OPTION. (Voir http://www.xmlrad.com/Manual/Appendix13/index.htm sur le XMLGRAM pour plus d'infos sur match)

    Voila !
    Nicolas

  4. #4
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 130
    Points : 58
    Points
    58
    Par défaut
    OK. Mais j'avais opté pour une combo pour un soucis de place. Avec l'attribut size=1 cela s'intégrait très facilement dans ma page (en fait la combo est utilisé ici pour filtrer les lignes d'une table). Une checkbox m'oblige à modifier l'architecture de ma page ou alors à afficher cette checkbox dans une fenetre popup(?) (les contraintes sont plus importantes : javascript (obligatoire?),xmlservice supplémentaire, moins pratique et moins joli...).

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 284
    Points : 349
    Points
    349
    Par défaut interface
    Pour une interface coquette, il serait possible de placer les checkbox dans un div, et d'utiliser du javascript/css pour l'afficher ou pas, avec ou sans scrollbar, etc...

    Il serait possible de recréer l'equivalent d'un <select> avec cette technique, mais effectivement, ca necessiterait un peu de html avancé...

    La popup n'est généralement pas conseillée, parce qu'on a toutes les chances de retrouver 50 fenetres IE ouvertes sur le bureau des utilisateurs. Les popups sont rarement la bonne solution...
    Nicolas

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 99
    Points
    99
    Par défaut
    Si tu tiens absolument à utiliser une combobox en mode multiple, il te faudra parcourir le Context à la main. En effet, les valeurs sélectionnées dans ta combobox seront de cette forme :

    test=1
    test=4

    Le Context ne permet pas, comme le dit Nicolas, de stocker plusieurs valeurs pour un champ portant le même nom. Ce sera à toi de parcourir tout le tableau du Context en testant le nom du champ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for I := 0 to Context.Count-1 do
    begin
      FieldName := Context.GetName(I);
      if FieldName = 'test' then
      begin
        ...
      end;
    end;
    Voilàx !

    A+
    Julien C.

  7. #7
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    nop, comme le context est haché, le nom va donner la meme clé et donc va écraser la valeur précédente., il n'y a pas moyen de retrouver les anciennes valeurs portant le meme nom dans le Context.
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

Discussions similaires

  1. [ODBC] Adapter la requête à un formulaire à choix multiple
    Par razily dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/06/2010, 16h09
  2. Formulaire à choix multiple
    Par popy67 dans le forum Langage
    Réponses: 2
    Dernier message: 14/07/2008, 13h56
  3. formulaire Choix multiple
    Par nadia68 dans le forum IHM
    Réponses: 2
    Dernier message: 23/12/2006, 03h38
  4. formulaire choix multiple
    Par vanou dans le forum ASP
    Réponses: 9
    Dernier message: 07/06/2006, 15h41
  5. procédure pour une MAJ d'un formulaire à choix multiple
    Par Zen_Fou dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 26/05/2006, 14h46

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