Paging

Ett skript som delar upp data från en databas på flera sidor, även kallat för paging.

Ladda hem Ladda hem Paging [72]

Nästa 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'] : ;
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;
?>

Peter

 

Gravatar tack för det superbra pagingscriptet. kommer komma väl til pass!

Lämna en kommentar du också




http://


Sifferkod