Beitrag von Oliver ;-) (500 Beiträge) am Samstag, 23.Februar.2002, 22:03.
Blätterfunktion
Hallo Zusammen,
ich lasse den Inhalt einer DB über eine Suchfunktion für einzelne Felder mittels PullDown-Menüs ausgeben - also nicht über die Volltextsuche. Dabei können auch mehrere Felder kombiniert werden. Das funktioniert auch soweit.
Nun möchte ich gerne die Blätterfunktion aus der Bib verwenden. Leider ist mir nicht klar, wie ich das Suchergebnis mit durchschleife. Hier habe ich ja mehrere Variablen, die angesprochen werden können...
Grüße
Oliver ;-)
Antworten
Beitrag von Stefan Krupop (311 Beiträge) am Samstag, 23.Februar.2002, 22:29.
Re: Blätterfunktion
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Samstag, 23.Februar.2002, 23:10.
Re: Blätterfunktion
Hallo Stefan,
danke für deinen Tipp. So ähnlich hatte ich mir das schon gedacht. Ich hatte nur gehofft, es würde noch eine elegantere Lösung finden, da ich so insgesamt 15 Variablen in der Url habe...
So scheint es aber zu funktionieren. Nur kann ich es nicht testen, weil das Blättern nicht richtig funktioniert. Wenn ich mir den nächsten Satz anzeigen lassen will, wird mir aber nur der Erste angezeigt.
Was muss ich denn da noch beachten?
Oliver ;-)
Antworten
Beitrag von Stefan Krupop (311 Beiträge) am Samstag, 23.Februar.2002, 23:19.
Re: Blätterfunktion
Hi!
Bei 15 Variablen würd ich auf alle Fälle die 2. Möglichkeit nehmen ;)
Eleganter ginge es dann nur noch mit nem Perl-Script, dass aus einer Liste von Variablennamen (test1,test2,abc) den richtigen link bastelt ($_link&test1=$test&test2=$test2&abc=$abc), aber da sich die Variablennamen ja nicht dauernd ändern dürfte das zuviel des Guten sein...
Zum Blätterproblem wär' ne Test-URL nicht schlecht, so könnte es ne fehlerhafte Suche (liefert nur einen Treffer) oder ein Problem mit dem Range sein.
Stefan
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Samstag, 23.Februar.2002, 23:35.
Re: Blätterfunktion
Die Suchfunktion ist ok - zumindest funktionierte sie korrekt ohne die Blätterfunktion.
Ich denke, es könnte am range liegen. Ich weiß nur nicht, wo ich da anfangen soll...
Dies ist der Perl-Code
if ($cmd eq "search")
{
my $range=$_range_length;
my $blaettern=$_range_length;
my $blaetter_lang=$range*10;
my $newrange=$_range+$_range_length;
my $oldrange=$_range-$_range_length;
my $color='#CCCCCC';
my $color_vonbis='#FFFFFF';
my $color_zahl='#CCCCCC';
my $color_vorzu='#CCCCCC';
my $color_balken='#CCCCCC';
my $table='450';
my $table_align='left';
my $link="$_link&FamStand=$FamStand&Gesch=$Gesch&Altab=$Altab&Altbis=$Altbis&Kind=$Kind&Grossab=$Grossab&Grossbis=$Grossbis&PLZab=$PLZab&PLZbis=$PLZbis&Land=$Land&Partner=$Partner&Reise=$Reise&Freunde=$Freunde&SHG=$SHG&cmd=search";
get "FamStand~=$FamStand Geschlecht~=$Gesch Alter>=$Altab Alter<=$Altbis Kinder$Kind Groesse>=$Grossab Groesse<=$Grossbis PLZ~>=$PLZab PLZ~<=$PLZbis Land==$Land Partner==$Partner Reise==$Reise Freunde==$Freunde SHG==$SHG range=$v,2","db";
out "<div align=$table_align>";
out "<table width=$table cellpadding=2 cellspacing=2><tr align=left><td bgcolor=$color align='center'>";
$oldrange=0 if $oldrange<0 && $oldrange>-$_range_length;
out $oldrange>=0?"<a href=\"$link&range=0,$_range_length\">|<</a>":"|<";
out "</td><td bgcolor=$color align='center'>";
out $oldrange>=0?"<a href=\"$link&range=$oldrange,$_range_length\"><</a>":"<<";
out "</td><td bgcolor=$color align='center'>";
$ende=substr($_amount_query,0,length($_amount_query)-1);
out $newrange<$_amount_query?"<a href=\"$link&range=$newrange,$_range_length\">></a>":">>";
out "</td><td bgcolor=$color align='center'>";
out $newrange<$_amount_query?"<a href=\"$link&range=".($ende."0").",$_range_length\">>| </a>":">|";
out "</td><td bgcolor=$color_vonbis width='200' align='center'>Einträge ".($_range+1)." bis ".(($_range+$blaettern)>$_amount_query?"$_amount_query":($_range+$blaettern))." von $_amount_query</td>";
if ($_amount)
{
$vr=int($_range/$blaetter_lang) unless $_range==0;
$vr=$vr*$blaetter_lang;
out "<td bgcolor=$color_vorzu align='center'><a href=$link&range=".($vr-$blaetter_lang).",$_range_length\><<</a></td>" if ($vr-$blaetter_lang)>=0;
for ($i=$vr;$i<($vr+$blaetter_lang<=$_amount_query?($vr+$blaetter_lang):$_amount_query); $i+=$blaettern)
{
out "<td bgcolor=$color_zahl align='center'>".($_range==$i?"<b>".($i+1)."</b>":"<a href=$link&range=$i,$_range_length>".($i+1)."</a>")."</td>";
}
out "<td bgcolor=$color_vorzu align='center'><a href=$link&range=$i,$_range_length>>></a></td>" if $i<$_amount_query;
}
out "</tr></table></div>";
out <<EOF;
<div align=$table_align>
<table border="0" cellpadding="0" cellspacing="0" width=$table>
<tr>
<td width="0"><img border='0' src='http://www.URL.de/test/spacer.gif' width='2' height='2'></td>
<td bgcolor="#C0C0C0" width="100%"><img border='0' src='http://www.URL.de/test/spacer.gif' width='2' height='2'></td>
<td width="0"><img border='0' src='http://www.URL.de/test/spacer.gif' width='2' height='2'></td>
</tr>
</table>
</div>
EOF
if ($_amount_query == 0)
{
out "<br><span class='text'>Leider kein Eintrag zu den gewählten Kriterien !</span>";
}
while (get_next("db"))
{
out <<EOF;
...
...
</perl>
Oliver ;-)
Antworten
Beitrag von Stefan Krupop (311 Beiträge) am Sonntag, 24.Februar.2002, 13:57.
Re: Blätterfunktion
Hi!
Dre Code sieht so weit richtig aus... Wie schaut denn der Wert von range in der URL nach dem Blättern aus? Und wenn du an die URL nach dem Suchen, aber vor dem Blättern ein "&range=0,10" anhängst und dann blätterst?
Ansonsten wäre ne Test-URL gut.
Stefan
Antworten
Beitrag von Sander (8133 Beiträge) am Sonntag, 24.Februar.2002, 15:27.
Re: Blätterfunktion
hi oliver,
wenn du mit get, get_next arbeitest, funzt das range im link nicht. Deshalb hab ich die Variable $v in deinen anderen Blätterfunktionen verwendet. Die Schrittzahl ist fest eingestellt und es wird nur noch der Startwert mit $v weitergereicht. Schau dir das mal in den Scripten an.
Sander
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Sonntag, 24.Februar.2002, 19:58.
Re: Blätterfunktion
Hallo Sander, hallo Stefan,
ich hab's jetzt soweit hingebastelt.
Der Code sieht jetzt so aus:
get "FamStand~=$FamStand Geschlecht~=$Gesch Alter>=$Altab Alter<=$Altbis Kinder$Kind Groesse>=$Grossab Groesse<=$Grossbis PLZ~>=$PLZab PLZ~<=$PLZbis Land==$Land Partner==$Partner Reise==$Reise Freunde==$Freunde SHG==$SHG range=$v,2","boerse";
$ende=substr($_amount_query,0,length($_amount_query)-1);
out "= $ende = <br>"; ## Testausgabe
out "<div align=$table_align>";
out "<table width=$table cellpadding=2 cellspacing=2><tr align=left><td bgcolor=$color align='center'>";
my $newrange=$_range+$_range_length;
my $oldrange=$_range-$_range_length;
$oldrange=0 if $oldrange<0 && $oldrange>-$_range_length;
out $oldrange>=0?"<a href=\"$link&v=0&namerein=$namerein&sid=$sid\">|<</a>":"|<"; #
out "</td><td bgcolor=$color align='center'>";
out $oldrange>=0?"<a href=\"$link&v=$oldrange&namerein=$namerein&sid=$sid\"><</a>":"<<"; #
out "</td><td bgcolor=$color align='center'>";
out $newrange<$_amount_query?"<a href=\"$link&v=$newrange&namerein=$namerein&sid=$sid\">></a>":">>"; #
out "</td><td bgcolor=$color align='center'>";
out $newrange<$_amount_query?"<a href=\"$link&v=".($ende."0")."&namerein=$namerein&sid=$sid\">>| </a>":">|"; #
out "</td><td bgcolor=$color_vonbis width='200' align='center'>Einträge ".($v+1)." bis ".(($v+2)>$_amount_query?"$_amount_query":($v+2))." von $_amount_query</td>";
if ($_amount)
{
$vr=int($v/20) unless $v==0;
$vr=$vr*20;
out "<td bgcolor=$color_vorzu align='center'><a href=$link&namerein=$namerein&sid=$sid&v=".($vr-20)."><<</a></td>" if ($vr-20)>=0;
for ($i=$vr;$i<($vr+$blaetter_lang<=$_amount_query?($vr+20):$_amount_query); $i+=2)
{
out "<td bgcolor=$color_zahl align='center'>".($v==$i?"<b>".($i+1)."</b>":"<a href=$link&namerein=$namerein&sid=$sid&v=$i>".($i+1)."</a>")."</td>";
}
out "<td bgcolor=$color_vorzu align='center'><a href=$link&namerein=$namerein&sid=$sid&v=$i>>></a></td>" if $i<$_amount_query;
}
out "</tr></table></div>";
Nur diese Blättermarke ">|" will irgendwie nicht. Die Variable $v wird immer wieder auf NULL gesetzt, da $ende kein Ergebnis liefert. Ich weiß aber nicht woran es liegt...
Oliver ;-)
http://verwitwet.de/baseportal/kontakt/boerse
Antworten
Beitrag von Sascha Fitzner (476 Beiträge) am Sonntag, 24.Februar.2002, 20:20. WWW: planet-gaga.de
Re: Blätterfunktion
hi Oliver!
warum machst du nicht einfach
gruss Sascha Fitzner
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Sonntag, 24.Februar.2002, 21:11.
Re: Blätterfunktion
Diese Variable steht so in der Bib. Außerdem habe ich es so auch in einer anderen Anwendung. Nur hier funktioniert es nicht...
Dein Vorschlag funktioniert leider auch nicht...
Oliver ;-)
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Sonntag, 24.Februar.2002, 21:35.
Re: Blätterfunktion
Tja, das Ganze liegt daran, dass ich noch zuwenig Datensätze in der Datenbank habe... Deshalb funktioniert die Variable $ende noch nicht.
Ich benötige dafür mindestens 10 DS...
Oliver ;-)
Antworten