Seitenzahl in URL mitgeben

Eurocid

Mitglied
Hallo liebe PHP Gemeinde

Habe mal wieder eine kleine Frage, folgendes:

Ich gebe in einer Schleife folgendes aus:

PHP:
echo "<a href='seite.php?page=1#sprungmarke'>text</a>";

Hier wird z.B. ein Inhaltsverzeichnis ausgegeben, jeweils mit einer Sprungmarke hinten dran.
Nun ist es aber so das auf jeder page= immer 5 Einträge sind die ich mit Sprungmarken angeben will.

Beispiel so wären meine URLs richtig:
page=1#Sprungmarke1
page=1#Sprungmarke2
page=1#Sprungmarke3
page=1#Sprungmarke4
page=1#Sprungmarke5
page=2#Sprungmarke6
page=2#Sprungmarke7
usw...

Meine Frage ist, wie kann ich in dieser Schleife nach jeder 5ten Url die page Zahl um eins erhöhen? Und trotzdem die Sprungmarken immer um 1 erhöhen?

Ich dachte an eine zusätzliche FOR Schleife, aber ich komm grad nicht dahinter :(

Grüße Cid
 
Ungetestet, aber so müsste es gehen :)

PHP:
$page=1;
for($i=1;$i<100;$i++) {
if($i%5==0) $page++;
print "Page: $page - Sprungmarke: $i <br>";
}
 
Hi,

oder so:
PHP:
define("MARKEN_PRO_SEITE", 5);

for($i=0; $i<100; $i++) {
  $seite = floor($i / MARKEN_PRO_SEITE) + 1;
  $marke = $i % MARKEN_PRO_SEITE + 1;
  echo "Seite: " . $seite . ", Marke: " . $marke . "<br />";
}

Auch ungetestet ;)

Gruß,
BK
 
Hello Leute

Danke für die schnelle Antwort, so hab ich mir das auch schon gedacht mit der FOR Schleife, doch wo ich hier hänge ist das einbauen in meine schon vorhandene Schleife.

Wenn ich das jetzt so einbaue wie ihr zwei mir das jetzt aufgeschrieben habt, bekomme ich natürlich für jeden durchlauf der darüber liegenden Schleife wieder eine Zeile mehr dazu.

Das sieht dann jetzt so aus:

Jeder Eintrag wird so oft ausgeben wie es Datenbankeinträge gibt.

Die Datenbankeinträge gebe ich mit einer WHILE Schleife aus.

WHILE Schleife
{

Diverse Datenbank ausgaben

FOR Schleife
{
Seiten berechnung
}

noch mehr Datenbank ausgaben

}

Kann ich da meine Datenbankausgabe auch gleich in die FOR Schleife einbauen?

Grüße Cid
 
Zuletzt bearbeitet:
Hi,

klar geht das irgendwie. Aber ohne Code kann ich dir da jetzt nicht weiterhelfen, verstehe nicht so ganz wie deine Schleife funktioniert / welche Daten vorliegen und wie man daraus dann die Seitenzahl und die Sprungmarke berechnen kann.

Eigentlich sollte das so gehen wie ich es oben geschrieben habe. Die Seitenzahl erreichst du mit (<aktueller_eintrag_nr> / 5) und die Sprungmarke mit (<aktueller_eintrag_nr> % 5). Bei beiden halt noch +1, weil du ja nicht bei 0 zu zählen anfängst.

Gruß,
BK
 
Ok hier der Teil mit der Datenbankausgabe:

PHP:
echo "<div style='font-size:16px;'>";
    echo "<table align='center' style='border: 1px;' cellpadding='1' cellspacing='1' summary=''>";

    $sql = "SELECT * FROM logbook";
    $result = mysql_query($sql);
    $eintragsanzahl = mysql_num_rows($result);

    while ($logs = mysql_fetch_array($result))
    {
        /* $page = 1;
        for($i = 1; $i < $eintragsanzahl; $i++)
        {
        if($i % 5 == 0) $page++;
        } */

        echo "<tr>";
            echo "<td width='50'>#&nbsp;$nr</td>";
            echo "<td width='400'><span style='font-size:20px;'>";
                echo "<a href='site_logbook.php?head=LOGBOOK&page=$page#$logs[id]'>$logs[h1]</a></span></td>";
            echo "<td width='50'>$logs[date]</td>";
        echo "</tr>";
    }

    echo "</table>";
    echo "</div>";

Hilft dir das weiter, so dass du mir weiterhelfen kannst :D
 
Zuletzt bearbeitet:
Hi,

aaaaaalso, bei deiner while Schleife kannst du auf eine for Schleife verzichten.

PHP:
    $entry = 1;
    $page = 1;
    while ($logs = mysql_fetch_array($result))
    {
        if ($entry % 5 == 0) {
            $page++;
        }

        echo "<tr>";
            echo "<td width='50'>#&nbsp;$nr</td>";
            echo "<td width='400'><span style='font-size:20px;'>";
                echo "<a href='site_logbook.php?head=LOGBOOK&page=$page#$logs[id]'>$logs[h1]</a></span></td>";
            echo "<td width='50'>$logs[date]</td>";
        echo "</tr>";
        $entry++;
    }

Gruß Kyoya Stefan
 
Zurück