Der Benutzer gibt einen Produktcode, den Preis und den Namen über ein Formular ein. Das Skript fügt es dann entweder der Datenbank hinzu oder löscht es aus der Datenbank. Wenn der Benutzer versucht, ein Produkt zu löschen, das nicht in der Datenbank ist, erhalten sie eine Fehlermeldung. Bei erfolgreichem Hinzufügen oder Löschen erhalten sie auch eine Meldung. Wenn ich es jedoch teste, erhalte ich nur eine leere Seite. Perl gibt keine Warnungen, Syntaxfehler oder ähnliches aus; sagt alles ist in Ordnung, aber ich erhalte immer noch nur eine leere Seite.
Das Skript:
#!/usr/bin/perl
#c09ex5.cgi - speichert Daten in einer Datenbank und entfernt Daten aus einer Datenbank
print "Content-type: text/html\n\n";
use CGI qw(:standard);
use SDBM_File;
use Fcntl;
use strict;
#Variablen deklarieren
my ($code, $name, $price, $button, $codes, $names, $prices);
#Werte den Variablen zuweisen
$code = param('Code');
$name = param('Name');
$price = param('Price');
$button = param('Button');
($code, $name, $price) = format_input();
($codes, $names, $prices) = ($code, $name, $price);
if ($button eq "Save") {
add();
}
elsif ($button eq "Delete") {
remove();
}
exit;
sub format_input {
$codes =~ s/^ +//;
$codes =~ s/ +$//;
$codes =~ tr/a-z/A-Z/;
$codes =~ tr/ //d;
$names =~ s/^ +//;
$names =~ s/ +$//;
$names =~ tr/ //d;
$names = uc($names);
$prices =~ s/^ +//;
$prices =~ s/ +$//;
$prices =~ tr/ //d;
$prices =~ tr/$//d;
}
sub add {
#Variable deklarieren
my %candles;
#Datenbank öffnen, formatieren und Datensatz hinzufügen, Datenbank schließen
tie(%candles, "SDBM_File", "candlelist", O_CREAT|O_RDWR, 0666)
or die "Fehler beim Öffnen von candlelist. $!, gestoppt";
format_vars();
$candles{$codes} = "$names,$prices";
untie(%candles);
#Webseite erstellen
print "\n";
print "Candles Unlimited\n";
print "\n";
print "Danke, das folgende Produkt wurde hinzugefügt.\n";
print "Kerze: $codes $names $prices\n";
print "\n";
} #Ende add
sub remove {
#Variablen deklarieren
my (%candles, $msg);
tie(%candles, "SDBM_File", "candlelist", O_RDWR, 0)
or die "Fehler beim Öffnen von candlelist. $!, gestoppt";
format_vars();
#Überprüfen, ob das Produkt aufgelistet ist
if (exists($candles{$codes})) {
delete($candles{$codes});
$msg = "Die Kerze $codes $names $prices wurde entfernt.";
}
else {
$msg = "Das von Ihnen eingegebene Produkt ist nicht in der Datenbank";
}
#Datenbank schließen
untie(%candles);
#Webseite erstellen
print "\n";
print "Candles Unlimited\n";
print "\n";
print "Candles Unlimited\n";
print "$msg\n";
print "\n";
}