Nadine Mauch: Seiten blättern

Hallo,

ich habe ein Script welches die Seiten weiterblättert. Jetzt ist mein Problem wenn ich mehr als 50 Seiten haben möchte ich nicht alle 50 Seiten in der Blätter-Anzeige sehen, sondern irgendwann bei Seite 3 ... oder so stehen haben und bei den letzten 3 Seiten wieder die Seiten Zahlen. Ich weiß einfach nicht wie ich es machen soll´, bzw heute ist glaub nicht mein Tag :-(

Weiß jemand wie ich es anpacken muß?

Vielen Danke!

So sieht mein bisheriger Code aus:

################## Seiten blättern
   if($next > 0)
    {
    $back=$next-$zeilen_pro_seite;
    if($back < 0)
   {
      $back = 0;
     }
    echo '<a href="ausgabe4.php?next='.$back.'">[<< zur&uuml;ck]</a>&nbsp;';
  }

if($anzahl>$zeilen_pro_seite)
  {
  $Seiten=intval($anzahl/$zeilen_pro_seite);
  if($anzahl%$zeilen_pro_seite)
   {
   $Seiten++;
   }
  }

for ($zahl=1;$zahl<=$Seiten;$zahl++)
  {
    $fwd=($zahl-1)*$zeilen_pro_seite;
    echo '<a href="ausgabe4.php?next='.$fwd.'">'.$zahl.'</a>&nbsp;';
  }

if($next < $anzahl-$zeilen_pro_seite)
  {
    $fwd=$next+$zeilen_pro_seite;
    echo '<a href="ausgabe4.php?next='.$fwd.'">Weitere Beiträge >></a>&nbsp;';
    $fwd=$anzahl-$zeilen_pro_seite;
  }
    #################  Seiten blättern - end script

  1. Hi,

    ermittel die maximale Anzahl von Seiten, schreib die in ein array, sortier das, gib die ersten 3 und die letzten 3 werte aus, verseh die mit nem link (wie du das ja schon tust) und fast fertig. Reicht das als Hirnspritze?

    Grüße
    Sinepp

  2. Jetzt ist mein Problem wenn ich mehr als 50 Seiten haben möchte ich nicht alle 50 Seiten in der Blätter-Anzeige sehen, sondern irgendwann bei Seite 3 ... oder so stehen haben und bei den letzten 3 Seiten wieder die Seiten Zahlen.

    Erst eine for-Schleife mit den Seiten 1 bis 3, dann eine for-Schleife von Seite $max-3 bis $max ($max = Nummer der letzten Seite = Anzahl Seiten, wenn erste Seite = 1). Beachten musst Du den Fall, in dem $max < 2 * $grenze, denn dann überschneiden sich die beiden Schleifen, bei $max = 4 wäre die Ausgabe "1 2 3 2 3 4". Deshalb die if-Abfrage und in der zweiten Schleife der darauf zurückgreifende Vergleich $grenze != $max.

    $max = 50;
    $grenze = 3;

    if ($max < 2 * $grenze ) {
      $grenze = $max;
    }

    for ($i = 1; ($i <= $grenze); $i++) {
      echo "rhabarber" . $i;
    }

    for ($i = $max - $grenze + 1; ($i <= $max) && ($grenze != $max); $i++) {
      echo "mehr rhabarber" . $i;
    }

    Vielen Danke!

    Viele Bitte. Code nicht getestet, Fehler darfst Du selbst beheben.

    1. Erst eine for-Schleife mit den Seiten 1 bis 3, dann eine for-Schleife von Seite $max-3 bis $max ($max = Nummer der letzten Seite = Anzahl Seiten, wenn erste Seite = 1). Beachten musst Du den Fall, in dem $max < 2 * $grenze, denn dann überschneiden sich die beiden Schleifen, bei $max = 4 wäre die Ausgabe "1 2 3 2 3 4". Deshalb die if-Abfrage und in der zweiten Schleife der darauf zurückgreifende Vergleich $grenze != $max.

      $max = 50;
      $grenze = 3;

      if ($max < 2 * $grenze ) {
        $grenze = $max;
      }

      for ($i = 1; ($i <= $grenze); $i++) {
        echo "rhabarber" . $i;
      }

      for ($i = $max - $grenze + 1; ($i <= $max) && ($grenze != $max); $i++) {
        echo "mehr rhabarber" . $i;
      }

      Vielen Danke!

      Hallo!

      das funktioniert nun soweit :-) !!!

      So sieht nun mein Code aus:

      ################## Seiten blättern
         if($next > 0)
          {
          $back=$next-$zeilen_pro_seite;
          if($back < 0)
         {
            $back = 0;
           }
          echo '<a href="ausgabe4.php?next='.$back.'">[<< zur&uuml;ck]</a>&nbsp;';
        }

      if($anzahl>$zeilen_pro_seite)
        {
        $Seiten=intval($anzahl/$zeilen_pro_seite);
        if($anzahl%$zeilen_pro_seite)
         {
         $Seiten++;
         }
        }

      $max = $Seiten;
        $grenze = 3;

      if ($max < 2 * $grenze ) {
          $grenze = $max;
        }

      for ($i = 1; ($i <= $grenze); $i++) {
          $fwd=($i-1)*$zeilen_pro_seite;
             echo '<a href="ausgabe4.php?next='.$fwd.'">'.$i.'</a>&nbsp;';
        }

      for ($i = $max - $grenze + 1; ($i <= $max) && ($grenze != $max); $i++) {
          if ($max != $grenze):
           echo " ...  ";
         break;
          endif;
        }

      for ($i = $max - $grenze + 1; ($i <= $max) && ($grenze != $max); $i++) {
          $fwd=($i-1)*$zeilen_pro_seite;
             echo '<a href="ausgabe4.php?next='.$fwd.'">'.$i.'</a>&nbsp;';
        }

      if($next < $anzahl-$zeilen_pro_seite)
        {
          $fwd=$next+$zeilen_pro_seite;
          echo '<a href="ausgabe4.php?next='.$fwd.'">Weitere Beiträge >></a>&nbsp;';
          $fwd=$anzahl-$zeilen_pro_seite;
        }
          #################  Seiten blättern - end script

      Die Ausgabe sieht so aus:
      [<< zurück] 1 2 3  ... 7 8 9 Weitere Beiträge >>

      Jetzt ist nur das Problem wenn ich auf Seite 6 bin sieht der User ja nicht auf welcher Seite er gerade ist...?

      Bei google sieht das ja etwas anders aus und zwar so:
      [<< zurück] 6 7 8 9 Weitere Beiträge >>

      Nur wie soll das gehen? Ich muß irgendwie die aktuelle Position mit übermitteln. Was ich übermittelt bekomme ist $next nur kann sich diese wiederum ändern wenn ich für die Ausgabe meines Contents $zeilen_pro_seite erhöhe.

      ausgabe4.php?next='.$fwd.' (Das wird für meine Datenbankabfrage benötigt)
      [...] LIMIT $next, $zeilen_pro_seite [...]

      1. Die Ausgabe sieht so aus:
        [<< zurück] 1 2 3  ... 7 8 9 Weitere Beiträge >>

        Jetzt ist nur das Problem wenn ich auf Seite 6 bin sieht der User ja nicht auf welcher Seite er gerade ist...?

        War das eine Frage?

        Bei google sieht das ja etwas anders aus und zwar so:
        [<< zurück] 6 7 8 9 Weitere Beiträge >>

        Nur wie soll das gehen?

        Ich bin mir sicher, dass Du eine einfache Schleife, die von $aktuell-$grenze bis $aktuell+$grenze zählt, alleine hinbekommst.

        Ich muß irgendwie die aktuelle Position mit übermitteln.

        Es ist von entscheidendem Vorteil, wenn man Seite X ausgeben will und weiß, dass man gerade Seite X ausgibt.

        Vielleicht schläfst Du nochmal eine Nacht drüber.

        1. Bei google sieht das ja etwas anders aus und zwar so:
          [<< zurück] 6 7 8 9 Weitere Beiträge >>

          Nur wie soll das gehen?

          Ich bin mir sicher, dass Du eine einfache Schleife, die von $aktuell-$grenze bis $aktuell+$grenze zählt, alleine hinbekommst.

          Wieso Schleife ich muß doch die Postion weiter geben und alles um 3 verschieben.

          Da ist mit einer Schleife auch nicht geholfen.

          1. hi,

            Wieso Schleife ich muß doch die Postion weiter geben

            gut. wo und wie hast du dies bisher gemacht/versucht?

            und alles um 3 verschieben.
            Da ist mit einer Schleife auch nicht geholfen.

            _dabei_ hilft dir eine schleife durchaus, wenn du nicht von hand rechnen willst.

            gruß,
            wahsaga

            --
            "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
  3. Hello,

    die  Funktionen hatte ich zwar hier schonmal mit jemand zusammen entwickelt und die stehen auch im Archiv, aber ich poste sie deshalb auch nicht nochmal ;-))

    Such döch mal unter "Blättern" Dafindest Du eine Funktion 'make_buttons()' mit der Du sicher glücklich wirst.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau