perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 23
Click for quality!




11.02.2012 / 20:12

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  CGI: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragWiederholter 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitrag..... [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

Beitragre: ..... [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

Beitragre: ..... [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

-






-
-