DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   PHP paginacija (http://www.devprotalk.com/showthread.php?t=9422)

slavkan 04. 12. 2010. 23:12

PHP paginacija
 
Pozdrav svima. Treba mi pomoc oko izrade paginacije. Evo stavljam glavni deo koda gde izlistavam zapise iz baze, a fajl gde to radim zove se diplomci.php:

Kôd:

<?php
                include("include/config.php");
                       
                               
                $sql="SELECT * FROM diplomci order by ID_DIPLOMCA asc ";
                    $result=mysql_query($sql);
                $i=0;
                    while($red=mysql_fetch_array($result))
                        {
                               
                                echo'<table border="0" width ="450"><tr align="left" ><td  bgcolor= "#606D84" width="8%" align="center"><FONT SIZE="3" color="#FFFFFF"><b>'.++$i.'.</b></FONT></td><td align="right"><FONT SIZE="3"><a href="profil.php?idDiplomca='.$red['ID_DIPLOMCA'].'">Pogledaj profil</FONT></a></td><tr></table>';?>
                                <?php echo'<b>Ime: </b>'; echo '<b>'; echo $red['IME']; echo'</b>' ?> <br><?php echo '<b>Prezime: </b>'; echo '<b>'; echo $red['PREZIME']; echo'</b>'?><br><?php echo '<b>Odsjek: </b>'; echo '<b>'; echo $red['SMIJER']; echo'</b>'?><br> <?php echo '<b>Status: </b>'; echo '<b>'; echo $red['STATUS']; echo'</b>';?><hr>
                            <?php
                                }
                                mysql_close();
                                ?>

Dakle vrsim upit na bazu. Izlistavam ime,prezime,status i smijer, a na pocetku stavljam redni broj zapisa pomocu promenljive $i. Hvala unapred

webarto 04. 12. 2010. 23:26

PHP kôd:

$stranica intval($_GET["stranica"]);
$limit 10;
if(empty(
$stranica)) $stranica 1;
if(
$stranica != 1){$start intval($stranica 1) * $limit;}else{$start 0;}
$suma mysql_query("SELECT COUNT(0) FROM diplomci");
$suma mysql_fetch_array($suma);
$suma $suma[0];
$stranice ceil(($suma $limit));

for(
$i 1$i <= $stranice$i++){
    
$klasa "";
    if(
$i == $stranica$klasa 'class="trenutna"';
    
$paginacija.= '<li><a '.$klasa.' href="?stranica='.$i.'">'.$i.'</a></li>'."\n";
}

$sql mysql_query("SELECT * FROM diplomci ORDER BY id ASC LIMIT $start$limit");
while(
$red mysql_fetch_assoc($sql)){
    
$tabela.= ""//tvoja tabela
}

echo(
$tabela);
echo(
'<ul class="paginacija">'.$paginacija.'</ul>'); 


ajankovic 04. 12. 2010. 23:29

Trebalo bi to da središ malo. Cela skripta ti je zbrda zdola :).

Prosledi page parametar u url-u:
PHP kôd:

<?php
        
include("include/config.php");
    
    
$page = isset($_GET['page'])?intval($_GET['page']):0;
    
$per_page 10;
    
$start $page?$page*$per_page:0;
    
    
$next_link '<a href="?page='.$page++.'">Next</a>';
    
$prev_link '<a href="?page='.$page--.'">Prev</a>';
                
        
$sql="SELECT * FROM diplomci order by ID_DIPLOMCA asc LIMIT $start$per_page;";
                
$result=mysql_query($sql);
        
$i=0;
             while(
$red=mysql_fetch_array($result))
            {
                
                echo
'<table border="0" width ="450"><tr align="left" ><td  bgcolor= "#606D84" width="8%" align="center"><FONT SIZE="3" color="#FFFFFF"><b>'.++$i.'.</b></FONT></td><td align="right"><FONT SIZE="3"><a href="profil.php?idDiplomca='.$red['ID_DIPLOMCA'].'">Pogledaj profil</FONT></a></td><tr></table>';?>
                <?php echo'<b>Ime: </b>'; echo '<b>'; echo $red['IME']; echo'</b>' ?> <br><?php echo '<b>Prezime: </b>'; echo '<b>'; echo $red['PREZIME']; echo'</b>'?><br><?php echo '<b>Odsjek: </b>'; echo '<b>'; echo $red['SMIJER']; echo'</b>'?><br> <?php echo '<b>Status: </b>'; echo '<b>'; echo $red['STATUS']; echo'</b>';?><hr>
                <?php
                
}
                
mysql_close();

        echo 
"<div>$next_link $page $prev_link</div>";


slavkan 05. 12. 2010. 00:03

Citat:

Originalno napisao ajankovic (Napišite 92537)
Trebalo bi to da središ malo. Cela skripta ti je zbrda zdola :).

Prosledi page parametar u url-u:
PHP kôd:

<?php
        
include("include/config.php");
    
    
$page = isset($_GET['page'])?intval($_GET['page']):0;
    
$per_page 10;
    
$start $page?$page*$per_page:0;
    
    
$next_link '<a href="?page='.$page++.'">Next</a>';
    
$prev_link '<a href="?page='.$page--.'">Prev</a>';
                
        
$sql="SELECT * FROM diplomci order by ID_DIPLOMCA asc LIMIT $start$per_page;";
                
$result=mysql_query($sql);
        
$i=0;
             while(
$red=mysql_fetch_array($result))
            {
                
                echo
'<table border="0" width ="450"><tr align="left" ><td  bgcolor= "#606D84" width="8%" align="center"><FONT SIZE="3" color="#FFFFFF"><b>'.++$i.'.</b></FONT></td><td align="right"><FONT SIZE="3"><a href="profil.php?idDiplomca='.$red['ID_DIPLOMCA'].'">Pogledaj profil</FONT></a></td><tr></table>';?>
                <?php echo'<b>Ime: </b>'; echo '<b>'; echo $red['IME']; echo'</b>' ?> <br><?php echo '<b>Prezime: </b>'; echo '<b>'; echo $red['PREZIME']; echo'</b>'?><br><?php echo '<b>Odsjek: </b>'; echo '<b>'; echo $red['SMIJER']; echo'</b>'?><br> <?php echo '<b>Status: </b>'; echo '<b>'; echo $red['STATUS']; echo'</b>';?><hr>
                <?php
                
}
                
mysql_close();

        echo 
"<div>$next_link $page $prev_link</div>";


Ako to tako uradim evo sta dobijem:

Kôd:

Next 0 Prev
Posto ja nemam jos 10 rekorda u bazi ja stavim recimo da mi se prikazuje 3 reda po strani i desi se da klikom na Prev da u linku imam diplomci.php?page=1,diplomci.php?page=2 itd itd sto ce reci da treba zameniti ova dva linka, ali to nije bitno sad toliko. Bitno mi je ovo da recimo kad izlistam druga 3 zapisa meni ova $i opet pocne da broji od 1 :( Mozda me niste shvatili, dakle kad izlistam prva 3 i kad odradim next za da izlistam druga 3 treba mi da vidim njihove redne brojeve znaci 4,5,6 a ne opet 1,2,3, znaci ova $i mi ne radi sad dobro i sta je jos problem kad izlistam sve rekorde kliktajuci na next skripta broji i dalje iako nema zapisa. Znaci treba nekako ispitati da li je dosla do kraja, ako jeste ne stampati uopste link next, jel tako???

webarto 05. 12. 2010. 00:07

$i = ($page - 1) * $limit;

Skroz si loše ovo osmislio...

@ajankovic, to je za prev & next, ali nema ukupan broj stranica, i još jedan problem je kad dođe do zadnje, odnosno prve stranice, otići će offside.

slavkan 05. 12. 2010. 00:25

Citat:

Originalno napisao webarto (Napišite 92539)
$i = ($page - 1) * $limit;

Skroz si loše ovo osmislio...

@ajankovic, to je za prev & next, ali nema ukupan broj stranica, i još jedan problem je kad dođe do zadnje, odnosno prve stranice, otići će offside.

A sta je sad varijabla $limit?
Pa daj neku ideju onda :D

ajankovic 05. 12. 2010. 00:29

Ja sam mislio da ti tražiš malu pomoć a ne da ti mi uradimo ;).

Malo smo ti pomogli ti nastavi dalje.

slavkan 05. 12. 2010. 00:48

Ok hvala momci, ovaj predposlednji moj post se vise odnosio na pomoc za ideju, ali nebitno i ovo je dovoljno. Pozdrav

dacha 05. 12. 2010. 01:19

Ako malo proguglaš, recimo "php pagination", videćeš da ima puno tutorijala i gotovih funkcija/klasa za to. Nađi neku koja ti odgovara i koju razumeš, prilagodi je po potrebi i kasnije nadgrađuj ako je potrebno. Najbolje je da proćitaš neke tutorijale, videćeš kako to drugi ljudi rade, dobićeš ideje. pa onda možeš i sam da napraviš.

webarto 05. 12. 2010. 01:20

Pa ne treba ti ideja, eno ti drugi post u temi, samo zamjeni to unutar while petlje, sa tom svojom i to bi otprilike bilo to :)

Ovako... http://m.bhtuning.com/f29-pohvale-kritike-prijedlozi


Vreme je GMT +2. Trenutno vreme je 11:22.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.