Avatar billede budda Nybegynder
12. juli 2005 - 20:06 Der er 8 kommentarer og
1 løsning

Paging funktion

Søger en funktion eks
paging($current, $count, $prpage)

Det den så skal gøre er at lave en liste med 1 - sidste side.
Dog må der kun vises 10 numre ad gangen så når eks 10 er aktiv så står der: 6 7 8 9 <b>10</b> 11 12 13 14 15

osv... Nogen der kan hjælpe..
Avatar billede jaw Nybegynder
12. juli 2005 - 20:11 #1
Heysa, den her har jeg lavet tidligere og benytter stadig, så du kan jo prøve om den opfylder dine behov:

$prside = det antal du vil have per side
$num_rows = det antal der er ialt
$basename = den side den skal sende til
$s = den side i rækken af x-antal sider du er på nu

    function tele2_pages ($prside, $num_rows, $basename, $s) {
        $numPages = CEIL($num_rows / $prside);
        if($numPages > 1) {
            $now = ($_GET['s'] / $prside) + 1;

            if($numPages <= 7) {
                $start = 1;
                $stop = $numPages;
            } elseif(($now - 3) > 0 && ($now + 3) <= $numPages) {
                $start = $now - 3;
                $stop = $now + 3;
            } elseif($now == $numPages || ($now + 2) == $numPages || ($now + 1) == $numPages) {
                $start = $numPages - 6;
                if( ($now - 6) < 1) {
                    while($start < 1) {
                        $start++;
                    }
                }
                $stop = $numPages;
            } elseif($now == 1 || $now == 2 || $now == 3) {
                $start = 1;
                $stop = $start + 6;
                if($stop > $numPages) {
                    while($stop > $numPages) {
                        $stop--;
                    }
                }
            }
Avatar billede jaw Nybegynder
12. juli 2005 - 20:13 #2
Hov, der manglede så halvdelen.

    function tele2_pages ($prside, $num_rows, $basename, $s) {
        $numPages = CEIL($num_rows / $prside);
        if($numPages > 1) {
            $now = ($_GET['s'] / $prside) + 1;

            if($numPages <= 7) {
                $start = 1;
                $stop = $numPages;
            } elseif(($now - 3) > 0 && ($now + 3) <= $numPages) {
                $start = $now - 3;
                $stop = $now + 3;
            } elseif($now == $numPages || ($now + 2) == $numPages || ($now + 1) == $numPages) {
                $start = $numPages - 6;
                if( ($now - 6) < 1) {
                    while($start < 1) {
                        $start++;
                    }
                }
                $stop = $numPages;
            } elseif($now == 1 || $now == 2 || $now == 3) {
                $start = 1;
                $stop = $start + 6;
                if($stop > $numPages) {
                    while($stop > $numPages) {
                        $stop--;
                    }
                }
            }
   
            $str = "
                <table bgcolor='#000000' width='500' cellspacing='0' cellpadding='0' align='center'>
                    <tr>
                        <td>
                            <div align=center>
                                <table align='center'>
                                    <tr>
            ";
            if($now > 1) $str .= "
                                        <td width='20' align='center'><a class='tal_bar' href='".$basename."&amp;s=0'>&laquo;</a></td>
                                        <td width='50' align='center'><a class='tal_bar' href='".$basename."&amp;s=".($now * $prside - 2 * $prside)."'>forrige</a>
            ";
            if($start > 1) $str .= "
                                        <td width='20' align='center'><a class='tal_bar'>...</a></td>
            ";
           
            for($i = $start; $i <= $stop; $i++) {
                if($i == $now) {
                    $str .= "
                        <td width='20' align='center'><a class='tal_bar_now'>".$i."</td>
                    ";
                } else {
                    $str .= "
                                            <td width='20' align='center'><a class='tal_bar' href='".$basename."&amp;s=".($i * $prside - $prside)."'>".$i."</a></td>
                    ";
                }
            }
            if($stop < $numPages) {
                $str .= "
                                        <td width='20' align='center'><a class='tal_bar'>...</a></td>
                ";
            }
            if($now < $numPages) {
                $str .= "
                                        <td width='50' align='center'><a class='tal_bar' href='".$basename."&amp;s=".($now * $prside)."'>n&aelig;ste</a></td>
                                        <td width='20' align='center'><a class='tal_bar' href='".$basename."&amp;s=".($numPages * $prside - $prside)."'>&raquo;</a></td>
                ";
            }
            $str .= "
                                    </tr>
                                </table>
                            </div>
                        </td>
                    </tr>
                </table>
            ";
        }
        return $str;
    }
Avatar billede budda Nybegynder
12. juli 2005 - 20:44 #3
$now ?
Forklar tak for det ser lidt funny ud..
Avatar billede jaw Nybegynder
12. juli 2005 - 21:24 #4
$now = ($_GET['s'] / $prside) + 1; <-

Og no offence, men for 30 points forklarer jeg altså ikke alle de variabler jeg har brugt :) Der må du afprøve det, se om du kan lure det, og så evt. spørge bagefter hvis det ikke funker...
Avatar billede budda Nybegynder
14. juli 2005 - 08:52 #5
Indsætter jeg : 10, 3,1 (har modificeret $str men det er alt)
function totalpager ($prside, $num_rows, $s) {
        $numPages = ceil($num_rows / $prside);
        if($numPages > 1) {
            $now = ($s / $prside) + 1;

            if($numPages <= 7) {
                $start = 1;
                $stop = $numPages;
            } elseif(($now - 3) > 0 && ($now + 3) <= $numPages) {
                $start = $now - 3;
                $stop = $now + 3;
            } elseif($now == $numPages || ($now + 2) == $numPages || ($now + 1) == $numPages) {
                $start = $numPages - 6;
                if( ($now - 6) < 1) {
                    while($start < 1) {
                        $start++;
                    }
                }
                $stop = $numPages;
            } elseif($now == 1 || $now == 2 || $now == 3) {
                $start = 1;
                $stop = $start + 6;
                if($stop > $numPages) {
                    while($stop > $numPages) {
                        $stop--;
                    }
                }
            }

            if($now > 1) $str .= "(".($now * $prside - 2 * $prside).")forrige</a>";
            if($start > 1) $str .= "...";
         
            for($i = $start; $i <= $stop; $i++) {
                if($i == $now) {
                    $str .= " - <b>".$i."</b>- ";
                } else {
                    $str .= " (".($i * $prside - $prside).")".$i." ";
                }
            }
            if($stop < $numPages) {
                $str .= "...";
            }
            if($now < $numPages) {
                $str .= " (".($now * $prside).")n&aelig;ste (".($numPages * $prside - $prside).")&raquo;";
            }
        }
        return $str;
    }
Avatar billede jaw Nybegynder
14. juli 2005 - 08:58 #6
Og det kan du så ikke få til at virke? Og det kan jeg godt forstå.

Hvis du ønsker 10 pr. side, men der kun er 3 i alt, vil $s aldrig være 1, for den kan ikke blive større end 0. Forståeligt? For at få dit til at virke, bør du indsætte 10, 26, 1 f.eks.
Avatar billede budda Nybegynder
14. juli 2005 - 16:14 #7
Nåe side starter ved 0 og ikke 1 :)
Avatar billede budda Nybegynder
14. juli 2005 - 16:27 #8
(-1)forrige (-10) ... (19)næste (790)»

Det er resultatet når jeg sætter 10, 800, 9 ind
Avatar billede jaw Nybegynder
14. juli 2005 - 17:31 #9
Jeg ved ikke helt hvad du gør, men du må have slettet for meget (har ikke kigget dit script igennem). Men indsæt følgende i en blank fil, og test det før du piller...

<?
    function tele2_pages ($prside, $num_rows, $basename, $s) {
        $numPages = CEIL($num_rows / $prside);
        if($numPages > 1) {
            $now = ($_GET['s'] / $prside) + 1;

            if($numPages <= 7) {
                $start = 1;
                $stop = $numPages;
            } elseif(($now - 3) > 0 && ($now + 3) <= $numPages) {
                $start = $now - 3;
                $stop = $now + 3;
            } elseif($now == $numPages || ($now + 2) == $numPages || ($now + 1) == $numPages) {
                $start = $numPages - 6;
                if( ($now - 6) < 1) {
                    while($start < 1) {
                        $start++;
                    }
                }
                $stop = $numPages;
            } elseif($now == 1 || $now == 2 || $now == 3) {
                $start = 1;
                $stop = $start + 6;
                if($stop > $numPages) {
                    while($stop > $numPages) {
                        $stop--;
                    }
                }
            }
   
            $str = "
                <table bgcolor='#ffffff' width='500' cellspacing='0' cellpadding='0' align='center'>
                    <tr>
                        <td>
                            <div align=center>
                                <table align='center'>
                                    <tr>
            ";
            if($now > 1) $str .= "
                                        <td width='20' align='center'><a class='tal_bar' href='".$basename."?s=0'>&laquo;</a></td>
                                        <td width='50' align='center'><a class='tal_bar' href='".$basename."?s=".($now * $prside - 2 * $prside)."'>forrige</a>
            ";
            if($start > 1) $str .= "
                                        <td width='20' align='center'><a class='tal_bar'>...</a></td>
            ";
           
            for($i = $start; $i <= $stop; $i++) {
                if($i == $now) {
                    $str .= "
                        <td width='20' align='center'><a class='tal_bar_now'>".$i."</td>
                    ";
                } else {
                    $str .= "
                                            <td width='20' align='center'><a class='tal_bar' href='".$basename."?s=".($i * $prside - $prside)."'>".$i."</a></td>
                    ";
                }
            }
            if($stop < $numPages) {
                $str .= "
                                        <td width='20' align='center'><a class='tal_bar'>...</a></td>
                ";
            }
            if($now < $numPages) {
                $str .= "
                                        <td width='50' align='center'><a class='tal_bar' href='".$basename."?s=".($now * $prside)."'>n&aelig;ste</a></td>
                                        <td width='20' align='center'><a class='tal_bar' href='".$basename."?s=".($numPages * $prside - $prside)."'>&raquo;</a></td>
                ";
            }
            $str .= "
                                    </tr>
                                </table>
                            </div>
                        </td>
                    </tr>
                </table>
            ";
        }
        return $str;
    }
   
   
    echo tele2_pages(10, 100, $_SERVER['PHP_SELF'], 0);
?>
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