selfhtml.de - Alles für den Webmaster!

 

Empfehlung:

wix.com

Kostenlose Homepage

Besuchen Sie auch:

Jobs:

Re: Subroutine über Formularbutton aufrufen

Autor: moll [Beiträge: 57]
Datum: 23.09.2009 14:02:03

Hallo!

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>};
......}
# ich nehme mal an dass hier nur ein Datensatz gelesen wird?
# sonst geht das so nicht, weil sonst müsste man die Namen der Eingabefelder mit einer Id versehen
# so, Vornam01, Vorname02 ..
# und wenn dem nicht so ist so ist, kannst du hier die Schleife weglassen
# das sieht dann so aus:
sub get {
my $id = shift;
# connect
my $query = qq{SELECT * FROM stunden WHERE id =$id};
# prepare, execute
my $ref = $prep_sql->fetchrow_hashref()){
# finish
return $ref;
}

# und für die Ausgabe
sub show {
    my $ref = shift; # das ist die Rückgabe vom get()
    print qq{<form action="StundenzettelKom.pl?action=test"  method="post">};
    print qq{<input type=submit value='Anzeigen'"/>};
    print qq{<input type=submit name="save" value='Speichern'"/>};
    print qq{<input type="hidden" name="id" value="$ref->{id}" />};
    print qq{<td><input type="text" name="ID_Tabelle_Zeiten" value="$ref->{ID_Tabelle_Zeiten}" />n</td>};
    print qq{<td><input type="text" name="Vorname" value="$$ref->{Vorname}" />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;
# wenn du oben schon ein cgi-Objekt definierst, dann kann das weg:
# vor hier ..
read(STDIN, $Formulardaten, $ENV{'CONTENT_LENGTH'});
[..]
  if($Name eq "Gesamtstunden") { $Gesamtstunden = $Value; }
}
# .. bis hier
# und statt dessen geht sowas:
my @data;
push @data, $cgi->param('vormame') || "";
push @data, $cgi->param('nachname') || "";
# und dann
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(@data) or die $dbh->errstr();
$dbh->disconnect();
}

# Und nun zur Steuerung

#!/usr/bin/perl -w
use CGI qw(:standard);
BEGIN {
use CGI::Carp qw(carpout fatalsToBrowser);
open LOG,">>prog.log";
carpout(*LOG);
}
print "Content-type: text/htmlnn";
my $cgi = new CGI;
$_ = $cgi->param('action') || "";

if (/save/ && $cgi->param('id')){
&save(); # nenne die Fkt test hier mal save
} elsif (/show/ && $cgi->param('id'){  (
my $data = &get($cgi->param('action'));
&show($data);
} else  {
&list(); # diese müsstest du noch schreiben
}

1;

Das Formular hat dann zwei Submitbutton Anzeigen und Save. Sie save-Fkt. kannst du dann in Abhängigt des Vorhandenseins einer ID entweder als INSERT oder als UPDATE ausführen.

Gruß Matthias


Beiträge

Antwort schreiben

Username: Usernamen registrieren
Passwort: Passwort vergessen?
Thema:
  Bitte benutze für deinen Beitrag die Groß-/Kleinschreibung!
Beitrag:
Link (URL):
Titel für Link:
Grafik (URL):
  Die Breite der Grafik darf 468 Pixel nicht überschreiten.
 
E-Mail-Benachrichtigung:



Zum Abschicken deines Beitrags bitte die Schaltfläche "Abschicken" nur einmal anklicken und warten. Der Server braucht manchmal einige Zeit, bis er den Beitrag in die Datenbank übernommen hat. Wenn du die Schaltfläche mehrmals drückst, erscheint dein Beitrag auch mehrmals im Forum.

Bewerten Sie Ihren Webhosting-Provider

Webhosting Provider bewerten und Apple iPad gewinnenWie zufrieden sind Sie mit Ihrem Webhosting-Provider? Gibt es Probleme beim Service, mit der Performance oder der Abrechnung?

Teilen Sie jetzt Ihre Erfahrungen mit anderen Webmastern und schreiben Sie eine Provider-Bewertung. Mit etwas Glück können Sie ein Apple iPad gewinnen!

Weitere Informationen und Teilnahme...