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

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Auteur Sujet :

[CGI] Encore du nouveau : probleme avec formulaire

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

Reprise du message précédent :
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 18-05-2004 à 00:59:53  profilanswer
 

n°729761
malcolm x
Posté le 18-05-2004 à 01:54:51  profilanswer
 

ok, t'as raison, je vais regarder le HTML parce que c'est vrai que pour le moment le HTML, je fais tout en freestyle

n°730975
malcolm x
Posté le 19-05-2004 à 01:29:11  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


 
bon alors j'ai regardé un peu plus le HTML, par contre, j'ai trouvé aucune trace d'une commande appelée meta redirection, y'a que des refresh et c'est pas ce que je veux.
Ce que je veux c'est qu'en fonction de ce qu'on choisit dans la liste, que l'on soit redirigé (un lien direct quoi !) vers une page qui traite de l'option choisie dans la liste.
Je peux pas faire ca avec action parce que le script qui recoit l'action change suivant l'option , a moisn que ce soit possible ?


Message édité par malcolm x le 19-05-2004 à 01:29:55
n°730977
burgergold
5$? va chez l'diable!
Posté le 19-05-2004 à 01:34:30  profilanswer
 

<meta http-equiv="refresh" content="2;url=http://webdesign.about.com/">
 
mais selon moi, la meilleur solution, c'est 1 seul cgi pour tout
 
if ! submit
  afficher premier formulaire
elsif submit
  if traitement1() && traitement2() && traitementX
     afficher formulaire a
  else
     afficher formulaire b
 
tu vois le genre? tu peux très bien avoir une multitude de formulaire différent dans 1 seul cgi, et selon les réponses des formulaires précédents, tu affiche l'un ou l'autre


---------------
http://www.boincstats.com/signature/user_664861.gif
n°730979
malcolm x
Posté le 19-05-2004 à 01:37:03  profilanswer
 

ah ouais, ca serait la bonne solution !!!
sinon, encore une question, tu peux nommer les formulaires ?

n°730980
malcolm x
Posté le 19-05-2004 à 01:39:15  profilanswer
 

Sinon, t'aurais pas un lien sur comment traiter un formulaire, parce que tout ce que j'ai trouvé c'est des explications sur les differents types de form ...

n°730983
burgergold
5$? va chez l'diable!
Posté le 19-05-2004 à 01:46:29  profilanswer
 

malcolm x a écrit :

Sinon, t'aurais pas un lien sur comment traiter un formulaire, parce que tout ce que j'ai trouvé c'est des explications sur les differents types de form ...


 
donne moi 5 minutes, jvais te pondre un truc bien simple


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

ok
encore une fois merci

n°730985
burgergold
5$? va chez l'diable!
Posté le 19-05-2004 à 02:09:24  profilanswer
 

bon, du code à l'aveuglette (pas testé la syntaxe mais bon on sen fou, c'est pour que tu vois un peu la structure
 

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. use cgi qw(:standard);
  4. my $cgi = new cgi;
  5. if ($cgi->param("submit" )) {
  6.   if ($cgi->param("action" ) eq "vacation_demand" ) {
  7.     if (is_authorized()) {
  8.       html_q1a();
  9.     }
  10.     else {
  11.       html_q1b();
  12.     }
  13.   elsif ($cgi->param("action" ) eq "vacation_authorized" ) {
  14.     # traitement final
  15.     # affichage de html au client
  16.   }
  17.   elsif ($cgi->param("action" ) eq "vacation_not_authorized" ) {
  18.     # traitement final
  19.     # envoit d'un courriel au directeur
  20.     # affichage de html au client
  21.   }
  22. }
  23. else {
  24.   html_q1();
  25. }
  26. sub is_authorized {
  27.   if ($cgi->param("type" ) || $cgi->param("seniority" ) > 3) {
  28.     return 1;
  29.   }
  30. }
  31. sub html_q1 {
  32.   print '
  33.   <html>
  34.     <head>
  35.     </head>
  36.    
  37.     <body>
  38.       <form method="post">
  39.         <input type="hidden" name="action" value="vacation_demand"/>
  40.         <div>Matricule: <input type="text" name="number" /></div>
  41.         <div>
  42.           <select name="type">
  43.             <option value=""></option>
  44.             <option value="permanent">Permanent</option>
  45.             <option value="temporary">Temporaire</option>
  46.           </select>
  47.         </div>
  48.         <div>Ancienneté: <input type="text" name="seniority" /></div>
  49.         <div><input type="submit" name="submit" value="Soumettre" /></div>
  50.       </form>
  51.     </body>
  52.   </html>
  53.   ';
  54. }
  55. sub html_q1a {
  56.   print '
  57.   <html>
  58.     <head>
  59.     </head>
  60.    
  61.     <body>
  62.       <form method="post">
  63.         <input type="hidden" name="action" value="vacation_authorized"/>
  64.         <input type="hidden" name="number" value="' . $cgi->param("number" ) . '"/>
  65.         <div>Nombre de semaine: <input type="text" name="week" /></div>
  66.         <div><input type="submit" name="submit" value="Soumettre" /></div>
  67.       </form>
  68.     </body>
  69.   </html>
  70.   ';
  71. }
  72. sub html_q1b {
  73.   print '
  74.   <html>
  75.     <head>
  76.     </head>
  77.    
  78.     <body>
  79.       <form method="post">
  80.         <input type="hidden" name="action" value="vacation_not_authorized"/>
  81.         <input type="hidden" name="number" value="' . $cgi->param("number" ) . '"/>
  82.         <div>Addresse électronique du directeur: <input type="text" name="director_email" /></div>
  83.         <div>Nombre de semaine: <input type="text" name="week" /></div>
  84.         <div><input type="submit" name="submit" value="Soumettre" /></div>
  85.       </form>
  86.     </body>
  87.   </html>
  88.   ';
  89. }


Message édité par burgergold le 20-05-2004 à 01:16:06

---------------
http://www.boincstats.com/signature/user_664861.gif
n°730986
malcolm x
Posté le 19-05-2004 à 02:11:54  profilanswer
 

ok, merci bcp
j'avais pas pensé aux subroutines !

mood
Publicité
Posté le 19-05-2004 à 02:11:54  profilanswer
 

n°730987
malcolm x
Posté le 19-05-2004 à 02:15:05  profilanswer
 

Je regarde ca d'ici demain (faut que je regarde comment ca marche deux trois trucs que t'as mis et dont je sais pas trop la fonction ou comment ca marche)
 
merci bcp

n°730988
burgergold
5$? va chez l'diable!
Posté le 19-05-2004 à 02:20:49  profilanswer
 

euhhhh ya aucune "fonction" spécial, outre l'utilisation de la librairie cgi que tu semblais deja utiliser


---------------
http://www.boincstats.com/signature/user_664861.gif
n°730989
malcolm x
Posté le 19-05-2004 à 02:22:52  profilanswer
 

Burgergold a écrit :

euhhhh ya aucune "fonction" spécial, outre l'utilisation de la librairie cgi que tu semblais deja utiliser


 
j'ai vu ca merci

n°732098
malcolm x
Posté le 19-05-2004 à 20:41:57  profilanswer
 

bon bah j'ai essayé avec l'histoire des subroutines, mais en meme temps je suis pas trop a l'aise quand il faut travailler en orienté-objet donc ca peut venir de la.
 

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. use CGI qw(:standard);
  4. my cgi = new cgi;
  5. if ($cgi->param("submit" )) {
  6.         if ($cgi->param("action" ) eq "Refrigerator" ) {
  7.                 html_q2a();
  8.                 }
  9.         elsif ($cgi->param("action" ) eq "Washing_machine" ) {
  10.                 html_q2b();
  11.                 }
  12.         elsif ($cgi->param("action" ) eq "Clothes_dryer" ) {
  13.                 html_q2c();
  14.                 }
  15.         elsif ($cgi->param("action" ) eq "Room_air_conditionner" ) {
  16.                 html_q2d();
  17.                 }
  18. } else {
  19.         html_q1();
  20. }
  21. sub html_q1 {
  22. print '
  23. <html>
  24. <head>
  25. </head>
  26. <body>
  27. <form method="post">
  28. <select name="type" size="1">
  29. <option value="Refrigerator" selected>Refrigerator</option>
  30. <option value="Clothes_dryer">Clothes Dryer</option>
  31. <option value="Room_air_conditionner">Room air-conditionner</option>
  32. <option value="Washing_machine">Washing machine</option>
  33. </select>
  34. <div><input type="submit" name="submit" value="Submit" /></div>
  35. </form>
  36. </body>
  37. </html>  ';
  38.    }
  39. sub html_q2a {
  40. print '
  41. <html>
  42. <head><title>Refrigerators</title>
  43. </head>
  44. <body>
  45. <form method="post">
  46. <select name="brand" size="1">
  47. <option value="Refrigerator" selected>frigo1</option>
  48. <option value="Clothes_dryer">frigo2</option>
  49. <option value="Room_air_conditionner">frigo3</option>
  50. <option value="Washing_machine">frigo4</option>
  51. </select>
  52. <div><input type="submit" name="submit1" value="Submit"></div>
  53. </form>
  54. </body>
  55. </html> ';
  56.    }
  57. sub html_q2b {
  58. print '
  59. <html>
  60. <head><title>Washing Machines</title>
  61. </head>
  62. <body>
  63. <form method="post">
  64. <select name="brand" size="1">
  65. <option value="Refrigerator" selected>mach1</option>
  66. <option value="Clothes_dryer">mach2</option>
  67. <option value="Room_air_conditionner">mach3</option>
  68. <option value="Washing_machine">mach4</option>
  69. </select>
  70. <div><input type="submit" name="submit1" value="Submit"></div>
  71. </form>
  72. </body>
  73. </html> ';
  74.    }
  75. sub html_q2c {
  76. print '
  77. <html>
  78. <head><title>Clothes Dryers</title>
  79. </head>
  80. <body>
  81. <form method="post">
  82. <select name="brand" size="1">
  83. <option value="Refrigerator" selected>cd1</option>
  84. <option value="Clothes_dryer">cd2</option>
  85. <option value="Room_air_conditionner">cd3</option>
  86. <option value="Washing_machine">cd4</option>
  87. </select>
  88. <div><input type="submit" name="submit1" value="Submit"></div>
  89. </form>
  90. </body>
  91. </html> ';
  92.    }
  93. sub html_q2d {
  94. print '
  95. <html>
  96. <head><title>Room Air-Conditionners/title>
  97. </head>
  98. <body>
  99. <form method="post">
  100. <select name="brand" size="1">
  101. <option value="Refrigerator" selected>ac1</option>
  102. <option value="Clothes_dryer">ac2</option>
  103. <option value="Room_air_conditionner">ac3</option>
  104. <option value="Washing_machine">ac4</option>
  105. </select>
  106. <div><input type="submit" name="submit1" value="Submit"></div>
  107. </form>
  108. </body>
  109. </html> ';
  110.    }


 

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

outre l'utilisation de l'objet cgi (qui est prévu pour être utilisé comme un objet), ya rien d'objet dans tout ca


---------------
http://www.boincstats.com/signature/user_664861.gif
n°732380
malcolm x
Posté le 20-05-2004 à 00:20:52  profilanswer
 

ok, mais tu sais pourquoi ca marche pas ?

n°732396
burgergold
5$? va chez l'diable!
Posté le 20-05-2004 à 00:31:12  profilanswer
 

ah bin fallait dire que ca marchait pas :D
 
t'a des erreurs à l'exécution?
 
sinon faut placer un print "Content text/html\n\n"; au début jcrois, quelques chose comme ca


---------------
http://www.boincstats.com/signature/user_664861.gif
n°732417
malcolm x
Posté le 20-05-2004 à 00:40:31  profilanswer
 

dsl j'avais cru avoir preciser que ca marchait pas  :(  
 
sinon, g une internal servor error, en fait ce que ca m'affiche a chaque qui y'a une merde dans mon code


Message édité par malcolm x le 20-05-2004 à 00:41:31
n°732423
malcolm x
Posté le 20-05-2004 à 00:43:42  profilanswer
 

Burgergold a écrit :


sinon faut placer un print "Content text/html\n\n"; au début jcrois, quelques chose comme ca


 
Ca marche pas mieux   :sweat:

n°732429
burgergold
5$? va chez l'diable!
Posté le 20-05-2004 à 00:47:45  profilanswer
 

execute ton script au command line pour voir les erreurs, débugger par le web c bon à rien


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

c'est quoi le command line ?
jusqu'a maintenant, je n'ai pas fait de prog tres developpes donc quand y'avais des erreurs ct surtout des erreurs de frappe donc je suis pas allé chercher plus loin    :(


Message édité par malcolm x le 20-05-2004 à 00:50:34
n°732433
burgergold
5$? va chez l'diable!
Posté le 20-05-2004 à 00:54:06  profilanswer
 

lancer le script manuellement, avec perl monscript.cgi avec perl d'installer sur ta machine
 
quand tu codes, faut que tu puisse tester


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

Burgergold a écrit :

lancer le script manuellement, avec perl monscript.cgi avec perl d'installer sur ta machine


 
je comprends pas ta phrase !

n°732441
burgergold
5$? va chez l'diable!
Posté le 20-05-2004 à 00:59:56  profilanswer
 

ton serveur web, tu as accès à te connecter sur celui-ci?
 
example: si celui-ci est sur linux/unix, faire un telnet, te logger, et faire des commandes (comme ls, pwd, ...)?


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

oui je peux faire les commandes, mais telnet connais pas, je bosse avec ssh f-secure


Message édité par malcolm x le 20-05-2004 à 01:08:34
n°732445
burgergold
5$? va chez l'diable!
Posté le 20-05-2004 à 01:08:50  profilanswer
 

ok, donc fait un telnet sur le serveur web, et par exemple, si ton script est dans /var/www/perl/test.cgi
 
lance la commande
 
perl /var/www/cgi-bin/test.cgi
 
ca va exécuter le cgi, et si ya erreur, tu verras un message d'erreur
 
ya meme une commande je crois pour vérifier la syntaxe (à tester)
 
perl -c /var/www/cgi-bin/test.cgi


Message édité par burgergold le 20-05-2004 à 01:09:05

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

je lance la commande et j'obtiens ca  

Code :
  1. No such class cgi at /home/httpd/html/yann/protocol_electricity_meter/CGI_forms/objet1.cgi line 6, near "my cgi"
  2. syntax error at /home/httpd/html/yann/protocol_electricity_meter/CGI_forms/objet1.cgi line 6, near "my cgi ="
  3. Global symbol "$cgi" requires explicit package name at /home/httpd/html/yann/protocol_electricity_meter/CGI_forms/objet1.cgi line 8.
  4. Execution of /home/httpd/html/yann/protocol_electricity_meter/CGI_forms/objet1.cgi aborted due to compilation errors.

n°732447
burgergold
5$? va chez l'diable!
Posté le 20-05-2004 à 01:15:36  profilanswer
 

my $cgi et non my cgi :D


---------------
http://www.boincstats.com/signature/user_664861.gif
n°732449
burgergold
5$? va chez l'diable!
Posté le 20-05-2004 à 01:17:43  profilanswer
 

dailleurs je ne saurais trop te recommander de coder dans un IDE
 
moi je bosse avec Eclipse et EPIC
http://www.eclipse.org/
http://e-p-i-c.sourceforge.net/
 
ca mets de la couleur à ton code, ya vérification de la syntaxe, listing des fonctions, des librairies, ca gère tes projets et ya un client CVS


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

corrigé mais ca marche tjs pas, ca me marque :
 
Can't locate object method "new" via package "cgi" at /home/httpd/html/yann/protocol_electricity_meter/CGI_forms/objet1.cgi line 6.
 

n°732453
malcolm x
Posté le 20-05-2004 à 01:21:52  profilanswer
 

Burgergold a écrit :

dailleurs je ne saurais trop te recommander de coder dans un IDE
 
moi je bosse avec Eclipse et EPIC
http://www.eclipse.org/
http://e-p-i-c.sourceforge.net/
 
ca mets de la couleur à ton code, ya vérification de la syntaxe, listing des fonctions, des librairies, ca gère tes projets et ya un client CVS


 
Pb je bosse a Berkeley pour un labo du gouvernment ricain donc je sais pas trop ce que j'ai le droit de modifier sur le PC

n°732454
burgergold
5$? va chez l'diable!
Posté le 20-05-2004 à 01:23:03  profilanswer
 

propose tjrs
 
ca l'améliore drolement la productivité ce genre de truc


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

Burgergold a écrit :

propose tjrs
 
ca l'améliore drolement la productivité ce genre de truc


 
ouais, je vais voir avce mon superviseur mais deja que j'ai du mal avec l'anglais  :lol:  
 
sinon t'as pas une idee pour l'histoire de package ?

n°732457
burgergold
5$? va chez l'diable!
Posté le 20-05-2004 à 01:32:34  profilanswer
 

use CGI
 
et non
 
use cgi
 
comme jai dit, jai tappé le tout rapidement dans un notepad, donc les erreurs sont possibles (souvent d'innatention)


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

je sais, je viens de le voir mais en fait maintenant ca m'affiche la 1ere subroutine mais quand je clique sur submit, au lieu de m'afficher la deuxieme, ca me remet internal servor error

n°732461
burgergold
5$? va chez l'diable!
Posté le 20-05-2004 à 01:47:09  profilanswer
 

exécute le script en passant chaque param à la main
 
perl test.cgi submit=1 param1=truc param2=machin


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

Burgergold a écrit :

exécute le script en passant chaque param à la main
 
perl test.cgi submit=1 param1=truc param2=machin


 
ca fait rien : c'est comme si la commande ne faisait rien

n°732464
malcolm x
Posté le 20-05-2004 à 01:54:31  profilanswer
 

ca me mets ca si je refais un perl test.cgi
 
(offline mode: enter name=value pairs on standard input)

n°732466
burgergold
5$? va chez l'diable!
Posté le 20-05-2004 à 01:55:28  profilanswer
 

ahh toi t'a appelé ton submit submit1
 
alors tu fait perl test.cgi submit1=1 param1=1 param2=2
 
submit1 -> le nom de ton bouton submit. ca simule que tu as fait un submit
 
param1 et param2 -> faut que tu le remplace par la clé=valeur de tes questions du formulaire, comme type ou brand


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

j'ai appele submit les submit des sub secondaires et submit celui de la sub primaire, parce que sinon, si tu les appelles pareil, ca peut pas marcher non ? (qd j'appelle $cgi->param("submit" ), comme les sub sec n'ont pas ete lancees, submit1=0 mais submit=1 donc ca doit marcher non ?)

Citation :

param1 et param2 -> faut que tu le remplace par la clé=valeur de tes questions du formulaire, comme type ou brand


ca j'avais compris
 

n°732469
burgergold
5$? va chez l'diable!
Posté le 20-05-2004 à 02:03:30  profilanswer
 

tu peux changer le nom du submit, tu peux ajouter un hidden field, tu peux même garder le meme nom et tester les autres parametres
 
du genre si submit et type, c'est que le formulaire cétait le premier
 
sinon, c'était le 2e


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

 Page :   1  2  3

Aller à :
Ajouter une réponse
 

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