Online Beschreibung von database seach engine perl

Hi!

Kennt irgendjemand eine gute Seite wo beschrieben ist, wie man eine Datenbanksuchmaschine in Perl programmiert?

Ich habe zwar eine programmiert, die funktioniert aber nicht so wie ich es mir gerne wünschen würde!

Wenn jemand eine gute Seite kennt würde es mich freuen!

MfG
Ingrid

Frag ruhig uns, wir beissen nicht
Hallo INgrid,

Ich habe zwar eine programmiert, die funktioniert aber nicht
so wie ich es mir gerne wünschen würde!

Erzähl doch mal was muckt denn ?

Arne

HI Arne

na gut, eigentlich wollte ich damit niemanden belästigen sondern selber drüber hinweg kommen…

mein search funktioniert nämlich, ich möchte aber ein anderes System, weil das was ich habe gefällt mir nicht.

mein programmierter search öffnet ein Verzeichnis, sucht alle Datenbankdateien, gibt jeder zeile in den Dateien einen Namen und vergleicht danach die Formulareingabe mit den Daten der Zeile in den Datenbankdateien. Das System ist insofern gut, weil theoretisch nach verschiedenen Kriterien gesucht werden kann und die Kriterien nicht vermischt werden. (ZB.: Suche nach Nationalität, Sprachkenntnisse, Alter usw)
Leider kann der search nicht erkennen ob ein searchfeld überhaut gesucht werden soll (ausgefüllt ist oder nicht).

hier der source:
print " Search Results - $form{‚searchstring‘} User nameTitle / Subject:Job:smiley:ate Ad Placed\n";
opendir THEDIR, „$basepath$form{‚CATEGORY‘}“ || die „Unable to open directory: $!“;
@allfiles = readdir THEDIR;
closedir THEDIR;
foreach $file (sort { int($a) int($b) } @allfiles) {
if (-T „$basepath$form{‚CATEGORY‘}/$file“) {
open THEFILE, „$basepath$form{‚CATEGORY‘}/$file“;
($alias, $CATEGORY, $MESSAGE, $photo, $age, $LOCATION, $country, $byear, $bmonth, $bday, $datepost, $job, $langu, $langv, $floppy, @junk) = ;
#öffnet das Verzeichnis und gibt jeder zeile von jeder Datei einen Namen
chomp($alias, $CATEGORY, $MESSAGE, $photo, $age, $LOCATION, $country, $byear, $bmonth, $bday, $datepost, $job, $langu, $langv, $floppy, @junk);
close THEFILE;
$file =~ s/.dat//;
&agecon; #tut bloß etwas berechnen
if ($photo eq $defaultpic) {$img = „“ }
else {$img = „“};

if ($country =~ /$form{‚country‘}/i) {
if ($job =~/$form{‚job‘}/i) {
if ($langu =~/$form{‚langu‘}/i) {
if ($langv =~/$form{‚langv‘}/i) {
if ($floppy =~/$form{‚floppy‘}/i) {
if ($LOCATION =~/$form{‚LOCATION‘}/i) {
print „$alias $img$job$TOTAL$datepost\n“;
}
}
}
}
}
}
}
}

print „“;
}

Funktionieren tut das ganze rein Technisch gesehen. Doch hätte ich gerne, daß der search überprüft welche Felder nicht ausgefüllt wurden und diese nicht durchsucht. Das zweite Problem welches ich bei dieser Searchvariante habe ist, daß ich bei einem dropdown Menü keine Multiple selection geben kann weil sonst finden der search ebenfalls nichts…

danke für jede Hilfe!

Ingrid

Hallo,

na gut, eigentlich wollte ich damit niemanden belästigen
sondern selber drüber hinweg kommen…

mein search funktioniert nämlich, ich möchte aber ein anderes
System, weil das was ich habe gefällt mir nicht.

Funktionieren tut das ganze rein Technisch gesehen. Doch hätte
ich gerne, daß der search überprüft welche Felder nicht
ausgefüllt wurden und diese nicht durchsucht. Das zweite
Problem welches ich bei dieser Searchvariante habe ist, daß
ich bei einem dropdown Menü keine Multiple selection geben
kann weil sonst finden der search ebenfalls nichts…

danke für jede Hilfe!

Ingrid

also, Problem 1: Du möchtest nur eingegebene Felder überprüfen: Das geht einfach mit if ($form{‚name‘})
also einfach pro Testvorgang ein if rundherum machen, und ein Flag setzen, wenn es matcht. Bei einer UND-Suche setzt du das Flag auf False, sobald ein Kriterium gesucht wird, aber nicht matcht, bei ODER setzt du das Flag auf TRUE sobald eines der Kriterien passt.

Und die Multiple-Selection funktioniert folgendermassen: Der Browser schickt die option-values der Mehrfachselektion mit Leerzeichen getrennt, und du machst dann im script einfach ein split. Wiederum, je nachdem ob du eine ODER-Suche oder eine UND-Suche machst, setzt du ein Flag, und voila.

liebe Grüsse,
Gerhard