ugrás a tartalomhoz

Oldal számozása, eredmény lista lapozása

mpdt · 2007. Aug. 16. (Cs), 15.04
Sziasztok!

Nem kaptam sajnos sok segítséget pedig próbáltam nagyon de nem nagyon találtam . Az lenne a gondom ,hogy van egy programom ami kilistázza az adatábzisból a regisztrált felhasználókat . Gondolom én ,hogy ez egy picit necces lenne 200-500 usernél a litázás .

Azt szeretném megoldani ,hogy egy oldalra mondjuk 30 usert listázzon ki ha van 90 user akkor 3 oldal legyen :)

Kipróbáltam egy SQL limitet ami > order by id DESC LIMIT 30 . ezzel az a gondom ,hogy kilistázza a 30 usert csak lapozni nem tudom :S

Hogyan lehetne ezt megoldani ,hogy működjön ? Nos találtam egy docs-ot ami nekem nem sikerült beüzemelnem .

http://netprog.eu/index.php?center=segedletek#oldal_szamozas

Előrre is THX, Üdv : Bence
 
1

Használd bátran a keresőt

Török Gábor · 2007. Aug. 16. (Cs), 15.21
Mielőtt kérdezek, keresek, hátha már mások is belefutottak ebbe a problémába.
2

Talan ez segithet

scoby · 2007. Aug. 17. (P), 09.37
3

oo saját

breakline · 2007. Aug. 17. (P), 12.56
én így használok egy oldalszámozó osztályt, amivel lehet laponként, vagy eredményhalmazonként is lépkedni, én mostanában már csak a laponkénti verziót használom:
  1. <?php  
  2.   
  3. class pager {  
  4.       
  5.     //alapértelmezett oldal  
  6.     var $defaultPage = 1;  
  7.   
  8.     //jelenlegi oldal  
  9.     var $currPage;  
  10.     //következő oldal  
  11.     var $nextPage;  
  12.     //előző oldal  
  13.     var $prevPage;  
  14.     //kezdőpont  
  15.     var $startPoint;  
  16.     //végpont  
  17.     var $endPoint;  
  18.       
  19.     var $nextItems;  
  20.     var $prevItems;  
  21.       
  22.     var $numOfItems;  
  23.     var $numOfPages;  
  24.       
  25.     var $itemLimit;  
  26.       
  27.     var $pageSelect;  
  28.       
  29.     //ez az oldalakkal operáló konstruktor, $page a megjelenítenő oldal  
  30.     //természetesen ha nincs, akkor  
  31.     //beállítja, $itemLimit az oldalankénti limit  
  32.     //$numOfItems az összes "dolog" száma  
  33.   
  34.     function construct_page($page,$itemLimit,$numOfItems) {  
  35.         $page = (isset($page)) ? intval($page) : $this -> defaultPage;  
  36.         $this -> currPage = $page;  
  37.         $this -> numOfPages = ceil($numOfItems/$itemLimit);  
  38.         if($this -> numOfPages==0) {  
  39.             $this -> numOfPages = 1;  
  40.         }  
  41.         $this -> itemLimit = $itemLimit;  
  42.         $this -> nextPage = ($page+1>$this -> numOfPages) ? $page : $page+1;  
  43.         $this -> prevPage = ($page-1<=0) ? 1 : $page-1;  
  44.         $this -> startPoint = ($page*$itemLimit)-$itemLimit;  
  45.         $this -> endPoint = ($page*$itemLimit);  
  46.         return true;  
  47.     }  
  48.   
  49.     //ez a limites verzió, már nem használom  
  50.   
  51.     function construct_limit($start,$itemLimit,$numOfItems) {  
  52.         $start = intval($start);  
  53.         $this -> nextItems = ($start+$itemLimit>$numOfItems) ? $start : ($start+$itemLimit);  
  54.         $this -> prevItems = ($start-$itemLimit<0) ? 0 : ($start-$itemLimit);  
  55.         return true;  
  56.     }  
  57.   
  58.     //visszaadja az előző és a következő oldal számát egy tömbben, ebbőll lehet aztán linkeket képezni  
  59.       
  60.     function get_pages() {  
  61.         return array("next"=>$this -> nextPage,"prev"=>$this -> prevPage);  
  62.     }  
  63.   
  64.     //visszaadja a "pontokat", pl. ha egy tömböt szeretnénk szűrni,   
  65.     //jól jöhet, pl. az első oldal 15-ös   
  66.     //oldalankénti limit esetén 0-15, a 2. oldal 15-30 stb..  
  67.   
  68.     function get_points() {  
  69.         return array("start"=>$this -> startPoint,"end"=>$this -> endPoint);  
  70.     }  
  71.   
  72.     //ez tömböt gyárt, méghozzá az ismert "listázzuk az összes oldalt" formátumhoz, az $offset annyit  
  73.     //jelent, hogy az aktuális oldaltól +- hány oldalt mutasson, tehát pl. 2-es offset   
  74.     //és 10-es aktuális oldal esetén így néz ki a visszaadott   
  75.     //tömb (összesen pl. 80 oldal): [1] [8] [9] [10] [11] [12] [88]  
  76.   
  77.     function get_all_pages($offset = 1) {  
  78.         $return = array();  
  79.         for ($i=1;$i<$this -> numOfPages+1;$i++) {  
  80.             if (in_array($i,$return)) {  
  81.                 continue;  
  82.             }  
  83.             $return[$i] = "";  
  84.             if ($i==$this -> currPage) {  
  85.                 for ($j = 1;$j<$offset+1;$j++) {  
  86.                     if (!in_array($i-$j,$return)) {  
  87.                         if (!($i-$j<0)) {  
  88.                             $return[$i-$j] = $i-$j;  
  89.                         }  
  90.                     }  
  91.                 }  
  92.                 $return[$i] = $i;  
  93.                 for ($j = 1;$j<$offset+1;$j++) {  
  94.                     if (!in_array($i+$j,$return)) {  
  95.                         if (!($i+$j>$this -> numOfPages)) {  
  96.                             $return[$i+$j] = $i+$j;  
  97.                         }  
  98.                     }  
  99.                 }  
  100.             }  
  101.         }  
  102.         if (!in_array(1,$return)) {  
  103.             $return[1] = 1;  
  104.         }  
  105.         if (!in_array($this -> numOfPages,$return)) {  
  106.             $return[$this -> numOfPages] = $this -> numOfPages;  
  107.         }  
  108.         return $return;  
  109.     }  
  110.       
  111. }  
  112. ?>  
  113. //és pl. így lehet használni, most mondjuk az $eredmeny egy akármilyen tömb:  
  114.   
  115. $page = $_GET['page'];  
  116. $limit = 10;  
  117. $darab = count($eredmeny);  
  118.   
  119. $pager = new pager;  
  120. $pager -> construct_page($page,$limit,$darab);  
  121. $points = $pager -> get_points();  
  122. $pages = $pager -> get_pages();  
  123. $all_pages = $pager -> get_all_pages(1);  
  124. for ($i = $points['start'];$i<$points['end'];$i++) {  
  125.     // itt kiiratjuk amit akarunk  
  126. }  
  127. ?>  
  128. <a href="?page=<?=$pages['prev'];?>">Előző oldal</a>  
  129. <?php  
  130. //itt listázunk minden oldalt  
  131. foreach ($all_pages as $index=>$currPage) {  
  132.     $link = "?page=".$currPage;  
  133.     if (emptyempty($currPage)) continue;  
  134.     if ($currPage = $pager -> currPage) {  
  135.         //ha az aktív oldal van soron  
  136.         echo '<a href="'.$link.'" class="akt">['.$currPage.']</a>';  
  137.         continue;  
  138.     }  
  139.     echo '<a href="'.$link.'">['.$currPage.']</a>';  
  140. }  
  141. ?>  
  142. <a href="?page=<?=$pages['next'];?>">>Következő oldal</a>  
  143. <?php  
Még annyit, hogy ha nincs következő oldal, akkor a legnagyobb oldal számát kapod meg következő linknek.

üdv
BL
4

THX

mpdt · 2007. Aug. 18. (Szo), 18.42
Nagyon köszönöm a segítséget ;)