Thread Subroutine über Formularbutton aufrufen (4 answers)
Opened by Ben at 2009-09-22 15:00

Gast Ben
 2009-09-22 15:00
#126015 #126015
Hallo,

ich möchte eine Subroutine über einen Button in einem eingebetteten HTML Formular ausführen.
Habe dies mit folgendem Code probiert aber ohne Erfolg.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
while (my @row = $prep_sql->fetchrow_array())
{
    print qq{<form action="StundenzettelKom.pl?action=test"  method="post">};
    print qq{<td><input type=button value="test" onClick="submit()"/>\n</td>};
     print qq{<td><input type="text" name="ID_Tabelle_Zeiten" value="$row[0]" />\n</td>};
    print qq{<td><input type="text" name="Vorname" value="$row[1]" />\n</td>};
......}

$query = new CGI;
$command = $query -> param('action');
if ($command eq "test") {&test}

sub test {
   
 my $db_name = 'Stundenzettel';
 my $db_user  = '*****';
 my $db_pass = '*****';
 my $db_host = 'localhost';
 my $dbh = DBI->connect('DBI:mysql:'.$db_name.':'.$db_host,$db_user,$db_pass) or die $DBI::errstr;
 
 read(STDIN, $Formulardaten, $ENV{'CONTENT_LENGTH'});
 @Formularfelder = split(/&/, $Formulardaten);
 foreach $Feld (@Formularfelder)
 {
  ($Name, $Value) = split(/=/, $Feld);
   $Value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   $Value =~ s/~!/ ~!/g;
   $Value =~ s/\|/%7C/g;
  
  if($Name eq "ID_Tabelle_Zeiten") { $ID_Tabelle_Zeiten = $Value; }
  if($Name eq "Vorname") { $Vorname = $Value; }
  if($Name eq "Nachname") { $Nachname = $Value; }
  if($Name eq "Datum") { $Datum = $Value; }
  if($Name eq "Ort") { $Ort = $Value; }
  if($Name eq "Anfang") { $Anfang = $Value; }
  if($Name eq "Ende") { $Ende = $Value; }
  if($Name eq "Stunden") { $Stunden = $Value; }
  if($Name eq "Pausen") { $Pausen = $Value; }
  if($Name eq "Unterschrift") { $Unterschrift = $Value; }
  if($Name eq "Ueberstunden") { $Ueberstunden = $Value; }
  if($Name eq "Gesamtstunden") { $Gesamtstunden = $Value; }
 }


my $insert = 'INSERT INTO Tabelle_Zeiten (ID_Tabelle_Zeiten,Vorname,Nachname,Datum,Ort,Anfang,Ende,Stunden,Pausen,Unterschrift,Ueberstunden,Gesamtstunden) VALUES(?,?,?,?,?,?,?,?,?,?,?,?)';
my $sth = $dbh->prepare($insert) or die $dbh->errstr();
$sth->execute("$ID_Tabelle_Zeiten","$Vorname","$Nachname","$Datum","$Ort","$Anfang","$Ende","$Stunden","$Pausen","$Unterschrift","$Ueberstunden","$Gesamtstunden") or die $dbh->errstr();

$dbh->disconnect();
}


In der Subroutine sollen die eingegebenen Formulardaten in eine Datenbank geschrieben werden.
Das Problem dabei ist, ich muß ein Unterprogramm erstellen damit der Code des Abschnitts für den Datenbankzugriff nur beim Eintragen eines Datensatzes ausgeführt wird.
Wenn die Seite über den Browser ausgeführt wird, trägt sich sonst immer ein neuer Datensatz ein.
Nun möchte ich das Problem über einen Button der auf die Subroutine zugreift realisieren.
Außerdem soll das Programm nur in einer Datei stehen.Ist das möglich?

Danke schonmal vorab!
rooot

mod-edit pq: perl-tags hinzugefügt
Last edited: 2009-09-22 15:18:19 +0200 (CEST)

View full thread Subroutine über Formularbutton aufrufen