Vēlreiz par lappusēm…
Jun5
Nereti gadās situācijas, kad, piemēram, kaut kādu datu sarakstu jāsadala pa lappusēm. Vienreiz jau rakstīju, kāds, manuprāt, ir labākais risinājums lappušu skaita iegūšanai, šeit būs tāds kā turpinājums…
Ko darīt, ja lappušu skaits pārāk liels un visu lappušu linkus nav iespējams izvadīt? Protams, jāizvada tikai daļa no tām (arī pie tā raksta kāds jautāja par šādu algoritmu).
Nekā sarežģīta jau tur nav, bet vienmēr esmu rakstījis kaut kādu garu funkciju, kas rēķina sākuma ciparu un beigu ciparu, izejot no atvērtās lappuses. Pirms pāris nedēļām strādāju pie kāda foruma, kur radās šī pati problēma, taču šoreiz, dzerot aliņu, tika izdomāts algoritms, kurš aizņem, nevis 20, bet 2 rindiņas.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <? function draw_pages($count, $perpage, $offset = 5){ $pages = ceil($count/$perpage); if($pages<2){ return ''; } $r = '<ul class="pages">'; $page = (empty($_GET['p']) || $_GET['p']<2) ? 1 : $_GET['p']; $first = $page >= $offset+1 ? $page-$offset : 1; $last = $page <= $pages-$offset ? $page+$offset : $pages; if($page>1){ $r.= sprintf('<li><a href="?p=1">«</a></li><li><a href="?p=%d"><</a></li>', $page-1); } for($i=$first;$i<=$last;$i++){ $r.= sprintf('<li%s><a href="?p=%d">%d</a></li>', $page==$i ? ' class="active"' : '', $i, $i); } if($page<$pages){ $r.= sprintf('<li><a href="?p=%d">></a></li><li><a href="?p=%d">»</a></li>', $page+1, $pages); } $r.= '</ul>'; return $r; } ?> |
Atzīstu, ir tādas, lietas, kuras kādreiz tikušas izdomātas un tiek lietotas vēl šodien. Tomer, ja kaut ko mēģina uztaisīt no šodienas skata punkta, loģiski – tas sanāk daudz ātrāk un vienkāršāk.
11:53 on June 13th, 2009
atradu divas kļūdas….
if($page<$count){
…
}
jaabuut
if($page<$pages){
…
}
savaadaak esot pēdējā lpp turpina rādīt to »
Un vēl…
$last = $page <= $pages-2 ? $page+$offset : $pages;
jābūt
$last = $page <= $pages-$offset ? $page+$offset : $pages;
savādāk esot lapām pa vidu, rāda vairāk lapas, nekā ir īstenībā…
anyway tnx par pageri, noderēja..
16:33 on June 13th, 2009
Jup, nav pirmā reize, kad kopējot jau uztaisītu kodu, kaut ko pamainu un kaut ko aizmirstu pamainīt.
Jebkurā gadījumā, paldies, ka ievēroji.
23:25 on June 22nd, 2009
esmu iesācējs un man būs jāprasa 1 lieta…
kā šo lpp dalīšanu skriptu pielāgot šim http://paste.php.lv/726036e7946dd89ba663ba7159ea5ce1?lang=php ipb jaunumu skriptam lai viss strādātu..vai lpp dalīšanu skripta kōds jāliek jaunumu skripta failā iekšā vai kkā caur db ? lūdzu tikai nerunājat pārgudrā valodā kā nekā esmu iesācējs!
23:54 on June 22nd, 2009
Izlasi šo rakstu.
13:22 on September 30th, 2009
tātad šī f-ja jāaizvieto ar iepriekšējā raksta lappušu izvadi?