TCH (statz) | #1, Főfasz (10443) |
3808 | #0f22 | ^ | Idézet | Wed, 24 Mar 2010 11:51:24 +01 |
188.36.*.* | 188.36.*.* |
Nesze, odaadom az én általános lapozómat. function pager($search, $per_page, $current_page, $base_url, $pageparam, $next, $prev, $width) { $count = mysql_num_rows(mysql_query($search)); $lastpage = floor($count / $per_page); if (($count % $per_page) != 0) $lastpage++; $page0 = ''<a href="'.$base_url.'&'.$pageparam.'='; if (($current_page - 1) > 0) $result['prev'] = $page0.($current_page - 1).'">'.$prev.'</a>'; else $result['prev'] = ''; if (($current_page + 1) < ($lastpage + 1)) $result['next'] = $page0.($current_page + 1).'">'.$next.'</a>'; else $result['next'] = ''; $result['page'] = ''; for($i = 1; $i < ($lastpage + 1); $i++) { if ($i != $current_page) $result['page'] .= $page0.$i.'">['.$i.']</a>'; else $result['page'] .= '<b>['.$i.']</b>'; if (($i % $width) == 0) $result['page'] .= '<br />'; } $result['query'] = $search.'LIMIT '.(($current_page - 1) * $per_page).', '.$per_page; $result['data'] = mysql_query($search.' LIMIT '.(($current_page - 1) * $per_page).', '.$per_page); return $result; } Paraméterek: - search: Ez az SQL kérés amit végre fog hajtani. Pl "SELECT * FROM termek WHERE termek_kat=15" - per_page: Hány találat egy oldalon. - current_page: Hanyadik oldalon járunk. Ez azt jelenti, hogy ha pl a 155. oldalon járunk, mint itt a vendégkönyvben, akkor abból nem csinál linket. - base_url: Az az url, amihez majd hozzácsapja a szükséges paramétereket. Pl "http://webbolt.hu/search.php?termek_kat=15" - pageparam: Az oldalszám paraméterének neve. Pl ha beírod, hogy "lap", akkor az előbb írt link így fog kinézni: "http://webbolt.hu/search.php?termek_kat=15&lap=" és utána az oldalszámok. - next és prev: Ezek az előző/következő linkek szövegei. Pl "Előző lap" vagy "Következő oldal", akármi. - width: Hány oldalt sorol fel egy sorban. Itt pl 24. A végeredmény: A visszakapott eredmény egy tömb, aminek öt eleme van. A 'data', az a lefutott lap eredménye, egy mysql_result, lehet fetchelni. A 'query', az meg a létrehozott kérés, aminek az eredménye a 'data' részben van. Csak azért van, hogy debuggolni lehessen a kérést, ha el van baszva valami. Vagy, ha hozzá akarsz csapni valamit még. A 'page' az a lapozó maga, amit itt fent is látsz. Ki kell íratni echoval, vagy ahogy akarod. A 'next' és a 'prev' az az előző és a következő lapok linkje. Ugyanaz vonatkozik rá, ami a 'page'-ra is. De nem muszáj kiiratni. Itt sincs. Használat: $eredmeny = pager( 'SELECT * FROM termek WHERE (termek_kat='.$_GET["kat_id"].') AND (termek_nev LIKE "%'.$_GET["kereso"].'%")', 15, 0, '?search&kat_id='.$_GET["kat_id"].'&kereso='.$_GET["kereso"], 'pg', '>>', '<<', 16 ); $lapozo = $eredmeny['page'].'<br />'.$eredmeny['prev'].' '.$eredmeny['next'].'<br />'; echo $lapozo; // felülre while ($row = mysql_fetch_array($eredmeny['data']) { echo 'Név: '.$row['termek_nev']. 'Ár: '.$row['termek_ar']; // stb. } echo $lapozo; // alulra Az $eredmeny['query']-ben egyébként ugyanaz lesz, mint amit a search paraméterbe beírtál, csak éppen hozzá lesz csapva a megfelelő LIMIT is. |