Tolwin: Blätterfunktion mit einem Array

Beitrag lesen

Habe das Skript etwas umgebaut (hatte es vorher so gehabt)

$counting = 0;
$array_result = array();
if($cat_select != 0)
{
 foreach($result_array as $db_key => $result)
 {

$datei = "/data/www/pvk/docs/admin/aw/newstool/suche/newsfsuche/".$result->news_nummer.".php";
     $result_array[$db_key]->path = $kategorien[$result->category_id]['path'];
     $result_array[$db_key]->sort = $kategorien[$result->category_id]['sort'];
  if((integer)$result_array[$db_key]->sort == (integer)$cat_select)
  {
   $counting++;
   array_push($array_result, $result_array[$db_key]);
  }
 }
 $anz = $counting;

if($offset  >= $anz-$step)
    {
     $offset = $anz - $step;
     $diff   = $anz % $diff;
     $disabled[next] = TRUE;
    }
    if (!$offset || $offset<0)
    {
     $offset = 0;
     $disabled[prev] = TRUE;
    }
    echo "OFFSET = $offset .... DIFF = $diff";
    for($i = $offset; $i <= $diff; $i++)
 {
  echo  "<tr><td valign="top" width="60" style="font-size:11px;font_weight:bold;background-color:#FFFFFF"><b>"  .$array_result[$i]->date_german.  "</b></td>";
     echo  "<td valign="top" width="500" style="font-size:11px;lighter:lighter;background-color:#FFFFFF;color:#000000;vertical-align:middle;height:18px;">"  .$array_result[$i]->path. "</td></tr>";
     echo  "<tr><td></td><td valign="top" style="font-size:11px;background-color:#FFFFFF;color:#000000;"><a href="http://"  .$server.  "/admin/aw/newstool/suche/newsfsuche/"  .basename($datei).  "" target="_new">"  .$array_result[$i]->titel.  "</a></td>";
  echo  "<tr><td colspan="3"><hr color="#000000" size="1"></td></tr>";

}
if ($disabled[prev]!==TRUE) echo '<a href="'.$PHP_SELF.'?offset='.($offset-$step).'&cat_select='.$cat_select.'">Vorherige Seite << </a>';
for ($i=1;$i<=($anz/$step);$i++) echo '<a href="'.$PHP_SELF.'?offset='.($i*$step).'&cat_select='.$cat_select.'"> '.$i.'</a>';
if ($disabled[next]!==TRUE) echo '<a href="'.$PHP_SELF.'?offset='.($offset+$step).'&cat_select='.$cat_select.'"> >> N&auml;chste Seite</a>';

echo "gezaehlt wurden $counting!";
}
else
{
 foreach($result_array as $db_key => $result)
 {
  $datei = "/data/www/newsfsuche/".$result->news_nummer.".php";
     $result_array[$db_key]->path = $kategorien[$result->category_id]['path'];
     $result_array[$db_key]->sort = $kategorien[$result->category_id]['sort'];
        if($cat_select == 0 || !isset($cat_select))
  {
   $counting++;
   array_push($array_result, $result_array[$db_key]);
  }
 }
 for($i = 0; $i < $counting; $i++)
 {
  echo  "<tr><td valign="top" width="60" style="font-size:11px;font_weight:bold;background-color:#FFFFFF"><b>"  .$array_result[$i]->date_german.  "</b></td>";
     echo  "<td valign="top" width="500" style="font-size:11px;lighter:lighter;background-color:#FFFFFF;color:#000000;vertical-align:middle;height:18px;">"  .$array_result[$i]->path. "</td></tr>";
     echo  "<tr><td></td><td valign="top" style="font-size:11px;background-color:#FFFFFF;color:#000000;"><a href="http://"  .$server.  "/admin/aw/newstool/suche/newsfsuche/"  .basename($datei).  "" target="_new">"  .$array_result[$i]->titel.  "</a></td>";
  echo  "<tr><td colspan="3"><hr color="#000000" size="1"></td></tr>";

}
echo "gezaehlt wurden $counting!";

echo "</table>";
}
?>

Wenn ich nun bspw. die Kategorie 1 aufrufe (kategorie 0 ist Alle Anzeigen), zeigt er mir richtiger Weise die ersten 10 Einträge (Kategorie 1 hat 27) an. Der Offset ist 0 und DIFF = 10. Dies sollte dann die erste Seite sein. Allerdings sehe ich wenn ich mir den Link der 1. Seite anzeigen lasse die Parameter Offset = 10&cat_select=1 .
Dies sollte aber den Offset 0 anzeigen. Der Link zur 2. Seite zeigt Offset=20&cat_select=1 . Wenn ich diesen anklicke, erhalte ich aus dem debugging OFFSET = 17 DIFF = 7 .
Mir ist nicht ganz klar was ich da falsch mache.

Grüße
Tolwin