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

Interfaces Graphiques Perl Discussion :

récupérer les données d'un formulaire un peu spécial


Sujet :

Interfaces Graphiques Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut récupérer les données d'un formulaire un peu spécial
    tout est dit dans le titre , voici mon formulaire :

    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
    <TD align="center"><B><FONT size="3">Target nodes</FONT></B><BR>
    			<SELECT align=top name="liste1" size=6  style="width:120px">
    				<option value="AverageValues">PMNS001</OPTION>
    				<option value="BusyHourValues">PMNS002</OPTION>
    				<option value="AverageValuesTrend">PMNS003</OPTION>
    				<option value="BusyHourValuesTrend">PMNS004</OPTION>
    				<option value="ReferenceDay-CPU">PMNS005</OPTION>
    				<option value="ReferenceDay-Load">PMNS006</OPTION>
    				<option value="ReferenceDay-Memory">PMNS007</OPTION>
    			</SELECT>
    		</TD>
    		<TD align="center">
    			<INPUT type="button" value="Add >>>" onClick="Deplacer(this.form.liste1,this.form.liste2)">
    			<BR><BR>
    			<INPUT type="button" value="&lt;&lt;&lt; Remove" onClick="Deplacer(this.form.liste2,this.form.liste1)">
    		</TD>
    			<TD align="center"><FONT size="3"><B>Target nodes selected</B></FONT><BR>
    			<SELECT align=top name="liste2" size=6 style="width:120px">
    				<OPTION value="10">----------------------</OPTION>
    			</SELECT>
    		</TD>
    bon en gros c'est 2 listes une avec les items a selectionner a droite et l'autre avec les items deja selectionnés! c'est géré par un p'tit javascript :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	function Deplacer(l1,l2) {
    		if (l1.options.selectedIndex>=0) {
    			o=new Option(l1.options[l1.options.selectedIndex].text,l1.options[l1.options.selectedIndex].value);
    			l2.options[l2.options.length]=o;
    			l1.options[l1.options.selectedIndex]=null;
    		}else{
    			alert("Please select an item");
    		}
    	}
    donc je ne sais pas comment récuperer les valeurs des items selctionnés dans la liste 2 (celle de droite) j'ai tenté plusieurs choses mais sans succès...

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  2. #2
    Membre confirmé

    Inscrit en
    Janvier 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 188
    Par défaut
    elle est où ta balise <form> ?
    quelle méthode t'utilises GET ou POST ?
    il vaut mieux toujours utiliser POST (aucune limite de taille )
    balance sur un cgi ou tu lis directement l'entrée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    read(STDIN, $infosPost, $ENV{CONTENT_LENGTH});
    if (defined($infosPost)){
      print "<B>Info Post :</B><br>";
      print $infosPost."\n";
    }
    ensuite traite en manuel avec un split sur & et un foreach avec un split sur =
    ++

  3. #3
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    j'ai utiliser ton code mais comme avec mes autres tentative il n'affiche rien juste le message "info post" puis rien...

    PS: j'utilise bien la methode post et j'utilise le module CGI de perl avec un truc du genre: $req->param('nom_du_param') enfin pour les formulaire habituel mais comme ici ma liste est dynamique et est géré par du JS je n'arrive pas a choper les valeurs des elements sélectionnés

    j'ai tenté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @list = $req->param('liste2')
    mais sans succès...

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  4. #4
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    bon j'ai trouver un truc qui permet de recuperer les valeurs des elements selectionnées mais seulement il faut qu'avant d'envoyer le formulaire je selectionne tout les champs dans la liste de droite(tous en bleu!)

    c'est un peu galere! donc si quelqu'un sais comment detourner ce probleme

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  5. #5
    Membre confirmé

    Inscrit en
    Janvier 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 188
    Par défaut
    en fait cé normal ! il faut sélectionner les items pour qu'ils soient envoyés...
    en utilisant du javascript tu dois pouvoir détourner ce problème :p
    il est pas dur de lister les éléments du select.
    => tu n'as qu'à construire ton send en méthode GET :p
    i.e : une fonction JS renvoi la liste sous la forme liste2=val1&liste2=val2&liste2=val3 et tu ajoutes ce résultat sur un lien, bouton ou image de send : onclick="javascript:'pageDeRécup.cgi?'+fonctionListage(liste2);"
    je sais plus trop la syntaxe JS mais ça doit être un truc du style..
    Rq : du coup le form ne sert plus à rien...
    ++

  6. #6
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    je vais tenter de trouver une autre solution que celle que tu m'as proposée! Mais en tout cas merci pour ton aide

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  7. #7
    Membre confirmé

    Inscrit en
    Janvier 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 188
    Par défaut
    ok, si tu trouve, donne la stp
    j'avoue je vois pas trop comment tu peux faire autrement...

    une petite remarque :quand tu déplaces un élément, tu pourrais garder l'ordre au lieu d'insérer à la fin (surtout pour le remove)

  8. #8
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par ramislebob
    ensuite traite en manuel avec un split sur & et un foreach avec un split sur =
    ++
    Tu as l'air de bien t'y connaître et de t'être fait tes propres bibliothèques de fonctions, mais il serait préférable que tu indiques d'abord qu'il existe des solutions standard (CGI ici) qui font tout ça pour toi et traitent les cas particuliers sans erreurs. Tu y arrive peut-être très bien à la main, mais pour un débutant, faire cela à la main ne fait qu'introduire une très grande probabilité qu'il fasse une erreur ou qu'il laisse trainer un bug, le tout avec des désavantages certains par rapport à la réutilisation de modules (excepté du point de vue pédagogique, mais tout le monde n'est pas passionné par le détail du protocole SMTP ou du passage des paramètres à un CGI).

    Maintenant TIMTOWDI , mais je tiens à te signaler que tu ne t'adresses pas uniquement à des bricoleurs sur ce forum, mais également à des gens pour lesquels des considérations comme le temps passé à réécrire une fonctionnalité déjà disponible en standard n'est pas négligeable, sans parler du risque d'introduire des bugs subtils se faisant.

    --
    Jedaï

  9. #9
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Une solution possible serait de passer par un form, et d'attacher une fonction javascript au bouton de validation qui sélectionnerait tous les éléments de la liste 2 avant l'envoi de la requête. Ca aurait le même effet que si l'utilisateur sélectionnait tous les éléments de la liste 2 avant de valider, mais de manière transparente pour celui-ci non ?

    --
    Jedaï

  10. #10
    Mr6
    Mr6 est déconnecté
    Membre émérite

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 608
    Par défaut
    et pourquoi pas un select multiple tout simplement ? avec tous les élements sélectionnés et hop on récupère un tableau

  11. #11
    Membre confirmé

    Inscrit en
    Janvier 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 188
    Par défaut
    Citation Envoyé par Jedai
    Tu as l'air de bien t'y connaître et de t'être fait tes propres bibliothèques de fonctions, mais il serait préférable que tu indiques d'abord qu'il existe des solutions standard (CGI ici) qui font tout ça pour toi et traitent les cas particuliers sans erreurs. Tu y arrive peut-être très bien à la main, mais pour un débutant, faire cela à la main ne fait qu'introduire une très grande probabilité qu'il fasse une erreur ou qu'il laisse trainer un bug, le tout avec des désavantages certains par rapport à la réutilisation de modules (excepté du point de vue pédagogique, mais tout le monde n'est pas passionné par le détail du protocole SMTP ou du passage des paramètres à un CGI).

    Maintenant TIMTOWDI , mais je tiens à te signaler que tu ne t'adresses pas uniquement à des bricoleurs sur ce forum, mais également à des gens pour lesquels des considérations comme le temps passé à réécrire une fonctionnalité déjà disponible en standard n'est pas négligeable, sans parler du risque d'introduire des bugs subtils se faisant.

    --
    Jedaï
    t'inkiètes, j'en tiens compte
    mais ayant lu ça :
    Citation Envoyé par Jim_Nastiq
    j'ai tenté plusieurs choses mais sans succès...
    j'en ai déduit qu'il avait déjà essayé la méthode standard param du module CGI... je suis donc passé à l'autre méthode. il ne me semble pas qu'il y ait beaucoup de choix :s
    sur qu'il faut donner les solution les plus simple et rapide en ligne de code mais je pense que des codes plus à la main peuvent peut intéresser certaines personnes :p un code ça se lit viteuf, ça montre une autre méthode, ça peut se réutiliser...
    et puis il y a quand même sur ce forum des gens qui aiment bien le code il me semble

    Citation Envoyé par Jedai
    Une solution possible serait de passer par un form, et d'attacher une fonction javascript au bouton de validation qui sélectionnerait tous les éléments de la liste 2 avant l'envoi de la requête. Ca aurait le même effet que si l'utilisateur sélectionnait tous les éléments de la liste 2 avant de valider, mais de manière transparente pour celui-ci non ?
    yep, ça me parrait LA meilleure solution. bien vu
    allez, je l'ai fait en deux deux :

    le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <form name="form112" METHOD=POST action="http://www.pageDeRecup.cgi">
    <select name="select112" size=5 multiple>
    	<option value="first">first option</option>
    	<option value="second">second option</option>
    	<option value="third">third option</option>
    </select><br><br>
    <INPUT type="submit" value="SEND All ^^" onClick="SelectAll(this.form.select112)">
    </form>
    la fonction JS (à mettre dans le HEAD !!! => forcément chargé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function SelectAll(l) {    
        for(i=0; i<l.length; i++){
    	l.options[i].selected=true;
        }
    }
    PS : j'ai test, marche nickel :p
    ++

  12. #12
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    Et bien que dire face a une telle reunion de cerveau pour m'aider !

    en tout cas merci a tous(et aussi a Oluha cf le post en HTML) j'avais fait ma propre fonction JS comme Oluha me l'avait prédit, et ca fonctionnait et j'ai testé egalement la soluce de ramislebob(quasi identique ) !

    bref un succes tout ca quoi(a defaut d'un succes hier soir )

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 16/01/2020, 14h21
  2. [ezPDF] Récupérer les données d'un formulaire dans mon pdf
    Par Lenalyon dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 28/04/2008, 15h38
  3. [FORM] récupérer les données d'un formulaire
    Par dragonfly dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 04/12/2007, 13h53
  4. Réponses: 14
    Dernier message: 15/05/2007, 14h51
  5. Récupérer les données d'un formulaire
    Par rimeh dans le forum Langage
    Réponses: 12
    Dernier message: 05/02/2007, 14h58

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