Formularelemente addieren?
MartinP
- perl
Hallo! Ich bin neu in diesem Forum und möchte mich als Erstes bedanken, daß es euch gibt. Ich habe schon so manches hieraus gelernt und mir wurde schon bei so manchem Problem weiter geholfen. Dieses Mal aber bin ich nicht fündig geworden und hoffe mit einem Post eine Lösung für mein Anliegen zu bekommen!
Ich habe ein Formular in das Wettkampfergebnisse eingetragen werden und per Mail an den Verwalter dieser Daten gesendet werden. Nun wünscht sich dieser, dass die einzelnen Ergebnisse gleich zusammen addiert werden und er das Ergebnis in der Mail bekommt. Wie kann ich nun verschiedene "Felder" wie Ergebnis Schütze 1, Ergebnis Schütze 2 zusammen addieren?
Hallo,
[..]Wie kann ich nun verschiedene "Felder" wie Ergebnis Schütze 1, Ergebnis Schütze 2 zusammen addieren?
Je nachdem, wie die Formularfelder ausgelesen werden. Hier ein Beispiel mit CGI::param();
use CGI 'param';
my $summe = param('sniper_one') + param('sniper_two');
Wobei sniper_one und sniper_two die Namen der Inputfelder sind. Die Eingaben sollten wenigstens daraufhin geprüft werden, ob Zahlen eingegeben wurden.
Den ganzen Kram dann so in der Mail versenden, dass Cheffe auch nachprüfen kann, obs stimmt ;-)
Viele Grüße,
Hotte
OK das werd ich gleich mal versuchen. Wo muss ich denn das "use CGI 'param';" eingeben? Am Anfang des Dokumentes oder dazwischen? Oder ist das egal?
Also so klappt das anscheinend nicht. Bei meinem Formular, in der .cgi Datei steht oben:
«« #!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);
require "mailsetup.pl";
&formparser;
foreach ("/usr/sbin/sendmail","/usr/lib/sendmail","/usr/bin/sendmail","/usr/share/sendmail","/var/qmail/bin/sendmail","/usr/bin/sendmail.restart","/etc/sendmail.cf","/etc/sendmail.cw","/usr/man/man8/sendmail.8","/var/qmail/bin/qmail-inject"){
if(-e $_ && -X _){
$mailprogamm = $_;
last;
}««
Wenn ich da use CGI::param .... einfüge bekomme ich eine error.
Muss ich eine neue Datei mit CGI::param anlegen?
Wenn ich da use CGI::param .... einfüge bekomme ich eine error.
Nicht weiter verwunderlich, weil das nicht das ist, was man Dir gesagt hat. Für's nächste Mal sei so freundlich, die Fehlermeldung zu posten.
Muss ich eine neue Datei mit CGI::param anlegen?
Nein, lesen und mitdenken.
Alexander
Wenn ich da use CGI::param .... einfüge bekomme ich eine error.
Nicht weiter verwunderlich, weil das nicht das ist, was man Dir gesagt hat. Für's nächste Mal sei so freundlich, die Fehlermeldung zu posten.
Muss ich eine neue Datei mit CGI::param anlegen?
Nein, lesen und mitdenken.
Alexander
Ich hab folgendes versucht:
»»# Berechnungen
»»my #summe = ('$heimschtze1ringe') + ('$heimschtze2ringe')
In der Email dann $summe eingetragen.
Es erscheint auch der Wert $summe, aber da steht dann die "0" drin.
Jetzt hats geklappt und zwar so:
my $summe1 = $heimschtze1ringe + $heimschtze2ringe;
Danke für die Hilfe!
Hallo,
Also so klappt das anscheinend nicht. Bei meinem Formular, in der .cgi Datei steht oben:
«« #!/usr/bin/perl
Das ist die Shebang, die steht in jedem Script und beinhaltet den Pfad zum Scriptinterpreter (kann auch anders lauten).
use CGI::Carp qw(fatalsToBrowser);
brav ;-) Im Browser steht mehr als "Internal Server Error" also auch die Fehlermeldung selbst.
require "mailsetup.pl";
Hier stehen vermutlich ein paar Variablen drin, wie Mail-Empfänger usw...
&formparser;
Das ist die Funktion, die für Dich interessant ist: formparser() liest die Inputfelder aus. Hier also solltest Du ansetzen für die Summenbildung.
foreach ("/usr/sbin/sendmail","/usr/lib/sendmail","/usr/bin/sendmail","/usr/share/sendmail","/var/qmail/bin/sendmail","/usr/bin/sendmail.restart","/etc/sendmail.cf","/etc/sendmail.cw","/usr/man/man8/sendmail.8","/var/qmail/bin/qmail-inject"){
if(-e $_ && -X _){
$mailprogamm = $_;
last;
}««
Mit dieser Schleife wird der Pfad zum Mailprogramm rausgefischt. Besser: Frag Deinen Provider und trage den Pfad selbst ein,
$mailprogramm = '/usr/bin/sendmail'; # wenns so ist
Am Besten, Du machst Dich mal mit dem Mailer-Script vertraut, bevor Du größere Formulare angehst.
Z.B. mit sowas von Formular:
[name]
[betreff]
[abs-mail]
[text]
Viele Grüße,
Horst