automatischer Seitenumbruch

GoldenEye

Erfahrenes Mitglied
Hi,
ich wollte mal fragen, wie man es realisieren kann, dass bei der Ausgabe von Werten nur eine bestimmte Anzahl angezeigt wird und der Rest auf einer neuen Seite.

z.B. wie bei der Auflistung der Beiträge zu einem Thread. Überschreitet die Anzahl der Beiträge eine gewisse Zahl, werden die restlichen auf einer neuen Seite angezeigt.

Kann mir da jemand weiterhelfen?
Grüße
 
Guck mal ob dein Problem nicht hier drinne erklärt wird:
Wie kann ich die Ausgabe einer Datenbankabfrage auf mehrere Seiten verteilen?
(ohne den Thread gelesen zu haben)

gruß
Mauli

Hi,
danke hat mir schonmal sehr weitergeholfen. Jetzt gibt es aber ein Problem beim Einbinden.
Folgendermaßen sieht das ganze jetzt bei mir aus:

PHP:
$sql2 = "SELECT id,uid,title,text,time,date FROM post WHERE tid='".$_GET['tid']."' ORDER BY id ASC";

#######

function createPages($input = 0, $perpage = 5) {
    global $page, $_SERVER;
    if ($input == 0)
        die("createPages(<b>\$input = $input</b>, \$perpage = $perpage");
    if ($input <= $perpage)
        return "« <b>1</b> »";
    if (!$page || $page < 1) {
        $page = 1;
    }
    $pages = ceil($input / $perpage);
    $html = "";
    if ($page > 1) {
        $html .= "<a href=\"".$_SERVER["PHP_SELF"]."?page=".($page-1)."\">«</a> ";
    } else {
        $html .= "« ";
    }
    for($i = 1; $i <= $pages; $i++) {
        if ($i == $page) {
            $html .= "<b>".$i."</b> ";
        } else {
            $html .= "<a href=\"".$_SERVER["PHP_SELF"]."?page=".$i."\">".$i."</a> ";
        }
    }
    if ($page <= $pages-1) {
        $html .= "<a href=\"".$_SERVER["PHP_SELF"]."?page=".($page+1).">»</a> ";
    } else {
        $html .= "» ";
    }
    return $html;
}

function limitSQL($perpage = 5) {
    global $page;
    if (!$page || $page < 1) {
        $page = 1;
    }
    $min = ($page - 1) * $perpage;
    $max = $min + $perpage;
    $out = array($min,$max);
    return $out;
}

$eintraege = 14;
$perpage = 5;

echo createPages($eintraege,$perpage);
$sql2 = limitSQL($perpage);
echo "<br/><br/><pre>";
print_r($sql2);
echo "</pre>";

#######
    
$result2 = mysql_query($sql2) OR die(mysql_error());


while($row2 = mysql_fetch_assoc($result2)) {
       echo "
<p>
<b>".$row2['title']."</b><br/>
[Verfasst am ".$row2['date']." um ".$row2['time']." von ".$row2['uid']."]<br/>
".$row2['text']."
<p>
";
}
?>

Leider bekomme ich jetzt aber immer die Fehlermeldung:

Array
(
[0] => 0
[1] => 5
)


Notice: Array to string conversion in C:\xampp\htdocs\forum\show_post2.php on line 80
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Array' at line 1

Wenn ich wenigstens wüsste in welcher Richtung ich weiterdenken muss...

(edit: "#######" markiert Anfang und Ende des Scriptes vom Tutorial.)
 
PHP:
$sql2 = limitSQL($perpage);
echo "<br/><br/><pre>";
print_r($sql2);
echo "</pre>";

#######
    
$result2 = mysql_query($sql2) OR die(mysql_error());
Du überschreibst dein $sql2 vom anfang mit einem array und willst dieses array als sql ausführen.....
Da stimmt wohl was nicht ;)
 
Das Prinzip ist ganz einfach. Du brauchst:
- ein Array mit den Daten
- die Anzahl der Beiträge pro Seite
- die momentane Seite

Sagen wir mal, du hast ein Array mit 85 Beiträgen. Die Anzahl der Beiträge pro Seite ist 20, und du bist momentan auf Seite 1.
Dann soll dein PHP Script Beitrag Nummer ($seitenzahl - 1)*$beiträgeproseite bis $seitenzahl*$beiträgeproseite anzeigen, in diesem Fall (1 - 1)*20 = 0 bis 1*20 = 20.
Wenn der Benutzer jetzt auf Seite 4 geht, das gleiche berechnen, dann bekommst du 60 bis 80.
Dann einfach mit einem for-Loop nur die gewünschten Beiträge ausgeben:
for($i = ($seitenzahl - 1)*$beiträgeproseite; $i < $seitenzahl*$beiträgeproseite; $i++)
Und am unteren Ende der Seite Links zu den einzelnen Seiten.

Ich denke mal, mit diesem Denkanstoß kannst du dir das auch einfach selber basteln.
 
Zurück