Klaus: Suche in einer Mitarbeiterliste

Beitrag lesen

#!/usr/bin/perl -w
#mitarbeiterliste.pl    Ausgabe der CGI-Umgebungsvariablen
#Mitarbeiterliste -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

HTML-Header ausgeben

print "content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Test</title>";
print '<link rel="stylesheet" href="/css/css.css">',"\n";
print "</head><body>\n";

Variablen-Initialisierung

my (@input,$in,$total);
#my ($i,@cust, @arr, @erg, @matching);
my $request_method = $ENV{'REQUEST_METHOD'};
my @werte;
my %parameter;
my @paar;
my $aufruf;
my @spalten;
my @suchergebnis;
if ($request_method eq "GET") {
  $aufruf=$ENV{'QUERY_STRING'};
}
  elsif ( $request_method eq "POST"){
    read (STDIN, $aufruf, $ENV{'CONTENT_LENGTH'});
    print "Aufruf $aufruf<br>";
  }

@werte = split (/&/, $aufruf);
  foreach (@werte) {
    @paar=split (/=/, $_);
    $parameter{$paar[0]}=$paar[1];
  }
  #@werte=keys(%parameter);
  #print "Parameter ",keys(%parameter),"<br>";

my $pfad="/srv/www/cgi-bin/daten/";
   my $qdatei="$pfad$parameter{'datei'}";
   open (FILE,"<$qdatei")||
   "die Datei $parameter{'datei'} konnte nicht geöffnet werden";
   # ganze Datei in @file einlesen
   my @file = <FILE>;
   my $zeile=$file[0];

@spalten=split(/;/,$zeile);
   foreach (@spalten) {
     $parameter{$_}="";
   }
   shift (@file);
   # Array @file sortieren
   my @sorted = sort @file;
   #foreach $_ (@sorted) {
   #   chomp;
   #   push @arr, [ split(/;/,$_)];
   #}

mode=1 Ausgabe der Liste

mode=2 Ausgabe der Suchmaske

mode=3 Aufruf des Skriptes mit den Suchdaten zur Ausgabe der Suchergebnisse

mode=4 Ausgabe der Einfügemaske

mode=5 Ausführen der Eingabe in die Einfügemaske in die Liste

mode=6 Editierenmaske

mode=7 Einfügen des Editierten Eintrags

#if ($parameter{"mode"} eq "3")
#{

print "<table border=1 cellpadding='2' cellspacing='2'>";

#Tabellenkopf ausgeben
  #print "<form action='/cgi-bin/mitarbeiterliste.pl?mode=2&datei=mitarbeiterliste.txt' method='get'>";
#  print "<tr><td colspan='9'><h2>Suchergebnisse</h2></td></tr>";
#  print "<tr>";
#  foreach (@spalten) {
#    print "<th>$_</th>";}
#  print "</tr>";

Tabellenzeilen ausgeben

#  foreach (@arr) {
  # Schleifeniterator ist $_
  # Dereferenzieren der Arrayelemente mit $_->[Index]
  # Aktive Tabellenausgabe!!!!
#   print qq(<tr><td>$_->[0]</td><td>$_->[1]</td> <td>$_->[2]#</td><td>$_->[3]</td><td>$_->[4]</td><td>$_->[5]</td><td>$_->[6]#</td><td>$_->[7]</td><td>$_->[8]</td></tr>);
#  }
#  print "</table>";
#}

if ($parameter{"mode"} eq "1")
{
  print "<table border=1 cellpadding='2' cellspacing='2'>";
#Tabellenkopf ausgeben
  print "<form action='/cgi-bin/mitarbeiterliste.pl?mode=2&datei=mitarbeiterliste.txt' method='get'>";
  print "<tr><td colspan='8'><h2>Gesamte Liste</h2></td><td colspan='1'><input type='Submit' name='search' value='Eintrag suchen'</td></tr>";
  print "<tr>";
  foreach (@spalten) {
    print "<th>$_</th>";}
  print "</tr>";

Tabellenzeilen ausgeben

# foreach (@arr) {
  # Schleifeniterator ist $_
  # Dereferenzieren der Arrayelemente mit $_->[Index]
  # Aktive Tabellenausgabe!!!!
    print qq(<tr><td>$_->[0]</td><td>$_->[1]</td> <td>$_->[2]</td><td>$_->[3]</td><td>$_->[4]</td><td>$_->[5]</td><td>$_->[6]</td><td>$_->[7]</td><td>$_->[8]</td></tr>);
  }
  print "</table>";

if ($parameter{"mode"} eq "2")
{ print "<table border=0 cellpadding='2' cellspacing='2'>";
  print "<form action='/cgi-bin/mitarbeiterliste.pl' method='post'>";
  print "<tr><td colspan='9'><h2>Suchen</h2></td></tr>";
  $parameter{mode}=3;
  foreach (@spalten) {
    print "<tr><td>$_:</td><td><input type='Text' name='$_' value='' size='25'</td></tr>";}
    print "</table>";

print "<div align='center'><input type='Submit' name='search' value='Get that thing'</div>";
}

print "</table>\n";
print "</body></html>\n";

Pass auf ich möchte in meiner TXT Datei nach etwas suchen die TXT Datei hat 9 Zeilen die da lauten name, vorname . . . also sowas wie ne Kundendatei. Im mode 1 meines Skriptes wird die Gesamte Liste mit allen Mitarbietern angezeigt. Im mode 2 wird eine Suchmaske aufgerufen in der man Suchbegriffe eingeben kann. im mode 3 nun soll sie Ausgabe von mode 2 stattfinden. Ich weiss aber nicht wie ich eine Suche in mein Skript baue. Der mode 3 soll also meine mitarbeiterliste.txt öffnen und darin nach den Information suchen die ich in die Suchmaske eingegeben habe. Wie mache ich die Suchenfunktion.