#!/usr/bin/perl -wT
use CGI qw(:standard);
########
# CGI.pm in der einfachsten Version benutzen
# Parameter in das Array @field; letztes Element ist gedrueckter Button
########
$field[0] = param('name');
$field[1] = param('vorname');
$field[2] = param('adresse');
$field[3] = param('plz');
$field[4] = param('stadt');
$field[5] = param('telefon');
$field[6] = param('fax');
$field[7] = param('mobil');
$field[8] = param('email');
$field[9] = param('url');
if(param('add'))
{
$field[10] = param('add');
}
elsif(param('search'))
{
$field[10] = param('search');
}
elsif(param('all'))
{
$field[10] = param('all');
}
#####
# "hinzufuegen" gedrueckt? Leere Felder durch "keine Angabe" ersetzen,
# letztes Element der Liste ("hinzufuegen") abtrennen.
# Als Trenner ;; verwenden; ist beliebig, muss aber eindeutig sein.
# Datei zum Anhaengen oeffnen, neuen Eintrag mit Newline hinzufuegen.
# Datei zu. Eintrag an Unterfunktion add_webpage() geben.
#####
if(param('add'))
{
foreach(@field)
{
if ($_ eq "")
{
$_ = "keine Angabe";
}
}
pop @field;
$newentry = join(';;', @field);
open (DATEI, ">>/tmp/adressen.txt") || die "Die Datei konnte nicht ge”ffnet werden\n";
print DATEI "$newentry\n";
close DATEI;
add_webpage(@field);
}
###########
# Alle Eintraege anzeigen?
# Datei zum Lesen oeffnen, als Matrix einlesen:
# Zeile fuer Zeile, pro Zeile Element fuer Element.
# Matrix an Unterfunktion all_webpage() uebergeben.
###########
if (param('all'))
{
open (DATEI, ";
foreach(@datei)
{
push @all, [ split(/;;/, $_) ];
}
close DATEI;
all_webpage(@all);
}
#######
# Wenn eine Suche aktiviert wird:
# Wir werfen erstmal das "Eintrag suchen" in $field[10] raus.
# Leere Hash-Paare werden ebenfalls nicht benoetigt.
# Datei zum lesen oeffen und eine Daten-Matrix als Array of Array erstellen:
# Elemente sind Referenzen auf die gesplitteten Elemente der jeweiligen Zeile.
# Felder mit Eintrag suchen; in der Spalte zu dem Feld nach den Daten suchen.
# Zeile merken, in der ein Eintrag gefunden wurde, und eine neue Matrix machen.
# An Unterfunktion search_webpage uebergeben, die daraus HTML macht.
#######
if (param('search'))
{
pop @field;
foreach(@field)
{
if($_ eq "")
{
$_ = undef;
}
}
open (DATEI, ";
close DATEI;
foreach (@datei)
{
chomp;
push @matrix, [ split(/;;/, $_) ];
}
for($i=0; $i<@field; $i++)
{
if ($field[$i])
{
$index = $i;
foreach $ref (@matrix)
{
if ($ref->[$index] =~ /$field[$index]/)
{
push @entry, [ @{$ref} ];
}
}
}
}
if (@entry)
{
search_webpage(@entry);
}
else
{
error_page("Leider wurde kein Eintrag gefunden!");
}
}
##########
# Webseite fuer die Suche: Nimmt Eintraege aus @_ an
# Durchlaeuft in zwei foreach-Schleifen die Matrix:
# Erste Liste ergibt jeweils die
-Tags,
# Referenzen auf die "Unterliste" ergeben jeweils die -Tags
# WWW- und EMail-Adressen werden dynamisch als Links gesetzt.
##########
sub search_webpage
{
my @eintraege = @_;
head_page();
print "Sie suchen ein bestimmtes Schaf:\n";
print "
\n";
foreach $ref (@eintraege)
{
print "";
if ($ref->[8] ne "keine Angabe")
{
$ref->[8] = "[8]\">$ref->[8]";
}
if ($ref->[9] ne "keine Angabe")
{
$ref->[9] = "[9]\">$ref->[9]";
}
foreach $i (@eintraege)
{
if ($_)
{
print "$_ | ";
}
}
foreach (@{$ref})
{
print "$_ | ";
}
print " ";
}
print " >BR> \n";
foot_page();
}
##########
# Erzeugt eine Tabelle mit allen Eintraegen
##########
sub all_webpage
{
my @eintraege = @_;
head_page();
print "Wir zeigen Ihnen alle Ihre Schäfchen vereint:\n";
print "
\n";
foreach $ref (@eintraege)
{
chomp @$ref;
print "";
if ($ref->[8] ne "keine Angabe")
{
$ref->[8] = "[8]\">$ref->[8]";
}
if ($ref->[9] ne "keine Angabe")
{
$ref->[9] = "[9]\">$ref->[9]";
}
foreach (@{$ref})
{
print "$_ | ";
}
print " ";
}
print "
\n";
foot_page();
}
##########
# Zeigt den just angehaengten Eintrag auf einer HTML-Seite
##########
sub add_webpage
{
my @eintraege = @_;
head_page();
print "Folgendes Schaf wurde Ihrer Herde hinzugefügt:\n";
print "
\n";
foreach (@eintraege)
{
print "$_ | ";
}
print "
\n";
foot_page();
}
############
# Seitenkopf als Unterfunktion
############
sub head_page
{
print "Content-type: text/html \n\n";
print <Adressdatenbank
Alle meine Schäfchen
Begin
}
##########
# Seitenfuss als Unterfunktion
# ACHTUNG, URL Anpassen!
##########
sub foot_page
{
print <[Bitte zurück!
]
Vielen Dank!
|