Nagyon szépen köszönöm a segítséget, hálás vagyok!
Nagyon szépen köszönöm a segítséget, hálás vagyok!
Sziasztok,
Egy kis segítségre lenne szükségem pagination-nal kapcsolatban. Dinamikus oldallépegetőt szeretnék készíteni, ami az adatbázisból kapott eredményektől függ. Ez egy keresés, és minden találati oldalra 12 találatot szeretnék kiíratni (értelemszerűen ha nincs 12 találat akkor csak egy oldal lenne, nem kell a lépegető).
Mi a legegyszerűbb/legjobb módszer erre? Másik esetben meg tudtam úgy oldalni, hogy eleve az adatbázisból csak a megfelelő id-k száma között futtattam le a lekérdezést (pl WHERE id >=1 AND id <=12). Ebben az esetben azonban ez azért nem jó, mert keresés lévén nem hagyatkozhatok az id-kra.
Én olyasmi megoldásra gondoltam, hogy lekérem az összes találatot, és PHP-val mindig csak 12 találatot íratok ki, első oldalon 1-12, másodikon 13-25, stbstb; azonban sajnos még nem találtam meg a módszert, amivel ezt kivitelezhetném.
Előre is köszönöm segítségeteket
A megoldás kulcsa a LIMIT, OFFSET használata.
Pl.:
SELECT * FROM cikkek WHERE kategoria=12 ORDER BY datum DESC LIMIT 10 OFFSET 0
SELECT * FROM cikkek WHERE kategoria=12 ORDER BY datum DESC LIMIT 10 OFFSET 10
Tehát laponként az offset-et változtatod attól függően, h hanyadik rekordtól kérdezel le. A LIMIT értéke azt határozza meg, hogy mennyi rekordot.
Hello,
A mysql támogatja a limit paramétert, ami pont erre van.
PHP kód:
$item_per_page = 12;
if (isset($_GET['p'])
{
$page = abs(intval($_GET['p']));
}
else
{
$page = 1;
}
$from = ($page - 1) * $item_per_page;
$result = mysql_query
(
'SELECT
*
FROM
tabla
WHERE
alma='korte'
ORDER by
meret
LIMIT ' . $from . ', ' . $item_per_page . ''
);
Nagyon köszönöm segítségeteket!
Lenne még egy további kérdésem ugyanezzel a témával kapcsolatban. Hogy oldjam meg, hogy ha éppen már 18 oldalnyi találatom van, akkor ne rakjon ki 18 gombot, hanem úgy legyen mint pl itt is, hogy kipontpontozza és csak 3-4 darab gomb legyen? :S
PHP kód:
<?php
$item_per_page = 12;
$page_gap = 3;
if (isset($_GET['p'])
{
$page = abs(intval($_GET['p']));
if ($page == 1)
{
# Azért hogy az első lapnak ne legyen két url-je
header('/', 301);
exit();
}
}
else
{
$page = 1;
}
#Az egyszerüség kedvéért
$item_number = 245
$max_page_number = $item_number / $item_per_page;
if ($max_page_number < $page)
{
# Valaki túl lapozott. ezt sok féle képpen lehet kezelni.
header('/', 302);
exit;
}
if (($page - $item_gap) > 1)
{
$min_page = $page - $item_gap;
}
else
{
$min_page = 1;
}
if (($page + $item_gap) < $max_page_number)
{
$max_page = $page + $item_gap;
}
else
{
$max_page = $max_page_number;
}
###
#Itt van két változód a $min_page és a $max_page amelyikben benne van, hogy honnan hova lapozol
BagiZoli (2014-09-20)
Tökéletes, mégegyszer nagyon köszönöm!
Üdv mindenkinek! Már több fórumon is próbálkoztam, de nem kaptam választ. Remélem itt van olyan szaki, aki tud nekem segíteni az alábbi problémámban:
Adott az SMF fórumom, amiben az admin menübe lépve bizonyos menüpontoknál hibát ír ki, miszerint a Manage Settings.php-ban a 360. sorban baj van: (ManageSettings.php on line 360)
A fenti sort bemásolom a 360-365-ig. (pirossal jelöli is, hogy 60-65-ig baj van) Ez a telepített Arcade games-nek a hibája, csak nem tudom, hogy mi. Mellesleg az adminban pont az a menü rész nem nyílik meg, amiben a telepített csomagok beállításait tudnám kezelni.
Íme:
Kód:'arcade' => array( 'url' => 'action=admin;area=arcade', 'settings' => array( 'arcadeEnabled' => 1, ), call_integration_hook('integrate_core_features', array(&$core_features);
Előre is köszönöm az építő jellegű hozzászólásokat.
Egy pontos hibaüzenetet is másolj be, mert ebből a snippet-ből még nem sok minden derül ki. "Baj van" meg elég tág fogalom
Könyvjelzők