Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako napraviti custom navigaciju poput ove na ES-u?

[es] :: PHP :: Kako napraviti custom navigaciju poput ove na ES-u?

[ Pregleda: 2357 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

cronewbie

Član broj: 143514
Poruke: 32
*.adsl.net.t-com.hr.



Profil

icon Kako napraviti custom navigaciju poput ove na ES-u?09.08.2007. u 08:05 - pre 186 meseci
Postovanje svima,

Radim na jednom projektu koji ima dosta zapisa u bazi (nekih 60k) i sad nailazim na problem jer je kupac zamislio samo 10 rezultata po stranici, i tada mi paginacija naraste u cudoviste od 9604 stranice! :) Zato sam mislio da bih trebao odraditi tu paginaciju na nacin kao sto je na ES-u kad se listaju postovi po forumima, dakle nešto ovako otprilike:

[<Pocetna] [<Prethodna] 2 | 3 | 4 | 5 | [6] | 7 | 8 | 9 | ... [Slijedeca>] [Posljednja]

Ima li itko ikakav link na nekakav tutorial koji to objasnjava ili kakav kvalitetan hint gdje da trazim?
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.routotelecom.com.



+1 Profil

icon Re: Kako napraviti custom navigaciju poput ove na ES-u?09.08.2007. u 09:41 - pre 186 meseci
Za PostgreSQL i MySQL pogledaj LIMIT i OFFSET koji se koriste uz SELECT: http://www.postgresql.org/docs/8.2/static/sql-select.html, http://dev.mysql.com/doc/refman/5.0/en/select.html. Naravno, treba ih koristiti uz ORDER da bi bio siguran u redosled kojim se očitavaju.
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
*.dynamic.sbb.co.yu.

Sajt: norway.dakipro.com


+190 Profil

icon Re: Kako napraviti custom navigaciju poput ove na ES-u?09.08.2007. u 09:58 - pre 186 meseci
Cini mi se da ga nisi bas najbolje razumeo. On hoce samo 10-ak strana da prikaze u paginaciji. Mada, nije to nikakva nauka ako se malo bolje razmisli o tome, samo treba da se malo matematike ubaci u kod koji "crta" te linkove, i ogranici se broj prikazanih strana. Treba samo da se izadje iz petlje ako je nacrtano 10 linkova, nista komplikovano, cista logika...
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.routotelecom.com.



+1 Profil

icon Re: Kako napraviti custom navigaciju poput ove na ES-u?09.08.2007. u 10:17 - pre 186 meseci
Aha, pa onda sa count(*) može da se prebroji koliko ima redova, da se izračuna koliko je to stranica i prikaže npr. prva stranica i linkovi za narednih 10. Čitanje sledeće stranice može preko LIMIT i OFFSET tako što je limit broj redova koje treba prikazati a ofset računa kao tekuća stranica * limit. Naravno, linkove za unapred prikazuje za onoliko stranica koliko ih ima što nije problem jer ih je izbrojao na početku. Linkovi za stranice mogu da sadrže parametre oblika page=$currentpage, page=$currentpage+1 itd. za redni broj stranice na osnovu kojeg će posle klika znati šta da povuče iz baze.

Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

Ivan.Markovic

Član broj: 97763
Poruke: 330

Sajt: security-net.biz


+19 Profil

icon Re: Kako napraviti custom navigaciju poput ove na ES-u?09.08.2007. u 10:28 - pre 186 meseci
Navigator klasa: http://www.netsector.net/index.php?p=146
“If you think you are too small to make a difference, try sleeping with a mosquito.” - Dalai Lama
XIV
 
Odgovor na temu

cronewbie

Član broj: 143514
Poruke: 32
*.adsl.net.t-com.hr.



Profil

icon Re: Kako napraviti custom navigaciju poput ove na ES-u?14.08.2007. u 13:26 - pre 186 meseci
Hvala svima na odgovorima i uputama. Pronašao sam klasu koja mi radi posao (adresa je: http://www.mis-algoritmos.com/...7/digg-style-pagination-class/).
Međutim, iako pozovem klasu čini mi se pravilno, ona se pojavi ali nije funkcionalna. Pretpostavljam da griješim negdje u samom kodu, pa ako bi mogao dobiti malo pomoći puno bi mi značilo.

Imam slijedeći kod koji mi je radio paginaciju prije pokušaja implementacije ovog novog tipa paginacije:
Code:

function div ($a, $b) {return ($a-$a%$b)/$b;} */

$po_stranici = 10; // broj podataka po stranici

$vijesti = mysql_query("SELECT COUNT(MBO) AS broj FROM tusmo_baza");

$r = mysql_fetch_array($vijesti, MYSQL_ASSOC);

$broj_redova = $r['broj'];

$broj_stranica = div($broj_redova+$po_stranici-1, $po_stranici);

$stranica = @$_GET['str'];

    if (!isset($stranica)) $stranica = 1; else $stranica = intval($stranica);

    if ($stranica < 1 || $stranica > $broj_stranica) $stranica = 1;

$x = ($stranica - 1) * $po_stranici;

// konacni upit koji daje trazene podatke

//[email protected]_query("SELECT * FROM tusmo_baza ORDER BY MBO DESC LIMIT $x, $po_stranici;"); 



I sama paginacija je išla jednostavno pozivanjem ovog bloka koda:
Code:

// prikaz linkova na ostale stranice
for ($i = 1; $i <= $broj_stranica; ++$i)

if ($i == $stranica) echo "<b>[$i]</b> ";
     else echo " <a href=\"index.php?&str=$i\">$i </a>";
?>


I to je radilo korektno. Tada sam došao do problema kojeg sam prvi put opisao i pokušao stvar zamjeniti gore spomenutom klasom, ali mi ne radi. Pojavi mi se navigacija, ali ne radi - kada pritisnem slijedecu stranicu ona se kao pozove ali se rezultati ne mijenjaju, iako sam pravilno (imho) editirao samu klasu. Gdje griješim? Da li moram promijeniti query negdje ili šta? Ne razumijem..

Eh, da, zaboravio sam spomenuti kako izgleda kod kojim sam zamijenio pozivanje stare paginacije novom:
Code:
<?php 
include('includes/pagination.class.php');
$p = new pagination;
$p->items(1000);
$p->limit(10);
if(isset($_GET['page'])){
                $page = $_GET['page'] / 10;
                $p->currentPage($page);
        }else
                $p->currentPage(1);

$p->show();?>
 
Odgovor na temu

[es] :: PHP :: Kako napraviti custom navigaciju poput ove na ES-u?

[ Pregleda: 2357 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.