• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Paging: ersten X Seite + letzten X seite

Status
Für weitere Antworten geschlossen.

Sn0opy

Neues Mitglied
Hiho,

um nicht alle X Beiträge auf einer Seite zu haben setzt man eben Seitenzahlen. Damit hab ich regulär keine Probleme. Nun tritt aber langsam das Problem auf einer Seite auf, dass die Seitenzahlen sich häufe. Es sind bereits 15 Seiten und bin schon über die Hälfte der Contents hinaus.

Aus diesem Grund würde ich nun gerne die Seiten wie folgt aussehen lassen:

1, 2, 3, ... 13, 14, 15

Natürlich soll das auf Seite 7 wie folgt aussehen:

5, 6, 7, ... 13, 14 ,15

Nun fehlt mir eifach komplett der Ansat, wie ich das machen kann. Jemand von euch ne Idee oder gar fertigen Code?
 
Werbung:
PHP:
function create_site_linkbar($baselink,$sites,$z=1)
{
    $show_pages = "";
    if($sites <= 6)
    {
        for($i = 1;$i<= $sites; $i++)
        {
            if($i != $z) $show_pages .= "&nbsp;<a href='$baselink&z=$i$MYSID2'>$i</a>";
            else $show_pages .= "&nbsp;$i";
        }
        $show_pages = "[".$show_pages."&nbsp;]";
    }

    else
    {
        $praefix = "<a href='$baselink&z=".($sites-5)."$MYSID2'>".($sites-5)."</a>&nbsp<a href='$baselink&z=".($sites-4)."$MYSID2'>".($sites-4)."</a>&nbsp<a href='$baselink&z=".($sites-3)."$MYSID2'>".($sites-3)."</a>&nbsp;";
        $anhang = "<a href='$baselink&z=".($sites-2)."$MYSID2'>".($sites-2)."</a>&nbsp<a href='$baselink&z=".($sites-1)."$MYSID2'>".($sites-1)."</a>&nbsp<a href='$baselink&z=$sites$MYSID2'>$sites</a>&nbsp";
        if($z == 1) $show_pages = "&nbsp;1&nbsp;<a href='$baselink&z=2$MYSID2'>2</a>&nbsp;<a href='$baselink&z=3$MYSID2'>3</a>"."...".$anhang;
        else
        {
            if(($z + 3) <= $sites)
            {
                for($i = $z-1;$i<= ($z+1); $i++)
                {
                    if($i != $z) $show_pages .= "&nbsp;<a href='$baselink&z=$i$MYSID2'>$i</a>";
                    else $show_pages .= "&nbsp;$i";
                }
                $show_pages .= "...".$anhang;
            }

            else
            {
                for($i = ($sites-2);$i<= $sites; $i++)
                {
                    if($i != $z) $show_pages .= "&nbsp;<a href='$baselink&z=$i$MYSID2'>$i</a>";
                    else $show_pages .= "&nbsp;$i";
                }
                $show_pages = "&nbsp;".$praefix."...".$show_pages;
            }
        }
        $show_pages = "[".$show_pages."]";
    }
    return $show_pages;
}
der aufruf passiert dann so:
PHP:
$show_pages = create_site_linkbar("index.php?faction=irgendwas&mode=nochwas&id1=$id1",$seiten_anzahl,$z);
$show_pages kann dann an beliebiger stelle per echo ausgegeben werden.

$seiten_anzahl = anzahl an gesamtseiten.
$z = die seite, die angesprungen werden soll, wenn nix da ist, wird auf seite 1 gestartet.

der code ist schon älter aus meinen anfangstagen, könnte daher etwas umständlich sein, aber er funktioniert.

ps.
PHP:
function create_site_linkbar($baselink,$sites,$z)
{

    if($sites == 1 || $sites == 0) $show_pages = "";
    elseif($z == 1 && $sites == 2) $show_pages = "&nbsp;&nbsp;Seiten (".$sites.")&nbsp;&nbsp;[&nbsp;&#171&nbsp;‹&nbsp;&nbsp;1&nbsp;<a href='$baselink&amp;z=2$MYSID2'>2</a>&nbsp;&nbsp;<a href='$baselink&amp;z=2$MYSID2'>›</a>&nbsp;<a href='$baselink&amp;z=2$MYSID2'>»</a>&nbsp;]";
    elseif($z == 1 && $sites > 4) $show_pages = "&nbsp;&nbsp;Seiten (".$sites.")&nbsp;&nbsp;[&nbsp;&#171&nbsp;‹&nbsp;&nbsp;1&nbsp;<a href='$baselink&amp;z=2$MYSID2'>2</a>&nbsp;<a href='$baselink&amp;z=3$MYSID2'>3</a>&nbsp;&nbsp;<a href='$baselink&amp;z=2$MYSID2'>›</a>&nbsp;<a href='$baselink&amp;z=$sites$MYSID2'>»</a>&nbsp;]";
    elseif($z == 1 && $sites < 4) $show_pages = "&nbsp;&nbsp;Seiten (".$sites.")&nbsp;&nbsp;[&nbsp;&#171&nbsp;‹&nbsp;&nbsp;1&nbsp;<a href='$baselink&amp;z=2$MYSID2'>2</a>&nbsp;<a href='$baselink&amp;z=3$MYSID2'>3</a>&nbsp;&nbsp;<a href='$baselink&amp;z=2$MYSID2'>›</a>&nbsp;<a href='$baselink&amp;z=$sites$MYSID2'>»</a>&nbsp;]";
    elseif($z == 1 && $sites == 4) $show_pages = "&nbsp;&nbsp;Seiten (".$sites.")&nbsp;&nbsp;[&nbsp;&#171&nbsp;‹&nbsp;&nbsp;1&nbsp;<a href='$baselink&amp;z=2$MYSID2'>2</a>&nbsp;<a href='$baselink&amp;z=3$MYSID2'>3</a>&nbsp;&nbsp;<a href='$baselink&amp;z=2$MYSID2'>›</a>&nbsp;<a href='$baselink&amp;z=$sites$MYSID2'>»</a>&nbsp;]";
    elseif($z == $sites)
    {
        $new_number_back1 = $z - 1;
        $new_number_back2 = $z - 2;
        if($sites >= 3) $show_pages = "&nbsp;&nbsp;Seiten(".$sites.")&nbsp;&nbsp;[&nbsp;<a href='$baselink&amp;z=1$MYSID2'>&#171</a>&nbsp;<a href='$baselink&amp;z=$new_number_back1$MYSID2'>‹</a>&nbsp;&nbsp;<a href='$baselink&amp;z=$new_number_back2$MYSID2'>$new_number_back2</a>&nbsp;<a href='$baselink&amp;z=$new_number_back1$MYSID2'>$new_number_back1</a>&nbsp;$z&nbsp;&nbsp;›&nbsp;»&nbsp;]";
        else $show_pages = "&nbsp;&nbsp;Seiten (".$sites.")&nbsp;&nbsp;[&nbsp;<a href='$baselink&amp;z=1$MYSID2'>&#171</a>&nbsp;<a href='$baselink&amp;z=$new_number_back1$MYSID2'>‹</a>&nbsp;&nbsp;<a href='$baselink&amp;z=$new_number_back1$MYSID2'>$new_number_back1</a>&nbsp;$z&nbsp;&nbsp;›&nbsp;»&nbsp;]";
    }
    else
    {
        $new_number_back1 = $z - 1;
        $new_number_forward = $z + 1;
        $show_pages = "&nbsp;&nbsp;Seiten (".$sites.")&nbsp;&nbsp;[&nbsp;<a href='$baselink&amp;z=1$MYSID2'>&#171</a>&nbsp;<a href='$baselink&amp;z=$new_number_back1$MYSID2'>‹</a>&nbsp;&nbsp;<a href='$baselink&amp;z=$new_number_back1$MYSID2'>$new_number_back1</a>&nbsp;$z&nbsp;<a href='$baselink&amp;z=$new_number_forward$MYSID2'>$new_number_forward</a>&nbsp;&nbsp;<a href='$baselink&amp;z=$new_number_forward$MYSID2'>›&nbsp;<a href='$baselink&amp;z=$sites$MYSID2'>»</a>&nbsp;]";
    }
    return $show_pages;
}
gleicher aufruf, produziert nur eine ausgabe
Seiten (11) [ « ‹ 1 2 3 › » ]
 
Zuletzt bearbeitet von einem Moderator:
Status
Für weitere Antworten geschlossen.
Zurück
Oben