suchfunktion
Steffen
- perl
0 rolfrost0 Matti Maekitalo0 Steffen
0 Steffen
Hi erstmal!!!
Ich möchte eine Perldatei schreiben in der es 7 modes gibt. Ich weiss auch wie ich es hinbekomme doch leider habe ich keine Ahnung, wie ich afu ein suchskript zugreifen soll das in einer Date liegt. mein skript sieht folgendermaßen aus!!!
use strict;
use CGI::Carp qw(fatalsToBrowser);
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";
my (@input,$in,$total);
#my %form_dat;
my ($i,@cust, @arr, @erg, @matching);
my $request_method = $ENV{'REQUEST_METHOD'};
my @werte;
my %parameter;
my @paar;
my $aufruf;
my @spalten;
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(/;/,$_)];
}
if ($parameter{"mode"} eq "1")
{
print "<table border=1 cellpadding='2' cellspacing='2'>";
#Tabellenkopf ausgeben
print "<form action='../../../mitarbeiterliste.html' method='POST'>";
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>";
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=1 cellpadding='2' cellspacing='2'>";
print "<form action='../../../mitarbeiterliste.html' method='POST'>";
print "<tr><td colspan='9'><h2>Suchen</h2></td></tr>";
print "<tr>";
foreach (@spalten) {
print "<th>$_</th>";}
print "</tr>";
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>";
}
print "</table>\n";
print "</body></html>\n";
könnt ihr mir helfen eine Suchfunktion reinzubauen???? Bin am verzweifeln!!!
Danke schonmal für jede Antwort!!
hi,
was soll denn wo gesucht werden?
was soll durchsuchbar sein?
Viele Grüße, rolf
use Mosche;
Nur ein paar Anmerkungen zu deinem Code, die dir in Zukunft vielleicht hilfreich sind.
Variablen-Initialisierung
[bis]
#@werte=keys(%parameter);
#print "Parameter ",keys(%parameter),"<br>";
Das kannst du ersetzen durch
use CGI qw(param);
print for param();
if ($parameter{"mode"} eq "1")
if (param('mode') == 1)
müsste schneller sein.
Ansonsten schließe ich mit Rolf an.
use Tschoe qw(Matti);
Hallöle
danke für die Antworten!
Also ich baue gerade eine Intranetpage mit einer Telefonliste.
Diese Telefonliste möchte ich wenn ich in meine Suchenmaske etwas eingebe durchsuchen. Da ich leider erst seit 3 Wochen mit Perl arbeite hab ich auch noch nicht wirklich Ahnung.
Den Code habe ich etwas erweitert und hoffe das ihr versteht was ich möchte!!!
Der Code folgt!
#!/usr/bin/perl -w
#mitarbeiterliste.pl Ausgabe der CGI-Umgebungsvariablen
#Mitarbeiterliste -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
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";
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(/;/,$_)];
#}
if ($parameter{"mode"} eq "3") {
#print "<table border=1 cellpadding='2' cellspacing='2'>";
print "grep";
# Suchalgorithmus mit grep()
# @matching= grep { # Iterator ist $_
#$_->[0] =~ /^$cust[0]/ &&
#$_->[1] =~ /^$cust1/ &&
#$_->[2] =~ /^$cust2/ &&
#$_->[3] =~ /^$cust3/ &&
#$_->[4] =~ /^$cust4/ &&
#$_->[5] =~ /^$cust5/ &&
#$_->[6] =~ /^$cust6/ &&
#$_->[7] =~ /^$cust7/ &&
#$_->[8] =~ /^$cust8/
}
#@arr;
#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>";
# 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 "3")
#{
#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>";
# 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>";
# 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";
Wie ihr im Code seht hab ich schonmal ein bisschen was ausprobiert leider klappt das nicht!!! könnt ihr mir bitte helfen
Hallöle
danke für die Antworten!
Also ich baue gerade eine Intranetpage mit einer Telefonliste.
Diese Telefonliste möchte ich wenn ich in meine Suchenmaske etwas eingebe durchsuchen. Da ich leider erst seit 3 Wochen mit Perl arbeite hab ich auch noch nicht wirklich Ahnung.
Den Code habe ich etwas erweitert und hoffe das ihr versteht was ich möchte!!!
Der Code folgt!
#!/usr/bin/perl -w
#mitarbeiterliste.pl Ausgabe der CGI-Umgebungsvariablen
#Mitarbeiterliste -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
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";
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(/;/,$_)];
#}
if ($parameter{"mode"} eq "3") {
#print "<table border=1 cellpadding='2' cellspacing='2'>";
print "grep";
# Suchalgorithmus mit grep()
# @matching= grep { # Iterator ist $_
#$_->[0] =~ /^$cust[0]/ &&
#$_->[1] =~ /^$cust1/ &&
#$_->[2] =~ /^$cust2/ &&
#$_->[3] =~ /^$cust3/ &&
#$_->[4] =~ /^$cust4/ &&
#$_->[5] =~ /^$cust5/ &&
#$_->[6] =~ /^$cust6/ &&
#$_->[7] =~ /^$cust7/ &&
#$_->[8] =~ /^$cust8/
}
#@arr;
#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>";
# 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 "3")
#{
#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>";
# 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>";
# 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";
Wie ihr im Code seht hab ich schonmal ein bisschen was ausprobiert leider klappt das nicht!!! könnt ihr mir bitte helfen