|
|
 |

|

 |

| Community » CGI: Allgemeines Forum |
|
Wiederholter Aufruf einer Form mit CGI
|
Seitenanfang |
| Hallo Perl Fans, ich plage mich mit dem wiederholten Aufruf einer Form mit einem Textfeld beim Anklicken einer Checkbox rum. Leider konnte ich noch keine Loesung finden. Wisst ihr eine ? Mein Code sieht wie folgt : my $method = 'post'; my $action = 'screen.pl'; #my $encoding = ''; my $loop = 'on'; print $q->header(-charset=>'UTF-8'), $q->start_html(-title=> 'Select File', ), $q ->h1('dies ist ein xhtml test' ); while ( $loop eq 'on') { print $q->start_form(-method=>$method, -action=>$action, -enctype=>$encoding), $q ->textfield(-name=>'field1', -value=>'starting1', -size=>50, -maxlength=>80, -id=>'field1' ), $q ->checkbox(-name=>'Addfield1', -checked=>0, -value=>'on'), $q ->submit(-name=>'submit1', -value=>'submit1' ), $q-> endform; my $text = param('field1'); $loop = param('Addfield1'); print $q->h2($text); } $q->end_html(); Vielen Dank fuer Eure Antwort. mfG PeterT
Datum: 18.04.2006-13:50

|
re: Wiederholter Aufruf einer Form mit CGI
|
Seitenanfang |
| Hallo, beschreib mal in ein paar Sätzen, was das Skript machen soll..., dann wirds vielleicht klarer zu helfen... Gruß Ralf
Datum: 18.04.2006-19:09

|
re: Wiederholter Aufruf einer Form mit CGI
|
Seitenanfang |
| Hi, ich habe fast das Gefühl, Dein Denkansatz ist falsch. Der Loop entsteht dabei ja zwischen Server und Client, denn bis der User die Möglichkeit bekommt eine Checkbox anzuklicken, ist Dein Skript schon beendet. So muss also das Skript in der Eingangsprüfung der Parameter darauf achten, ob die betreffende Checkbock geklickt wurde. Einen Loop ins Skript einzubauen, würde bedeuten, dass Formular immer wieder zu drucken, was meiner Ansicht nach nicht der Sinn der Sache ist. Und da die Checkbox bis dahin nie angeklickt wurde, wird das Teil in eine Endlosschleife gehen. -uw
Datum: 18.04.2006-23:54

|
re: Wiederholter Aufruf einer Form mit CGI
|
Seitenanfang |
Hi TbHoCne, danke fuer die Antwort; Deine Beschreibung passt genau auf das Script-verhalten. Wie kann man dann aber ein Textfeld in mehreren Durchlaeufen fuellen in Abhaengigkeit von einer Checkbox ?mfG PeterT
Datum: 19.04.2006-15:27

|
re: Wiederholter Aufruf einer Form mit CGI
|
Seitenanfang |
| Hi, in dem Falle solltest Du mit Templates arbeiten, das ist das einfachste. Ein Beispiel:
#HTML Teil (seite.tmpl) <input type=checkbox name="c1" value="x">Text 1 <input type=text name="t1" value="FELD1_VALUE"> <input type=checkbox name="c1" value="y">Text 1 <input type=text name="t2" value="FELD2_VALUE"> #CGI Teil (seite.cgi) use CGI; my $cgi = new CGI; open(F, "<seite.tmpl"); while ( <F> ) { $page .= $_; } close F; if(defined $cgi->param{'c1'} && $cgi->param{'c1'} eq "x") { $page = s/FELD1_VALUE/Der Text der rein soll/; } usw. print $page;
-uw
Datum: 19.04.2006-16:27

|
..... [sorry bin müde, hab was vergessen]
|
Seitenanfang |
if(defined $cgi->param{'c1'} && $cgi->param{'c1'} eq "x") { $page = s/FELD1_VALUE/Der Text der rein soll/; } else { $page = s/FELD1_VALUE//; }
Datum: 19.04.2006-16:30

|
re: ..... [sorry bin müde, hab was vergessen]
|
Seitenanfang |
| Hi TbHoCne, danke fuer die schnelle Antwort. Wefde es heute abend testen. mfG PeterT
Datum: 19.04.2006-17:22

|
re: ..... [sorry bin müde, hab was vergessen]
|
Seitenanfang |
| Hi TbHoCne, leider gibt der Server folgenden Fehler aus: syntax error at C:/Program Files/xampp/cgi-bin/repeat.pl line 20, near "->param{" meine datei seite.tmpl sieht so aus: <form action=""> <input type="checkbox" name="c1" value="x"/>text <br/> <input type="text" name="t1" value="feld1_value"/><br/> </form> meine datei seite.pl sieht so aus: #!c:/perl/bin/Perl.exe use strict 'refs'; use warnings; use CGI qw(:standard); use CGI::Carp qw/fatalsToBrowser/; $q = new CGI; $q->header, $q->start_html; open(F, "<seite.tmpl"); while ( <F> ) { $page .= $_; } close F; if ( defined $q->param{'c1'} && $q->param{'c1'} eq "x" ) { $page = s/feld1_value/der text/; } else { $page = s/feld1_value//; } $q->h2($page), $q->end_html; Was mache ich hier falsch ? mfG PeterT
Datum: 21.04.2006-14:59

|
|

|

|

|
 |

|

|
|