Avatar billede michaeltryl Seniormester
11. september 2008 - 21:15 Der er 3 kommentarer og
1 løsning

paging problem

$items_per_page = 10;
$p = mysql_real_escape_string($_GET['p']);
$page = ( !empty( $p ) && is_numeric( $p ) ? $p : 0 );

$brugerne = mysql_query("SELECT SQL_CALC_FOUND_ROWS bruger_id, brugernavn, billede, IF(DATE_SUB(NOW(),INTERVAL 5 MINUTE) < sidst_aktiv, 'online','offline') as onlineStatus FROM brugere $where ORDER BY $order limit $page, $items_per_page") or die(mysql_error());
while($b = mysql_fetch_array($brugerne))
{
//poster udskrives
}
$g_total = mysql_query("select count(bruger_id) as total from brugere") or die(mysql_error());
$total = mysql_result($g_total,0);
$sql = "SELECT FOUND_ROWS() AS antal";
$qh = mysql_query( $sql );
$row = mysql_fetch_assoc( $qh );
$antal_items = $row['antal'];
$antal_items = 500;

$antal_sider = ceil( $antal_items / $items_per_page );

if ($page >= $items_per_page) {
    $previous_s = $page-$items_per_page;
    echo "<a href='$_SERVER[PHP_SELF]?p=$previous_s'>Forrige</a> ";
}

$pagen = 1;
for($start=0; $antal_items > $start; $start=$start+$items_per_page){

    if ($start != $page) {
        echo "<a href='$_SERVER[PHP_SELF]?p=$start'>$pagen</a> ";
    } else {
        echo "<b>$pagen</b> ";
    }
    $pagen++;
}


if ($antal_items > $page+$items_per_page) {
    $next_s = $items_per_page+$page;
    echo "<a href='$_SERVER[PHP_SELF]?p=$next_s'>Næste</a>";
}

Følgende script udskriver fint paging på siden sådan

1 2 3 .... osv

Jeg vil godt have at den gør sådan at hvis man f.eks. vælger side nr. 16 udskrives kun

Føste Forrige 13 14 15 <b>16</b> 17 18 19 Næste Sidste
ovenstående script er en blanding af to scripts jeg har fundet her på eksperten, men har ikke kunne finde en god måde at lave det andet på så håber der er en som kan hjælpe mig videre.
Avatar billede jakobdo Ekspert
11. september 2008 - 21:31 #1
Dog helt uden tjek, da den kan ende under 0 og over antal items.
Men test lige:

$pagen = 1;
$start_item = $page - ($items_per_page/2);
$end_item  = $page + ($items_per_page/2);

for($start=$start_item; $end_item > $start; $start++){
    if($start == $page){
        echo "<b>$pagen</b> ";
    }else{
        echo "<a href='$_SERVER[PHP_SELF]?p=".$start * $items_per_page)."'>$pagen</a> ";
    }
    $pagen++;
}
Avatar billede michaeltryl Seniormester
11. september 2008 - 22:32 #2
det hjalp mig på vej til en løsning
løsningen blev

$antal_sider = ceil( $antal_items / $items_per_page );
if ($page >= $items_per_page) {
    $previous_s = $page-$items_per_page;
    echo "<a href='$_SERVER[PHP_SELF]?p=$previous_s'>Forrige</a> ";
}

$start_item = ($page/$items_per_page)-3;
if($start_item < 1)
{
    $start_item = 1;
}
$end_item = ($page/$items_per_page) + 6    ;
if($antal_items <= $end_item * $items_per_page)
{
$end_item = ($antal_items/$items_per_page)+1;
}
$pagen = $start_item;
for($start=$start_item; $end_item > $start; $start++){
    if ($start == ($page/$items_per_page)+1) {
echo "<b>$pagen</b> ";
}else{
    $ny_p = ($pagen * $items_per_page) - $items_per_page;
        echo "<a href='$_SERVER[PHP_SELF]?p=$ny_p'>$pagen</a> ";
    }
    $pagen++;
}


if ($antal_items >= $page+$items_per_page) {
    $next_s = $items_per_page+$page;
    echo "<a href='$_SERVER[PHP_SELF]?p=$next_s'>Næste</a>";
}

Hvis du smider et svar så får du point.
tak for hjælpen
Avatar billede jakobdo Ekspert
12. september 2008 - 08:37 #3
Svar!
Avatar billede jakobdo Ekspert
12. september 2008 - 20:11 #4
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester