Brauche Hilfe bei Blätterfunktion

Mew

Erfahrenes Mitglied
Hallo Leute,

ich habe vor einiger Zeit eine Blätterfunktion gesucht. Das hat ja alles auch gut geklappt. Nun habe ich aber ein fertiges Newsscript, das eine Blätterfunktion bekommen soll.
Ich habe es einfach nicht hinbekommen in das Script die Funktion einzubauen.

Das Script:

PHP:
<?php
	
   $res = mysql_db_query("table", "select * from news");  
   $num = mysql_num_rows($res);   
 
   for ($i=0; $i<$num; $i++) 
   { 
      $id = mysql_result($res, $i, "ID"); 
      $ti = parse(mysql_result($res, $i, "Titel")); 
      $in = parse(mysql_result($res, $i, "Inhalt")); 
      $da = datum(mysql_result($res, $i, "Datum")); 
      $au = parse(mysql_result($res, $i, "Autor")); 
	  
    echo "<table id=\"news\" cellpadding=\"0\" cellspacing=\"0\"> 
          <tr> 
            <td id=\"titel\">".$ti."</td> 
          </tr> 
        <tr> 
      <td id=\"new\">".$in."</td> 
    </tr> 
    <tr> 
      <td id=\"footer\">Nr. ".$id." | ".$da." | Autor: <a href=\"profile.php?id=".$id."\">".$au."</a> 
      </td> 
    </tr> 
  </table>"; 
   }

?>

Es hat eine for Schleife wo neue News immer dazu angezeit werden.

Jetzt kommt mein Problem, wie mach ich es, dass z.B. auf die erste Seite nur die neusten 5 news angezeigt werden und dann auf der nächsten die etwas älteren 5 news....
Also dass immer nur jeweils 5 news auf der seite zu finden sind?

Wie macht man das am Besten.

Hier mein paging Script:

PHP:
<?php
include 'inc/config.php';

// how many rows to show per page
$rowsPerPage = 4;

// by default we show first page
$pageNum = 1;

// if $_GET['page'] defined, use it as page number
if(isset($_GET['page']))
{
	$pageNum = $_GET['page'];
}

// counting the offset
$offset = ($pageNum - 1) * $rowsPerPage;

$query  = "SELECT * FROM news LIMIT $offset, $rowsPerPage";
$result = mysql_query($query) or die('Error, query failed');

// print the random numbers
while($row = mysql_fetch_array($result))
{
	echo $row['val'] . '<br>';
}
echo '<br>';

// how many rows we have in database
$query   = "SELECT COUNT(*) AS numrows FROM news";
$result  = mysql_query($query) or die('Error2, query failed');
$row     = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];

// how many pages we have when using paging?
$maxPage = ceil($numrows/$rowsPerPage);

// print the link to access each page
$self = $_SERVER['PHP_SELF'];
$nav = '';
for($page = 1; $page <= $maxPage; $page++)
{
	if ($page == $pageNum)
	{
		$nav .= " $page ";   // now need to create a link to current page
	}
	else
	{
		$nav .= " <a href=\"$self?page=$page\">$page</a> ";
	}		
}

// creating previous and next link
// plus the link to go straight to
// the first and last page

if ($pageNum > 1)
{
	$page = $pageNum - 1;
	$prev = " <a href=\"$self?page=$page\">[Prev]</a> ";
	
	$first = " <a href=\"$self?page=1\">[First Page]</a> ";
} 
else
{
	$prev  = '&nbsp;'; // we're on page one, don't print previous link
	$first = '&nbsp;'; // nor the first page link
}

if ($pageNum < $maxPage)
{
	$page = $pageNum + 1;
	$next = " <a href=\"$self?page=$page\">[Next]</a> ";
	
	$last = " <a href=\"$self?page=$maxPage\">[Last Page]</a> ";
} 
else
{
	$next = '&nbsp;'; // we're on the last page, don't print next link
	$last = '&nbsp;'; // nor the last page link
}


// print the navigation link
echo $first . $prev . $nav . $next . $last;

?>

Hoffe mir kann jemand helfen. MFG
 
Hi

Ich mache das immer so, dass ich in der SQL-Abfrage der News ein LIMIT einbaue welches undgefär so aussieht:

Code:
"SELECT * FROM NEWS ORDER BY `id` DESC LIMIT ".$anzahl.", 5;"

Nun musst du vor der Afrage die momentane Seitenzahl, welche ich immer per URL übergebe mal 5 und -5 rechnen, so erhälst du $anzahl.

Die Links der Seitenzahlen generierst du ganz einfach in einer Schlaufe in dem du die Anzahl Einträge zählst und sie durch 5 rechnest. Es muss natürlich richtig gerundet werden, sonst erhälst du zu viele oder zu wenige Seiten.

Das zusammenbasteln von mehreren Scripten finde ich eigentlich fast schwieriger, aber du solltest das mit dem LIMIT auch in dein Script einbauen können.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Mew
Zurück