|< 1 2 3 4 >| | 31 Einträge, 4 Seiten |
1 2 3 4 5 6 7 8 9 10 11 12
$dbh->{AutoCommit}= 0; #Für Transaktion eval { bestellung_speichern ($dbh, $bestell_info) and $dbh->commit (); }; if ($@) { #hat nicht Funktioniert $dbh->rollback (); $dbh->disconnect (); $peh->schwerer_fehler ("Ein Problem mit der Datenbank ist aufgetreten.Bitte versuchen sie es noch einmal."); } $dbh->{AutoCommit} = 1; #Transaktion abgeschlossen
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
sub bestellung_speichern { my ($dbh, $bestell_info) = @_; #Datensatz in doku_bestell $dbh->do ("INSERT INTO doku_bestell (bestell_datum, bestell_preis, aut_id, kunden_name, kunden_email) VALUES (CURRENT_DATE,?,?,?,?)", undef, $bestell_info->{gesamtpreis}, $bestell_info->{aut_id}, $bestell_info->{kunden_name}, $bestell_info->{kunden_email} ); #Bestell_id ist der Auto_Increment wert von eben $bestell_info->{bestell_id} = $dbh->{mysql_insertid}; #für jedes Dokument einen Datensatz in doku_posten for (@{$bestell_info->{posten}}) { #Passwort für das Dokument erzeugen und speichern my $passwort = passwort (); my $a; #Erzeugt die Links zu den Dokumenten $a = sprintf ("dokument.cgi?bestellung=%s;doku=%s;password=%s", escape ($bestell_info->{bestell_id}), escape ($_->{doku_id}), escape ($passwort) ); $_->{url} = $peh->haupt_url () . $a; $dbh->do ("INSERT INTO doku_posten (bestell_id, doku_id, preis, passwort) VALUES (?,?,?,?)",undef, $bestell_info->{bestell_id}, $_->{doku_id}, $_->{preis}, $passwort ); } }
{PrintError => 0, RaiseError => 1}
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
sub bestellung_speichern { my ($dbh, $bestell_info) = @_; #Datensatz in doku_bestell $dbh->do ("INSERT INTO doku_bestell (bestell_datum, bestell_preis, aut_id, kunden_name, kunden_email) VALUES (CURRENT_DATE,?,?,?,?)", undef, $bestell_info->{gesamtpreis}, $bestell_info->{aut_id}, $bestell_info->{kunden_name}, $bestell_info->{kunden_email} ) or $peh->schwerer_fehler ("INSERT #1: " . $dbh->errstr); ; #Bestell_id ist der Auto_Increment wert von eben $bestell_info->{bestell_id} = $dbh->{mysql_insertid}; #für jedes Dokument einen Datensatz in doku_posten for (@{$bestell_info->{posten}}) { #Passwort für das Dokument erzeugen und speichern my $passwort = passwort (); my $a; #Erzeugt die Links zu den Dokumenten $a = sprintf ("dokument.cgi?bestellung=%s;doku=%s;password=%s", escape ($bestell_info->{bestell_id}), escape ($_->{doku_id}), escape ($passwort) ); $_->{url} = $peh->haupt_url () . $a; $dbh->do ("INSERT INTO doku_posten (bestell_id, doku_id, preis, passwort) VALUES (?,?,?,?)",undef, $bestell_info->{bestell_id}, $_->{doku_id}, $_->{preis}, $passwort ) or $peh->schwerer_fehler ("INSERT #2: " . $dbh->errstr); } }
QuoteCan't locate auto/Digest/MD5/retunr.al in @INC (@INC contains: e:/WWW/cgi-bin/pseudecom ./WebDB E:/Programme/perl/lib E:/Programme/perl/site/lib .) at E:/WWW/cgi-bin/pseudecom/doku_shop.cgi line 411
1 2 3 4 5 6 7 8 9 10 11
sub passwort { my $md5 = Digest::MD5->new (); $md5->add (rand ()); $md5->add (localtime (time ())); $md5->add ($$); #Aktuelle Prozess-ID retunr $md5->hexdigest (); }
1 2 3 4 5 6 7 8 9 10 11 12 13
sub rewrite { $dbh->rollback (); $dbh->disconnect (); $peh->schwerer_fehler ("Ein Problem mit der Datenbank ist aufgetreten.Bitte versuchen sie es noch einmal."); } $dbh->do ("INSERT INTO doku_bestell (bestell_datum, bestell_preis, aut_id, kunden_name, kunden_email) VALUES (CURRENT_DATE,?,?,?,?)", undef, $bestell_info->{gesamtpreis}, $bestell_info->{aut_id}, $bestell_info->{kunden_name}, $bestell_info->{kunden_email}) or rewrite();
QuoteAußerhalb der Sub kannst Du dann abfragen, ob $peh->schwerer_fehler eine Meldung enthält.
|< 1 2 3 4 >| | 31 Einträge, 4 Seiten |