#!/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!

End } sub error_page { $error = $_[0]; head_page(); print < $error

Page foot_page(); }