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..
Annonceindlæg fra gavdi
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--; } } }
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."&s=0'>«</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æste</a></td> <td width='20' align='center'><a class='tal_bar' href='".$basename."&s=".($numPages * $prside - $prside)."'>»</a></td> "; } $str .= " </tr> </table> </div> </td> </tr> </table> "; } return $str; }
$now ? Forklar tak for det ser lidt funny ud..
$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...
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æste (".($numPages * $prside - $prside).")»"; } } return $str; }
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.
Nåe side starter ved 0 og ikke 1 :)
(-1)forrige (-10) ... (19)næste (790)» Det er resultatet når jeg sætter 10, 800, 9 ind
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'>«</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æste</a></td> <td width='20' align='center'><a class='tal_bar' href='".$basename."?s=".($numPages * $prside - $prside)."'>»</a></td> "; } $str .= " </tr> </table> </div> </td> </tr> </table> "; } return $str; } echo tele2_pages(10, 100, $_SERVER['PHP_SELF'], 0); ?>
Vi tilbyder markedets bedste kurser inden for webudvikling