es darum, fehlerhafte angaben (präziser: ein leeres feld) aus einem html-formular abzufangen, was ich im wesentlichen via javascript erledige. die eventuellen eingaben werden seitens meines perl-scripts noch um localtime ergänzt und in einem flat-file abgelegt- 08/15…
nun lässt sich aber nicht vermeiden, dass onClick auch gleichzeitig das perl-script gestartet wird, was im falle leerer felder zu einem einsamen eintrag des datums in das flat-file führt. somit ist das ziel: im falle eines leeren feldes soll das script schlicht gar nichts tun.
yo- und was ich so in der fachliteratur an lösungen gefunden habe, sah auch immer alles hübsch einfach aus. ich hab’s nur nicht zum laufen gekriegt… ( die haben allerdings auch ausnahmslos mit „die“-meldungen gearbeitet, was ich gerade nicht will.
script an sich laüft problemlos, deswegen kann ich den code hier wohl ganz kurz auf sub-ebene abhandeln. hier mal der simpelste versuch:
if (param ())
{
eintragen;
anzeigen;
}
fehlermeldung gibt’s keine, aber das datum wird trotzdem eingetragen…
wär nett, wenn mir da mal wer einen tipp geben könnte.
kanndochnichtsoschwersein *grmpf*
es darum, fehlerhafte angaben (präziser: ein leeres feld) aus
einem html-formular abzufangen, was ich im wesentlichen via
javascript erledige. die eventuellen eingaben werden seitens
meines perl-scripts noch um localtime ergänzt und in einem
flat-file abgelegt- 08/15…
nun lässt sich aber nicht vermeiden, dass onClick auch
gleichzeitig das perl-script gestartet wird, was im falle
JavaScript:
Überprüfung in onSubmit in den Form-Tag legen
bei onCubmit=„return checkinput();“ kannst du bei Falscheingabe in der Funkion false zurückgeben (return false), dann wird das Formular nicht abgesendet.
script an sich laüft problemlos, deswegen kann ich den code
hier wohl ganz kurz auf sub-ebene abhandeln. hier mal der
simpelste versuch:
if (param ())
param() liefert ein Array, in welchem alle Parameter stehen, das ist nicht leer…
Du suchst param(„Feldname“).
JavaScript:
Überprüfung in onSubmit in den Form-Tag legen
bei onCubmit=„return checkinput();“ kannst du bei
Falscheingabe in der Funkion false zurückgeben (return false),
dann wird das Formular nicht abgesendet.
alles schon längst passiert (funktioniert auch , aber es ändert reinewech garnix an dem problem, dass bei klick auf den „abschicken“-button eben auch das perl-script gestartet wird…
param() liefert ein Array, in welchem alle Parameter stehen,
das ist nicht leer…
Du suchst param(„Feldname“).
richtig, das. war inzwischen sogar mir aufgefallen…
nach diversem anderen hab ich nach deiner anregung nochmal das allerblödeste probiert:
if (not (param(‚name‘)))
{script}
gibt (natürlich): error 500…
leider fällt mir nun nix mehr ein.
der code also
hallo alexander,
der code ist weder geheimnis noch etwas besonderes und vor allem: er funktioniert bestens. blöderweise ist eben gerade das hier das problem. deswegen glaube ich auch, dass das hier kaum weiter helfen wird- aber nen versuch ist’s wert.
(wie ihr unschwer erkennen könnt, geht es um ein simples gästebuch)
#!/usr/bin/perl
use CGI (‚param‘);
use CGI::Carp (‚fatalsToBrowser‘);
use strict; #variablen aus formular
my ($betreff, $name, $date, $nachricht, $mail); #für sub anzeigen
my (@rev);
my ($zeile);
my (@einzeln);
sub eintragen
{ #dies hier produziert auch dann einen eintrag, wenn vom
formular undef kommt:
$date=localtime();
#das funktioniert genauso, wie es soll:
$betreff=param(‚betreff‘);
$name=param(‚name‘);
$nachricht=param(‚nachricht‘);
$mail=param(‚mail‘);
$nachricht=~ s/(?:\015\012?|\012)/
/g;
#eintragen
open (IN, „>>…/…/bernds/gaeste.txt“);
print IN „$betreff\t $name\t $date\t $mail\t $nachricht\n“;
close IN;
}
geht doch!
hey dog-
du warst doch auf dem richtigen weg- SO klappt das:
my ($check);
$check= new CGI;
if (!$check->param(‚name‘ eq ‚‘)
mal wieder den wald vor lauter bäumen nicht gesehen…
obwohl mir nicht so ganz klar ist, warum so manche logische variante nicht lief, aber egal- 1:0 (hauptsache weiter