Her viser jeg hvordan man - ved hjælp af lidt simpelt matematik - kan lave et script til at dele et liste over et-eller-andet op i flere sider, så du i bunden, eller hvor du nu vil, får "Forrige" 1 2 3 4 osv. "Næste", i stedet for en meter lang side..

Jeg vil ikke forklare så meget først, da jeg har skrevet forklaringer hele vejen gennem koden.

Til dette eksempel har jeg oprettet en tabel med navnet alfabet, som indeholder id og bogstav. Du kan hente SQL'en her.

<?php

$pr_side 
"5"//Definerer antal resultater pr. side

mysql_connect("localhost","root");
mysql_select_db("YOURDB");

if (!isset(
$s)) {
    
$s "0"//Tjekker om $s - som står for start - er sat, hvis ikke sættes den
}

echo 
"<table border='1'>\n";
echo 
"<tr><td>Id</td><td>Bogstav</td></tr>\n";

$query mysql_query("select * from alfabetet order by id asc limit $s,$pr_side") or die(mysql_error());

while(
$row mysql_fetch_array($query)){
    echo 
"<tr><td>$row[id]</td><td>$row[bogstav]</td</tr>\n";
}

echo 
"<tr><td colspan='2'>";

$g_total mysql_query("select count(id) as total from alfabetet") or die(mysql_error());
$total mysql_result($g_total,0);

##
#Find ud af om derskal være et Forrige link
##
if ($s >= $pr_side) { //Tjekker om værdien af $s er større eller lig $pr_side
    
$previous_s $s-$pr_side//Regner ud hvor mysql skal starte hvis forrige side kaldes
    
echo "<a href='?s=$previous_s'>Forrige</a> "//Udskriver linket
}

##
#Find ud af hvis/hvor mange sider der er rows til
##
$page 1//Definerer hvor sidetal skal starte
for($start=0$total $start$start=$start+$pr_side){ //For-løkke der kører indtil der ikke er nok rows til en side mere
    
if ($start != $s) { //Tjekker om linket vil komme til at pege på den side man er på
        
echo "<a href='?s=$start'>$page</a> "//...hvis ikke, udskrives link med værdien af $page
    
} else { //Ellers, dvs. hvis linket vil pege på den side man er på..
        
echo "$page "//...udskrives værdien af $page bare, altså ikke som link
    
}
    
$page++; //Lægger en til $page til næste gang løkken køres
}

##
#Find ud af om der skal være et næste link
##
if ($total $s+$pr_side) { //Tjekker om der er flere sider
    
$next_s $s+$pr_side//Regner ud hvor mysql skal starte hvis næste side kaldes
    
echo "<a href='?s=$next_s'>Næste</a>"//Udskriver linket "næste"
}

echo 
"</td></tr>\n";
echo 
"</table>\n";
?>


Håber du fandt artiklen interessant. Mener du der er fejl i artiklen, vil jeg være glad for at høre fra dig.