Guten Abend,
ich habe zurzeit ein kleines Problem mit meiner Pagination (meine home.php):
Das Problem an diesem Script ist folgendes:
Wenn ich den GET-Parameter id anhänge und beispielsweise 2 als Wert übergebe (index.php?page=home&id=2), dann werden mir nur die ersten beiden Einträge aus meiner Tabelle ausgegeben. Normalerweise müssten dann doch die Einträge 3-4 ausgelesen werden (die auch in der Tabelle existieren), oder?
Könnte jemand so nett sein, und mein Script korrigieren?
ich habe zurzeit ein kleines Problem mit meiner Pagination (meine home.php):
PHP:
<?php require_once('include/config.inc.php'); ?>
<!DOCTYPE html>
<html>
<head>
<?php require_once('include/header.inc.php'); ?>
<title>Manu@web - Startseite</title>
</head>
<body>
<div id='header'>Manu@web</div>
<div id='slogan'>just a guy like you...</div>
<div class='navi'><?php require_once('include/menu.inc.php'); ?></div>
<div id='content'>
<h2>Startseite</h2>
<hr size='1px' color='#FFFFFF'>
<?php
$sql = 'SELECT id, timestamp, title, entry FROM mw_news ORDER BY id DESC';
$query = mysql_query($sql) OR die(mysql_error());
$rows = mysql_num_rows($query);
$numrows = $rows[0];
$rowsperpage = 2;
$totalpages = ceil($numrows / $rowsperpage);
if (isset($_GET['id']) && is_numeric($_GET['id'])) {
$currentpage = (int) $_GET['id'];
}
else {
$currentpage = 1;
}
if ($currentpage > $totalpages) {
$currentpage = $totalpages;
}
if ($currentpage < 1) {
$currentpage = 1;
}
$offset = ($currentpage - 1) * $rowsperpage;
$sql = "SELECT id, timestamp, title, entry FROM mw_news ORDER BY id DESC LIMIT $offset, $rowsperpage";
$query = mysql_query($sql) OR die(mysql_error());
if ($rows == 0) {
echo 'Es sind keine Einträge vorhanden!<br><br>';
}
else {
while ($row = mysql_fetch_object($query)) {
$entry = nl2br($row->entry);
$timestamp = $row->timestamp;
$hour = date('H', $timestamp);
$minute = date('i', $timestamp);
$second = date('s', $timestamp);
$month = date('m', $timestamp);
$day = date('d', $timestamp);
$year = date('Y', $timestamp);
$date = date('d.m.Y', $timestamp);
$time = date('H:i', $timestamp);
$mydate = mktime($hour, $minute, $second, $month, $day, $year);
$weekday = date('w', $mydate);
$weekdays = array('Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag');
$weekdayname = $weekdays[$weekday];
echo '<div class=\'newsbox\'><b>'.$row->title.'</b><div style=\'float:right;\'>'.$weekdayname.', der '.$date.' um '.$time.' Uhr</div><hr><br>'.$entry.'<br><br></div>';
}
$range = 3;
if ($currentpage > 1) {
echo '<a href=\'index.php?page=home&id=1\'><<</a>';
$prevpage = $currentpage - 1;
echo '<a href=\'index.php?page=home&id='.$prevpage.'\'><</a>';
}
for ($i = ($currentpage - $range); $i < (($currentpage + $range) + 1); $i++) {
if (($i > 0) && ($i <= $totalpages)) {
if ($i == $currentpage) {
echo '[<b>$i</b>]';
}
else {
echo '<a href=\'index.php?page=home&id='.$i.'\'>$i</a>';
}
}
}
if ($currentpage != $totalpages) {
$nextpage = $currentpage + 1;
echo '<a href=\'index.php?page=home&id='.$nextpage.'\'>></a>';
echo '<a href=\'index.php?page=home&id='.$totalpages.'\'>>></a>';
}
}
?>
<hr size='1px' color='#FFFFFF'>
<?php require_once('include/footer.inc.php'); ?>
</div>
</body>
</html>
Wenn ich den GET-Parameter id anhänge und beispielsweise 2 als Wert übergebe (index.php?page=home&id=2), dann werden mir nur die ersten beiden Einträge aus meiner Tabelle ausgegeben. Normalerweise müssten dann doch die Einträge 3-4 ausgelesen werden (die auch in der Tabelle existieren), oder?
Könnte jemand so nett sein, und mein Script korrigieren?