Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2022 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  [CGI] Encore du nouveau : probleme avec formulaire

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Page Précédente
Auteur Sujet :

[CGI] Encore du nouveau : probleme avec formulaire

n°724038
malcolm x
Posté le 13-05-2004 à 00:25:42  profilanswer
 

Salut,  
bon bah en fait je dois faire un formulaire sous perl/CGI et je m'y connais pas trop trop.
En fait j'aurais besoin d'un formulaire qui se deroule en plusieurs etapes suivant les donnees recupereees lors de l'etape precedente.
En clair, je voudrais que, suivant la valeur d'une variable, une nouvelle page CGI s'ouvre (differente dans chaque cas) et que l'on puisse continuer a remplir le formulaire a partir de cette nouvelle page.
 
Si quelqu'un a une idee, merci.
 
PS : sinon, je voudrais savoir si y'a y'aurais aussi un moyen de garder les donnees recuperees depuis les pages precedentes ou si je dois les stocker moi meme dans des fichiers temporaires ?


Message édité par malcolm x le 28-05-2004 à 20:09:05
mood
Publicité
Posté le 13-05-2004 à 00:25:42  profilanswer
 

n°724053
burgergold
5$? va chez l'diable!
Posté le 13-05-2004 à 00:42:15  profilanswer
 

un gros cgi avec différents choix
 
ex: si tel condition, afficher section b-1
si tel condition, afficher section b-2
sinon, afficher section a
 
pour garder les données, l'idéal serait de créer un entrée dans une DB avec un ID de formulaire, qui serait passé en parametre entre chaque formulaire.
 
Si pas de DB, tu fais place les variables à être conservés dans un input hidden. Par contre, niveau sécurité c'est pas la meilleur solution
 
Sinon, tu stock dans des fichiers temporaires, mais c'est une solution moins propre.


---------------
http://www.boincstats.com/signature/user_664861.gif
n°724057
malcolm x
Posté le 13-05-2004 à 00:47:35  profilanswer
 

en fait, pour le moment ce que je voudrais faire c savoir comment ds le script je lui dis d'ouvrir une nouvelle page Internet ?

n°724058
malcolm x
Posté le 13-05-2004 à 00:50:05  profilanswer
 

comment on fait pour le rediriger sur une nouvelle page c'est a dire la suite du formulaire ?

n°724059
burgergold
5$? va chez l'diable!
Posté le 13-05-2004 à 00:50:23  profilanswer
 

tu n'ouvres pas une nouvelle page, tu fais des print du code html que le client doit recevoir


---------------
http://www.boincstats.com/signature/user_664861.gif
n°724064
malcolm x
Posté le 13-05-2004 à 00:58:57  profilanswer
 

Je regarde mais si tu pouvais etre plus explicite (genre me mettre un exemple pour le code) : desole je debute

n°724066
malcolm x
Posté le 13-05-2004 à 01:02:23  profilanswer
 

Voila, je te file mon code actuel, c'est juste pour faire un essai :
 
#!/usr/bin/perl
use strict;
use CGI qw(:standard);
 
print header, start_html("Protocol for measuring energy use" ), h1("<body bgcolor='aliceblue'><center>Protocol for measuring<
br> appliance energy use</center>" );
 
 
if (param()) {
my $type = param("type" );
if ($type eq "Refrigerator" ) {  
print p http://pams.lbl.gov/yann/protocol_ [...] tocol.cgi;  
} else {  
print p("Pas bon" );  
}  
} else {
print hr();
print start_form();
print p("<font size='4'><b>What type of appliance ? ", popup_menu("type", ['Refrigerator','Washing_machine','Clothes_dryer',
'Room_air_conditionner']));
print br();
print p(submit("Submit" ), reset("Cancel" ));
print end_form(), hr();
}
print end_html;
 
 
 
Voila, mais je pense pas que c'est ca pour le print !

n°724067
burgergold
5$? va chez l'diable!
Posté le 13-05-2004 à 01:03:27  profilanswer
 

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. print "
  4. <html>
  5.   <head>
  6.   </head>
  7.   <body>
  8.     <div>allo toto</div>
  9.   </body>
  10. </html>";


---------------
http://www.boincstats.com/signature/user_664861.gif
n°724069
malcolm x
Posté le 13-05-2004 à 01:07:09  profilanswer
 

en fait je voudrais que si la variable vaut Refrigerator, que ca ouvre la page http://pams.lbl.gov/yann/protocol_ [...] tocol.cgi; qui n'est pas la page source dont est tire le code que je t'ai file


Message édité par malcolm x le 13-05-2004 à 01:07:29
n°724070
burgergold
5$? va chez l'diable!
Posté le 13-05-2004 à 01:08:09  profilanswer
 

ce 2protocol.cgi c'est toi qui va devoir le faire? ou c'est à l'interne de ta compagnie? ou c'est à l'externe?


---------------
http://www.boincstats.com/signature/user_664861.gif
mood
Publicité
Posté le 13-05-2004 à 01:08:09  profilanswer
 

n°724072
malcolm x
Posté le 13-05-2004 à 01:09:27  profilanswer
 

c moi, il existe deja
dans l'absolu ca serait la page 2 de mon formulaire, la page 1 etant celle qui contient le code que je t'ai file (je pense avoir besoin de 3 ou 4 pages ou total pour le formulaire)


Message édité par malcolm x le 13-05-2004 à 01:11:11
n°724073
burgergold
5$? va chez l'diable!
Posté le 13-05-2004 à 01:10:46  profilanswer
 

je te dirais que l'idéal, c'est de faire qu'un seul cgi qui s'occupe de toutes les possibilités
 
si tu veux pas faire ainsi, affiche une page html banal avec un meta redirect vers ton cgi


---------------
http://www.boincstats.com/signature/user_664861.gif
n°724077
malcolm x
Posté le 13-05-2004 à 01:14:56  profilanswer
 

le pb , c que ca va etre super chaud a gerer parce que je vais avoir moultes possibilites pour le choix du tyoe d'appareil et apres en fonction du type, moultes possibilites pour le numero de modele ...
 
Sinon, y'a un moyen pour que quand un popup_menu est rentre, pour que le suivant ne propose que les choix relatif au choix fait (dans mon cas du type d'appareil choisi) et que les choix relatifs aux autres appareils ne soient pas proposes dans le popup_menu ?

n°724078
malcolm x
Posté le 13-05-2004 à 01:15:49  profilanswer
 

Burgergold a écrit :

je te dirais que l'idéal, c'est de faire qu'un seul cgi qui s'occupe de toutes les possibilités
 
si tu veux pas faire ainsi, affiche une page html banal avec un meta redirect vers ton cgi


 
c pas possible de faire ca depuis le cgi initial ?

n°724079
burgergold
5$? va chez l'diable!
Posté le 13-05-2004 à 01:19:07  profilanswer
 

malcolm x a écrit :

c pas possible de faire ca depuis le cgi initial ?


 
ca se fait mais pas très proprement...
 

Code :
  1. my @html = `ton_2e_cgi.cgi param1=1 param2=2`;
  2. print @html;


---------------
http://www.boincstats.com/signature/user_664861.gif
n°724083
malcolm x
Posté le 13-05-2004 à 01:22:12  profilanswer
 

c quoi param1=1 et param2=2 ?

n°724084
malcolm x
Posté le 13-05-2004 à 01:23:25  profilanswer
 

au fait merci pour tes reponses, je sais qu'il est tard en France.
Merci bcp

n°724087
burgergold
5$? va chez l'diable!
Posté le 13-05-2004 à 01:27:38  profilanswer
 

19hrs25 au québec :D
 
bin les param1=1 et param2=2 c'est les valeurs que tu veux passer au second formulaire
 
sous la forme name=value


---------------
http://www.boincstats.com/signature/user_664861.gif
n°724088
malcolm x
Posté le 13-05-2004 à 01:29:52  profilanswer
 

Burgergold a écrit :

19hrs25 au québec :D
 
bin les param1=1 et param2=2 c'est les valeurs que tu veux passer au second formulaire
 
sous la forme name=value


 
ok
 
sinon, 16h28 a San Francisco
 
mais ca marche pas, je dois faire une erreur quelque part
juste la partie du code que g change par rapport a tout a l'heure :  

Code :
  1. my $type = param("type" );
  2. if ($type eq "Refrigerator" ) {
  3. my @html = `http://pams.lbl.gov/yann/protocol_electricity_meter/CGI_forms/2protocol.cgi param1=1 param2=2`;
  4. print @html;
  5. } else {
  6. print p("Pas bon" );
  7. }

n°724091
burgergold
5$? va chez l'diable!
Posté le 13-05-2004 à 01:34:18  profilanswer
 

ouais mais fallait mettre le http :D
 
faut mettre le path réel sur le serveur web. En gros tu exécute le script en ligne de commande avec les ``
 
du genre /web/yann/protocol_electricity_meter/CGI_forms/2protocol.cgi
 
sinon ya tjrs ceci mais jamais testé avec un cgi (qu'avec des html), mais ca peut marcher
 

Code :
  1. use LWP::Simple;
  2. $source = get("http://pams.lbl.gov/yann/protocol_electricity_meter/CGI_forms/2protocol.cgi?param1=1&param2=2" );


---------------
http://www.boincstats.com/signature/user_664861.gif
n°724095
malcolm x
Posté le 13-05-2004 à 01:38:20  profilanswer
 

ca marche (sans le http), par contre, en haut de 2protocol.cgi, j'ai le header de la page precedente qui s'affiche
 
si tu vx essayer :  
page 1 : http://pams.lbl.gov/yann/protocol_ [...] s/type.cgi
page 2 : http://pams.lbl.gov/yann/protocol_ [...] otocol.cgi

n°724096
malcolm x
Posté le 13-05-2004 à 01:40:34  profilanswer
 

pb, apres sur page 2, si je clic sur submit, ca revient a la page 1 : moi je voudrais que quand la page 2 est ouverte, il oubli qu'il a ouvert la 1 et qu'il execute la 2 comme si on venait directement par la

n°724097
burgergold
5$? va chez l'diable!
Posté le 13-05-2004 à 01:42:32  profilanswer
 

malcolm x a écrit :

pb, apres sur page 2, si je clic sur submit, ca revient a la page 1 : moi je voudrais que quand la page 2 est ouverte, il oubli qu'il a ouvert la 1 et qu'il execute la 2 comme si on venait directement par la


 
dans ton <form>, ajoute le parametre action="cgi_qui_recoit_le_submit.cgi"


---------------
http://www.boincstats.com/signature/user_664861.gif
n°724098
malcolm x
Posté le 13-05-2004 à 01:49:05  profilanswer
 

comment ca ?
j'y mets ou ?

n°724099
burgergold
5$? va chez l'diable!
Posté le 13-05-2004 à 01:50:40  profilanswer
 

dans ton 2protocol.cgi, vu que t'a un formulaire avec un bouton submit, t'a forcément un truc du genre
 

Code :
  1. <form>
  2. <input ... />
  3. <input type="submit" />
  4. </form>


 
modifie le pour
 

Code :
  1. <form action="2protocol.cgi">
  2. ...


 
edit:
 
voir même
 

Code :
  1. <form action="http://pams.lbl.gov/yann/protocol_electricity_meter/CGI_forms/2protocol.cgi">


 
si jamais ils sont pas dans le meme dossier


Message édité par burgergold le 13-05-2004 à 01:51:46

---------------
http://www.boincstats.com/signature/user_664861.gif
n°724101
malcolm x
Posté le 13-05-2004 à 01:53:38  profilanswer
 

ils sont dans le meme dossier
 
mon code c'est :  

Code :
  1. print start_form();
  2. print p("<font size='4'><b>What type of appliance ? ", popup_menu("type", ['Refrigerator','Washing_machine','Clothes_dryer',
  3. 'Room_air_conditionner']));
  4. print br();
  5. print p("What manufacturer ? ", popup_menu("manufac", ['HBC','MKF','IUE','FFG','POU']));
  6. print br();
  7. print p("What brand ? ", popup_menu("brand", ['Daewoo','Friedrich','Frigidaire','Goldstar','Panasonic']));
  8. print br();
  9. print p("What model number ?</b></font>", popup_menu("model", ['aa','bb','cc']));
  10. print br();
  11. print p("If your appliance is not proposed, please fill out 'NEW' in this box.", textfield("new" ));
  12. print br();
  13. print hr();
  14. print p("<font size='5' color='blue'>PLEASE FILL OUT THE BOX WITH THE DATA YOU GET FROM THE ELECTRIC METER.</font>" );
  15. print br();
  16. print p("<font size='4'><b>Lenght of the measuring ? </b></font>", textfield("time" ), "<i> (hh:mm) </i>" );
  17. print br();
  18. print p("<font size='4'><b>Energy use during the measuring ? </b></font>", textfield("use" ), "<i> kWh </i>" );
  19. print br();
  20. print p("<font size='4'><b>Is your appliance working continuously ?</b></font> <i>(refrigerator ...)</i>", radio_group("cont
  21. inu", ['Yes','No']));
  22. print br();
  23. print p("<font size='4'><b>If no, how many time do you use it each week ? </b></font>", textfield("week" ));
  24. print br();
  25. print p(submit("Submit" ), reset("Cancel" ));

n°724104
burgergold
5$? va chez l'diable!
Posté le 13-05-2004 à 01:56:43  profilanswer
 

start_form() ca vient d'ou? quel lib?
 
perso jai jamais voulu utilisé les librairies du genre qui génère du html...


---------------
http://www.boincstats.com/signature/user_664861.gif
n°724106
malcolm x
Posté le 13-05-2004 à 01:58:08  profilanswer
 

les seules lib que j'utilise et je suis pas certains que ca en soit c :
use strict;
use CGI qw(:standard);
 

n°724107
malcolm x
Posté le 13-05-2004 à 02:00:28  profilanswer
 

Burgergold a écrit :

start_form() ca vient d'ou? quel lib?
 
perso jai jamais voulu utilisé les librairies du genre qui génère du html...


 
je comprends mais moi perl c pas mon domaine, je suis etudiant en energie et environnement mais la en stage, le gars il nous fait faire du perl, du cgi et du html ... donc y'a fallut apprendre rapidos (et tout seul) donc je sais faire quelques trucs meme si c'est souvent du recopiage de programmes que j'essaie d'adapter sans toutefois toujours savoir exactement pourquoi je fais ca

n°724108
burgergold
5$? va chez l'diable!
Posté le 13-05-2004 à 02:00:57  profilanswer
 

essaye
 
print start_form(-action => "http://pams.lbl.gov/yann/protocol_electricity_meter/CGI_forms/2protocol.cgi" );


---------------
http://www.boincstats.com/signature/user_664861.gif
n°724109
malcolm x
Posté le 13-05-2004 à 02:03:40  profilanswer
 

Burgergold a écrit :

essaye
 
print start_form(-action => "http://pams.lbl.gov/yann/protocol_electricity_meter/CGI_forms/2protocol.cgi" );


 
toujours pareil ...

n°724111
malcolm x
Posté le 13-05-2004 à 02:05:05  profilanswer
 

mais laisse tomber pour ce soir
c'est bientot 5h et j'en est ma claque, je vais aller voir mon boss si il peut m'aider et je m'y remettrais demain
 
Merci bcp en tout cas

n°724112
malcolm x
Posté le 13-05-2004 à 02:09:31  profilanswer
 

j'ai peut etre trouve, je regarde ca chez moi ce soir et je te tiens au jus
 
EDIT : bah en fait non, c'est pas ca
Tant pis ...


Message édité par malcolm x le 13-05-2004 à 02:11:44
n°724113
burgergold
5$? va chez l'diable!
Posté le 13-05-2004 à 02:12:27  profilanswer
 

:D
 
hésite pas à repasser, ca va me faire plaisir de t'aider


---------------
http://www.boincstats.com/signature/user_664861.gif
n°729705
malcolm x
Posté le 18-05-2004 à 00:08:44  profilanswer
 

Voila mon code,  

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. use CGI qw(:standard);
  4. print header, start_html("Protocol for measuring energy use" ), h1("<body bgcolor='aliceblue'><center>Protocol for measuring<
  5. br> appliance energy use</center>" );
  6. if (param()) {
  7. my $type = param("type" );
  8. if ($type eq "Refrigerator" ) {
  9. print p("<a href=
  10. 'http://pams.lbl.gov/yann/protocol_electricity_meter/CGI_forms/refrig.cgi'>
  11. Continue</a></li><br><br>" );
  12. } elsif ($type eq "Washing_machine" ) {
  13. print p("<a href=
  14. 'http://pams.lbl.gov/yann/protocol_electricity_meter/CGI_forms/washing.cgi'>
  15. Continue</a></li><br><br>" );
  16. } elsif ($type eq "Clothes_dryer" ) {
  17. print p("<a href=
  18. 'http://pams.lbl.gov/yann/protocol_electricity_meter/CGI_forms/dryer.cgi'>
  19. Continue</a></li><br><br>" );
  20. } elsif ($type eq "Room_air_conditionner" ) {
  21. print p("<a href=
  22. 'http://pams.lbl.gov/yann/protocol_electricity_meter/CGI_forms/room_ac.cgi'>
  23. Continue</a></li><br><br>" );
  24. }
  25. } else {
  26. print hr();
  27. print start_form();
  28. print p("<font size='4'><b>What type of appliance ? ", popup_menu("type", ['Refrigerator','Washing_machine','Clothes_dryer',
  29. 'Room_air_conditionner']));
  30. print br();
  31. print p(submit("Submit" ), reset("Cancel" ));
  32. print end_form(), hr();
  33. }
  34. print end_html;


 
J'aimerais pouvoir rediriger directement depuis le submit vers la page voulue sans etre obligé de passer par des pages intermediaires ou je dois proposer des liens ou la personne est obligée de cliquer.
 
Si quelqu'un a une idée ...
Merci

n°729712
burgergold
5$? va chez l'diable!
Posté le 18-05-2004 à 00:14:07  profilanswer
 

je t'ai fourni une masse de possibilité
 
-avec LWP::Simple
-en submittant ta page vers la page en question (et non vers elle même)


---------------
http://www.boincstats.com/signature/user_664861.gif
n°729723
malcolm x
Posté le 18-05-2004 à 00:19:05  profilanswer
 

oui mais concretement je gere comment les differentes possiblites avec le submit ?

n°729739
burgergold
5$? va chez l'diable!
Posté le 18-05-2004 à 00:35:51  profilanswer
 

dans le cgi qui recoit l'action
 
donc soit tu fais un meta redirection, soit tu traites dans la page qui recoit le submit


---------------
http://www.boincstats.com/signature/user_664861.gif
n°729744
malcolm x
Posté le 18-05-2004 à 00:49:33  profilanswer
 

Burgergold a écrit :

dans le cgi qui recoit l'action
 
donc soit tu fais un meta redirection, soit tu traites dans la page qui recoit le submit


 
dsl mais pour moi c'est pas du chinois mais presque

n°729748
burgergold
5$? va chez l'diable!
Posté le 18-05-2004 à 00:59:53  profilanswer
 

ok, oublis le perl, tout langugage, et concentre toi sur le principe meme d'un formulaire en html avec un language coté serveur (php, asp, perl, jsp, alouette...)
 
une fois que tu auras compris comment un formulaire fonctionne, code
 
parce que là c'est vraiment l'essence même du formulaire en html que tu ne semble pas comprendre
 


---------------
http://www.boincstats.com/signature/user_664861.gif
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [CGI] Encore du nouveau : probleme avec formulaire

 

Sujets relatifs
Probleme avec Auto open[VBA] & [ACCESS] - Appeler une requete depuis un formulaire
Problème de sécurité du navigateur[python] problème avec les nombres réels
[VBA] problème et recherche de date avec Find...probléme de config tomcat, compilation jsp
[PHP]Problème avec imagecreatefromjpeg()probleme insertion caracteres speciaux
Probleme Standart W3CPROBLEME COMPILATION JSP NOT FOUND
Plus de sujets relatifs à : [CGI] Encore du nouveau : probleme avec formulaire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR