<perl>
# Vorbelegung wichtiger Variablen
$fbez ||= "*"; # Filterwert für die Bezeichnung (hier dann eben Anfangsbuchstabe oder alles bei *)
$ra ||= 0; # Startwert vorgeben, wenn $ra leer ist (referenziert $_range als Überabeparameter an die Sub)
$ra_l ||= 30; # Anzahl der auszugebenden Datensätze pro Seite (referenziert $_range_length als Übergabeparameter an die Sub
# Subdefinition, dadurch ist diese dann im ganzen Template bekannt
sub show_amount{ ################################################################
$a_debug.= "<b>A sub show_amount(@_)</b><br>";
# syntax: &show_amount($_range,$_range_length,$_amount,$_amount_query, $bezeich,$flink,$ausricht,$breite);
# Aufruf unmittelbar dort, wo die DB geholt wird oder aber die System-
# variablen umspeichern um sie vor Überschreiben zu schützen
# Parameter $bezeich ist das Wort was drin steht, Voreinstellung "Einträge", ich übergeb unten "Dienstleistungen"
# Parameter $flink ist die Erweiterung der Links um evtl. Filterkriterien (wäre bei den Buchstaben dann bspw. "&fbezeich=$fbezeich
# Parameter $ausricht ist die Ausrichtung der Tabelle im div-Container, es ist left,right,center zulässig - voreingestellt ist right (rechts)
# $breite ist die Breite der Tabelle (normalerweise nicht notwendig)
my ($_range,$_range_length,$_amount,$_amount_query, $bezeich,$flink,$ausricht,$breite) = @_ ;
# my ($_range,$_range_length,$_amount,$_amount_query) = @_ ;
$ausricht ||= "right";
$bezeich ||= "Einträge";
$ausrichtung = $ausricht ne "" ? "align='$ausricht'" : "";
my $breit = $breite == "v" || $breite == "" ? "" : $breite;
$z_linkzugang ||= "zug=zug"; # Hilfskonstrukt,um Paramterübergabefehler vorzubeugen, wenn $z_linkzugang nicht def.
my $_link = "$_link&$z_linkzugang&dsn=$dsn";
$_link .= $flink ne "" ? $flink : "";
my $range=$_range_length;
my $blaettern=$_range_length;
my $blaetter_lang = $range*10;
my $newrange=$_range+$_range_length;
my $oldrange=$_range-$_range_length;
#
# my $tab_breit = "100%"; # Gesamtbreite der Tabelle
my $tab_breit = $breit ne "" ? "width=$breit" : ""; # Gesamtbreite der Tabelle
my $fs_fgh = "#F0F0F0"; # Farbwert für Helle Hintergründe
my $fs_fg = "#C0C0C0"; # Farbwert für dunklere Hintergründe
my $tssk = $tssk eq "" ? "10px" : $tssk; # Schriftgröße, damit das dep. Font-Tag rauskommt
#
my $fa = "$fs_fgh"; # Hintergrundfarbe der Zellen mit Links
my $t_style = "style='font-size:$tssk;'"; # Schriftgrösse
my $fa = $fs_fgh;
my $v = $ra eq "" ? 0 : $ra;
####
my ($tab_index,$tab_amount);
$tab_index =<<EOF;
<table cellpadding=2 cellspacing=1 $ausrichtung>
<tr align=left><td width=20px $t_style bgcolor=$fa align=center>
EOF
$oldrange = 0 if $oldrange < 0 && $oldrange > -$_range_length;
$ende = substr($_amount_query,0,length($_amount_query)-1); # 10er zuvor (echt tricky!)
$ende2 = $_amount_query - $_amount_query % 10;
### $_link&$z_link&dsn=$dsn&ra_$db_n=$a_offset&ra_l_$db_n=$ra_l
$tab_index .= $oldrange >= 0 ? "<a class=klein href=\"$_link&ra=0\">|<</a>" : "|<";
$tab_index .= "</td><td width=20px $t_style bgcolor=$fa align='center'>";
$tab_index .= $oldrange >= 0 ? "<a class=klein href=\"$_link&ra=$oldrange\"><</a>":"<<";
$tab_index .= "</td><td width=20px $t_style bgcolor=$fa align='center'>";
$tab_index .= $newrange < $_amount_query ? "<a class=klein href=\"$_link&ra=$newrange\">></a>" : ">>";
$tab_index .= "</td><td width=20px $t_style bgcolor=$fa align='center'>";
$tab_index .= $newrange < $_amount_query ? "<a class=klein href=\"$_link&ra=".($ende."0")."\">>|
</a>" : ">|";
$tab_index .= "</td><td $t_style align='center'> <!--Einträge--> ";
$tab_index .= $_amount_query == 0 ? "<nobr>Keine $bezeich vorhanden!</nobr>" : "<nobr>$bezeich ".($v+1)." bis
".( ($v+$blaettern) > $_amount_query ? "$_amount_query" : ($v+$blaettern) )." von $_amount_query </nobr></td>";
if ($_amount){
$vr = int ($v / $blaetter_lang) unless $_range==0;
$vr = $vr * $blaetter_lang;
$tab_index .= "<td width=20px $t_style bgcolor=$fa align='center'><a class=klein href=$_link&ra=".($vr-$blaetter_lang)."><<</a></td>" if ($vr-$blaetter_lang) >= 0;
# . . . . . . . . . . . . . . . . . .
for ($i=$vr;$i<($vr+$blaetter_lang<=$_amount_query?($vr+$blaetter_lang):$_amount_query); $i+=$blaettern){
$tab_index .= ($v==$i ? "<td width=20px $t_style bgcolor=$fs_fg align='center'><b>".($i+1)."</b>" : "<td width=20 $t_style bgcolor=$fs_fgh align='center'><a class=klein href=$_link&ra=$i>".($i+1)."</a>")."</td>";
} # E for
$tab_index .= "<td width=20px $t_style bgcolor=$fa align='center'><a class=klein href=$_link&ra=$i>>></a></td>" if $i<$_amount_query;
}
$tab_index .= "</tr></table>";
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#
$tab_amount =<<EOF;
<div align=$ausricht>
$tab_index
</div>
EOF
$a_debug.= "<b>E sub show_amount</b><br>";
return $tab_amount;
#subende#
} ################################################################
# jetzt ein Hilfkonstrukt, damit das auch mit dem loop funzt (ich nehme kein loop
# get-while_get_next ist viel flexibler und genauso einfach zu verwenden wie das loop
# hab das nicht getestet, hoffe einfach mal, dass es so funzt
get "Bezeichnung=$fbez range=$ra,1","Dienstleistungen", "hilfsget";
# hier jetzt die Sub aufrufen mit den richtigen;-) Parametern
$tab_amount = &show_amount($ra,$ra_l,$_amount,$_amount_query, "Dienstleistungen","","","");
</perl>
<loop code=perl db=Dienstleistung sort=Bezeichnung range=$ra,$ra_l>
get "Bezeichnung~=$fbez range=$ra,$ra_l","Dienstleistungen", "holdienstleistungen";
# hier jetzt die Sub aufrufen mit den richtigen;-) Parametern weil eben die richtige DB aufgerufen wurde
# aber nur, wenn mehr Datensätze vorh. sind, als max. pro Seite ausgegeben werden (sieht schöner aus)
if ($_amount_query > $ra_l){
$tab_amount = &show_amount($_range,$_range_length,$_amount,$_amount_query, "Dienstleistungen","&fbez=$fbez","","");
} # E if
while(get_next("holdienstleistungen"){
out<<EOF;
...deine Ausgabetabelle bauen...