Beitrag von Gabi (10 Beiträge) am Samstag, 28.Januar.2006, 18:50.
Suche in Checkbox-Ausgabe
Hallo!
Hat jemand eine Idee, wie ich die Ausgabe einer Checkbox durchsuchen lassen kann? Ich hab die Volltextsuche von H.Fehde in meine Seiten gebastelt, und er kann in allen möglichen Feldern suchen, aber nicht in der Checkbox "Test".
Also ich schreibe rein, Ausgabe wenn markiert: test123
Und wenn ich diese Checkbox bei einem Datensatz markiere und nach test123 suche, findet er nix.
{if ((index($Abstract,$Such)>= 0 or ($Abstract =~ /$mSuch/gim) or ($Autor =~ /$mSuch/gim) or ($Jahr =~ /$mSuch/gim) or ($Titel =~ /$mSuch/gim) or ($Journal =~ /$mSuch/gim) or ($Ausgabe =~ /$mSuch/gim) or ($Seite =~ /$mSuch/gim) or ($Test =~ /$mSuch/gim)))
{$i++;
$Daten[$i]="$i.<a href='http://baseportal.de/cgi-bin/baseportal.pl?
Such=$Such&view=on&htx=$htx&Id==$_id'>$Autor $Jahr $Titel</a><br>";
#----------- als Link wird das Feld [Autor, Jahr und Titel] ausgegeben ----------------------
}
Kann mir da jemand helfen?
Die Frage, ob es denn unbedingt eine Checkbox sein muss und kein normales Textfeld muss ich mit ja beantworten, weil ich sonst bei der Dateneingabe alles tausenmal schreiben muss und mit der Checkbox mach ich halt einfach klick und fertig. Ein Optionsfelds scheidet auch aus, weil schon zu viele Daten erfasst wurden und ich die Checkboxen nicht umwandeln kann/will (hab's mit einer probiert und es kam Katastrophales raus...).
Gruß
Gabi
Antworten
Beitrag von richard (1187 Beiträge) am Samstag, 28.Januar.2006, 20:10.
Re: Suche in Checkbox-Ausgabe
Du mußt nach der Zahl 1 suchen und nicht nach dem Ausgabetext.
Antworten
Beitrag von Gabi (10 Beiträge) am Samstag, 28.Januar.2006, 23:17.
Re: Suche in Checkbox-Ausgabe
Hmm. Ich weiß nicht, ob das geht. Der Benutzer hat bei der Datenbank nur das Suchfeld für die Volltextsuche zur Verfügung. Er hat nicht die Möglichkeit irgendwo auszuwählen.
Wie soll das denn als Code aussehen wenn er prüfen soll, ob der Suchbegriff dem Wert 1(also markiert) der Checkbox "Test" entspricht oder nicht?
Ich hab leider keine Idee...
Gabi
Antworten
Beitrag von richard (1187 Beiträge) am Sonntag, 29.Januar.2006, 11:03.
Re: Suche in Checkbox-Ausgabe
Antworten
Beitrag von Pouraga (1396 Beiträge) am Sonntag, 29.Januar.2006, 11:53.
Re: Suche in Checkbox-Ausgabe
Wenn ich mir deinen codeschnipsel ansehe, dann schwant mir böses. :)
Kann es ein das du nicht die Volltextsuche benutzt sondern alle Datensätze holst und dann selbst mit regex in den Feldern suchst.
if ((index($Abstract,$Such)>= 0 or ($Abstract =~ /$mSuch/gim) or ($Autor =~ /$mSuch/gim) or ($Jahr =~ /$mSuch/gim) or ($Titel =~ /$mSuch/gim) or ($Journal =~ /$mSuch/gim) or ($Ausgabe =~ /$mSuch/gim) or ($Seite =~ /$mSuch/gim) or ($Test =~ /$mSuch/gim)))
Nun dann ist einfach or ($Test == 1 and "test123" =~ /$mSuch/gim) denn du weisst ja was dein Checkbox feld für nen Wert hat. Bezw. viel besser gleich nur die datensätze holen die zutreffen.
$sel = "&Test==1" "test123" =~ /$mSuch/;
get "Deinebfrage$sel","datenabank", # ich weiss nicht kann auch sein das du loop benutzt;
Ich möchte dir aber ans Herz legen mal zu überprüfen ob du zum einem überhaupt ne Volltextsuche brauchst Autor Jahr Titel das sind alles sachen die sich auch wunderbar auf index suchen lassen. Bzw wenn es schon sein muss dann die eingebaute volltext suche nutzen. http://baseportal.de/bpws_doku.html#a23
So wie es momentan zu sein scheint ist es ein totaler ressourcen fresser und ich kann dir garantiern das du probleme bekommst sobald die datenbank mal etwas grösser wird.
Antworten
Beitrag von Gabi (10 Beiträge) am Sonntag, 29.Januar.2006, 13:47.
Re: Suche in Checkbox-Ausgabe
Also erstmal Danke für die Antworten! Leider geht's so auch nicht. Also ich hab von der programmierung nicht so die Ahnung. Ich hab das Script von Fehde genommen und entsprechend angepasst (war schon froh, dass ich das hingekriegt hab ;))
Also die Datenbank soll tatsächlich groß werden (mehrere 1000 Datensätze). Ist denn dann die verwendete Methode ungünstig? Ich war so froh, dass es funktioniert... Derzeit sind fast 500 Datensätze erfasst und es klappt ganz gut siehe http://baseportal.de/cgi-bin/baseportal.pl?htx=/gdadade/Rabenvogel
Inzwischen bastel ich noch an der erweiterten Suche, wo man nur nach Autor, Titel oder Journal sucht.
Das mit den Checkboxen ist nicht so schlimm, wenn's nicht klappt. Da ging's mir nur drum, dass man zu einer bestimmten Art alle Datensätze findet. Diese speziellen Literaturlisten hab ich aber noch anderweitig zur Verfügung gestellt. Aber wär natürlich schon schöner :)
Anbei mal der ganze Code für die Suche:
<!----- komplexe Volltext-Suche über "include scr=suchen"---------->
<font size=2 face=arial,helvetica>
<form action="baseportal.pl?htx=$htx" method="post" enctype="multipart/form-data">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td><div align="center"><center><font size="4" face="Arial"><b>Hier kannst Du die gesamte Rabenvogel-Literaturdatenbank nach einem beliebigen Text durchsuchen</td></b></font></tr>
<perl>init "Rabenvogel"</perl>
<tr>
<td><div align="center"><center><font size="2" face="Arial"><b>Derzeit sind $_amount_all Datensätze verfügbar.</td></tr>
<tr>
<td><div align="center"><center><font size="2" face="Arial"><b>Full text search in the Corvids Literature Database. At present $_amount_all records available.<p></td></tr>
<tr align="center">
<td> <font size="2" face="arial,helvetica">
<input type="text" name="Such=" size="10" value=""></font></td></tr>
<tr align="center">
<td> <font size="2" face="arial,helvetica">
<div align="center"><center><p></font>
<input type="submit" value="Suchen/Search"></td></tr>
</table>
</form>
<font size="2" face="arial">
if ($Such ne "") #---------------------falls eine Suchanfrage gestartet wurde
#---------------- und das Eingabefeld [Such] nicht leer ist
{
out "Suchbegriff/Search key =<b>[$Such]</b><br>";
my $i=0;
#--------------- Eingabe von ae, ue oder oe abfangen, z.B. "Moeglich" -----
$mSuch = $Such;
$mSuch =~ s/ä/Ä/g;
$mSuch =~ s/ö/Ö/g;
$mSuch =~ s/ü/Ü/g;
$mSuch=lc($mSuch);
$mSuch =~ s/ae/ä/g;
$mSuch =~ s/oe/ö/g;
$mSuch =~ s/ue/ü/g;
get "Autor==*";
while(get_next)
#----------- gesucht wird in dem Feld [Abstract] ----------------------------------
{if ((index($Abstract,$Such)>= 0 or ($Abstract =~ /$mSuch/gim) or ($Autor =~ /$mSuch/gim) or ($Jahr =~ /$mSuch/gim) or ($Titel =~ /$mSuch/gim) or ($Journal =~ /$mSuch/gim) or ($Ausgabe =~ /$mSuch/gim) or ($Seite =~ /$mSuch/gim) ($Test =~ /$mSuch/gim)))
{$i++;
$Daten[$i]="$i.<a href='http://baseportal.de/cgi-bin/baseportal.pl?
Such=$Such&view=on&htx=$htx&Id==$_id'>$Autor $Jahr $Titel</a><br>";
#----------- als Link wird das Feld [Autor, Jahr und Titel] ausgegeben ----------------------
}
}
out "Treffer/Hits: $i - ";
$treffer = $i > 0 ? "Wähle nachfolgend aus/Choose subsequently:" : "Leider KEIN Treffer";
out "<b>$treffer</b><br>";
out "@Daten";
}
"";
Gabi
Antworten
Beitrag von Claus (4645 Beiträge) am Sonntag, 29.Januar.2006, 14:52.
Re: Suche in Checkbox-Ausgabe
Antworten
Beitrag von Claus (4645 Beiträge) am Sonntag, 29.Januar.2006, 14:00.
Re: Suche in Checkbox-Ausgabe
eigentlich haben Richard und Pouraga das meiste schon erklärt.
Habe aber das Gefühl, daß Du die Volltextsuche über ein index-Feld etwas falsch verstanden hast.
Im Gegensatz zur baseportal-Volltextsuche(geht nur bei Miete/Lizenz), welche die gesamten Text-Felder einer Datenbank durchsucht, wird hier normalerweise auf 1 oder bei Bedarf auch auf 2 Felder zugegriffen.
Man kann bei der Eingabe von neuen Datensätzen bestimmte Inhalte aus den einzelnen Datenfeldern gesammelt z.B. an ein extra TEXT-Feld übergeben bzw. dort direkt Stichworte eingeben und diese dann auf diese Art abfragen.
Um das zu realisieren sollte man allerdings erst einmal Kenntnisse über das Verhalten bei Eingaben und in der Programmierung in Perl haben.
Beides scheint mir bei Dir (noch) nicht gegeben.
Die Doku und dort angegebene, weiterführende Links (selfhtml usw.) und das Forum bieten in dieser Hinsicht viele Informationen, Beispiele und Anregungen.
Gruß
Claus
Antworten
Beitrag von Gabi (10 Beiträge) am Sonntag, 29.Januar.2006, 15:42.
Re: Suche in Checkbox-Ausgabe
Danke für den Tip wegen "über"! Das funktioniert jetzt. Komischerweise findet er bei "Krähe" kaum was und bei "kraehe" alles, was eigentlich als "krähe" erfasst wurde. Also irgendwas stimmt da noch nicht.
Ich weiß, dass ich noch ein blutiger Anfänger bin in Sachen Programmierung. Aber ich lerne neue Sachen immer am besten, wenn ich sie direkt anwenden muss.
Ich werd jedenfalls fleißig weiter tüfteln und ausprobieren, mehr als schiefgehen kann's ja nicht ;) Selfhtml hab ich auch schon entdeckt und im Forum und der Dokumentation such ich auch oft. Werd mir am besten mal ein Pearl-Buch ausleihen, vielleicht gehen mir dann ein paar Lichter auf :)
So wie die Suche momentan funktioniert, find ich's aber schonmal gut und die Feinarbeiten (Blättern etc.) krieg ich hoffentlich auch noch hin und das mit den Checkboxen ist wie gesagt nicht so schlimm.
Danke! und Gruß Gabi
Antworten
Beitrag von Claus (4645 Beiträge) am Sonntag, 29.Januar.2006, 16:18.
Re: Suche in Checkbox-Ausgabe
>Komischerweise findet er bei "Krähe" kaum was und bei "kraehe" alles, was eigentlich als "krähe" erfasst wurde. Also irgendwas stimmt da noch nicht.
Das liegt daran, daß Du hier:
$mSuch = $Such;
$mSuch =~ s/ä/Ä/g;
$mSuch =~ s/ö/Ö/g;
$mSuch =~ s/ü/Ü/g;
ALLES in Großbuchstaben umwandelst;-)
Kommst Du aber auch noch hinter, wie man das macht. Lese einfach meinen 1. Beitrag, von wegen 1 oder!! 2 Felder;-))
Wie hat Till mal so schön geschrieben:
Das Forum dient als Hilfe zur Selbsthilfe;-))
Gruß
Claus
Antworten