Paging
Ett skript som delar upp data från en databas på flera sidor, även kallat för paging.
Ladda hem Paging [72]
Nästa: Dirlist
<?php
// Vi startar med att ange lite variablar
$db_host = "localhost"; // Server till MySQL
$db_user = "username"; // Användarnamn för att logga in på MySQL
$db_pass = "password"; // Lösenord för att logga in på MySQL
$db = "min_databas"; // Namnet på databasen
$table = "min_tabell"; // Tabellnamnet i databasen
$antalSida = 5; // Antal rader per sida
$visaAntal = 3; // Antalet sidlänkar som ska visas i taget
// Först måste vi koppla upp mot MySQL
$con = @mysql_connect($db_host, $db_user, $db_pass)
or die('<b>Error connecting to DB "'.$db_host.'"</b><br />'.mysql_error());
// Sedan bestämmer vi vilken databas vi ska använda
$db = @mysql_select_db($db)
or die('<b>Error selecting DB "'.$db.'"</b><br />'.mysql_error());
// Nu kollar vi upp totala antalet
$number_sql = @mysql_query("SELECT * FROM ".$table)
or die('<b>Error selecting all from '.$table.'</b><br />'.mysql_error());
$antal = @mysql_num_rows($number_sql)
or die('<b>Error fetching numbers of rows<br /></b>'.mysql_error());
// Ok, hur många sidor blev det?
$pageNumbers = ceil($antal/$antalSida);
// Kontrollera värdet på $page (sidnummer)
$page = (isset($_GET['page']) ) ? $_GET['page'] : 1 ;
if ($page > $pageNumbers) $page = $pageNumbers;
if ($page < 1) $page = 1;
// Beräkna startraden
$start = ($page-1) * $antalSida;
// Om antalet sidor är större än antalet sidlänkar, beräkna startlänk
if ($pageNumbers > $visaAntal){
$startLink = $page - floor($visaAntal / 2);
if ($startLink >($pageNumbers - $visaAntal + 1))
$startLink = $pageNumbers - $visaAntal + 1;
} else
$startLink = 1;
if ($startLink < 1) $startLink = 1;
// Beräkna sista sidlänk
$stopLink = $startLink + $visaAntal - 1;
if ($stopLink > $pageNumbers)
$stopLink = $pageNumbers;
$pageLinks = ''; // Initierar variabeln $pageLinks
// Hämta länk till förstasidan och föregående sida
if ($page > 1) {
$pageLinks .= ' <a href="?page=1">««</a>';
$pageLinks .= ' <a href="?page='.($page-1).'">«</a>';
} else {
$pageLinks .= ' ««';
$pageLinks .= ' «';
}
// Om första sidlänken inte är lika med första sidan visa '...'
$pageLinks .= ($startLink > 1) ? ' ...' : ' ';
// Nu, äntligen, kan vi hämta sidonummer
for ($i = $startLink; $i <= $stopLink; $i++){
// Så länge det inte är aktuell sida, länka
$pageLinks .= ($i == $page) ? ' [<b>'.$i.'</b>]' : ' <a href="?page='.$i.'">'.$i.'</a>';
}
// Fler sidor än antalet länkar?
$pageLinks .= ($stopLink < $pageNumbers) ? ' ...' : ' ';
// Hämta länk till nästkommande sida och sista sidan
if($page < $pageNumbers){
$pageLinks .= ' <a href="?page='.($page + 1).'">»</a>';
$pageLinks .= ' <a href="?page='.$pageNumbers.'">»»</a>';
} else {
$pageLinks .= ' »';
$pageLinks .= ' »»';
}
/********************************************************
Då har vi samlat ihop all information för att kunna skriva ut sidnumreringen
********************************************************/
// Om fler än en sida, skriv ut sidnummreringen
if ($antal > $antalSida)
echo $pageLinks.'<br /><br />';
// Hämta från databasen
$sql = 'SELECT * FROM '.$table.' ORDER BY id ASC LIMIT '.$start.', '.$antalSida;
$result = @mysql_query($sql)
or die('<b>Error selecting data from '.$table.'</b><br />'.mysql_error());
while ($data = @mysql_fetch_assoc($result)){
// Här skriver du ut din data som du hämtat från databasen
}
// Vill du skriva ut sidnummreringen här också?
if ($antal > $antalSida)
echo $pageLinks;
?>



- Sitemap
- Blogg
- 2005-2010 |
- Upp