Encore du nouveau : probleme avec formulaire [CGI] - Perl - Programmation
Marsh Posté le 13-05-2004 à 00:42:15
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.
Marsh Posté le 13-05-2004 à 00:47:35
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 ?
Marsh Posté le 13-05-2004 à 00:50:05
comment on fait pour le rediriger sur une nouvelle page c'est a dire la suite du formulaire ?
Marsh Posté le 13-05-2004 à 00:50:23
tu n'ouvres pas une nouvelle page, tu fais des print du code html que le client doit recevoir
Marsh Posté le 13-05-2004 à 00:58:57
Je regarde mais si tu pouvais etre plus explicite (genre me mettre un exemple pour le code) : desole je debute
Marsh Posté le 13-05-2004 à 01:02:23
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 !
Marsh Posté le 13-05-2004 à 01:03:27
Code :
|
Marsh Posté le 13-05-2004 à 01:07:09
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
Marsh Posté le 13-05-2004 à 01:08:09
ce 2protocol.cgi c'est toi qui va devoir le faire? ou c'est à l'interne de ta compagnie? ou c'est à l'externe?
Marsh Posté le 13-05-2004 à 01:09:27
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)
Marsh Posté le 13-05-2004 à 01:10:46
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
Marsh Posté le 13-05-2004 à 01:14:56
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 ?
Marsh Posté le 13-05-2004 à 01:15:49
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 |
c pas possible de faire ca depuis le cgi initial ?
Marsh Posté le 13-05-2004 à 01:19:07
malcolm x a écrit : c pas possible de faire ca depuis le cgi initial ? |
ca se fait mais pas très proprement...
Code :
|
Marsh Posté le 13-05-2004 à 01:23:25
au fait merci pour tes reponses, je sais qu'il est tard en France.
Merci bcp
Marsh Posté le 13-05-2004 à 01:27:38
19hrs25 au québec
bin les param1=1 et param2=2 c'est les valeurs que tu veux passer au second formulaire
sous la forme name=value
Marsh Posté le 13-05-2004 à 01:29:52
Burgergold a écrit : 19hrs25 au québec |
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 :
|
Marsh Posté le 13-05-2004 à 01:34:18
ouais mais fallait mettre le http
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 :
|
Marsh Posté le 13-05-2004 à 01:38:20
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
Marsh Posté le 13-05-2004 à 01:40:34
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
Marsh Posté le 13-05-2004 à 01:42:32
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"
Marsh Posté le 13-05-2004 à 01:50:40
dans ton 2protocol.cgi, vu que t'a un formulaire avec un bouton submit, t'a forcément un truc du genre
Code :
|
modifie le pour
Code :
|
edit:
voir même
Code :
|
si jamais ils sont pas dans le meme dossier
Marsh Posté le 13-05-2004 à 01:53:38
ils sont dans le meme dossier
mon code c'est :
Code :
|
Marsh Posté le 13-05-2004 à 01:56:43
start_form() ca vient d'ou? quel lib?
perso jai jamais voulu utilisé les librairies du genre qui génère du html...
Marsh Posté le 13-05-2004 à 01:58:08
les seules lib que j'utilise et je suis pas certains que ca en soit c :
use strict;
use CGI qw(:standard);
Marsh Posté le 13-05-2004 à 02:00:28
Burgergold a écrit : start_form() ca vient d'ou? quel lib? |
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
Marsh Posté le 13-05-2004 à 02:00:57
essaye
print start_form(-action => "http://pams.lbl.gov/yann/protocol_electricity_meter/CGI_forms/2protocol.cgi" );
Marsh Posté le 13-05-2004 à 02:03:40
Burgergold a écrit : essaye |
toujours pareil ...
Marsh Posté le 13-05-2004 à 02:05:05
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
Marsh Posté le 13-05-2004 à 02:09:31
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 ...
Marsh Posté le 13-05-2004 à 02:12:27
hésite pas à repasser, ca va me faire plaisir de t'aider
Marsh Posté le 18-05-2004 à 00:08:44
Voila mon code,
Code :
|
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
Marsh Posté le 18-05-2004 à 00:14:07
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)
Marsh Posté le 18-05-2004 à 00:19:05
oui mais concretement je gere comment les differentes possiblites avec le submit ?
Marsh Posté le 18-05-2004 à 00:35:51
dans le cgi qui recoit l'action
donc soit tu fais un meta redirection, soit tu traites dans la page qui recoit le submit
Marsh Posté le 18-05-2004 à 00:49:33
Burgergold a écrit : dans le cgi qui recoit l'action |
dsl mais pour moi c'est pas du chinois mais presque
Marsh Posté le 18-05-2004 à 00:59:53
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
Marsh Posté le 13-05-2004 à 00:25:42
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