Autor | Zpráva | ||
---|---|---|---|
divady Profil |
#1 · Zasláno: 22. 2. 2014, 15:23:30
dobrý den, vím že toto téma tady bylo probíráno už několikrat, ale mam takove trožku specifičtšjší problém
mam dvě tabulky na stránce, je to výpis z databáze a potřeboval bych u nich udelat stránkování aby se mi třeba na každé stránce zobrazilo poze z každé tabulky 10 položek asle pořád nevim jak na to, jsem ještě začátečnik, tak se v tom strácím. ktady máte ukázku stránky. a tabulky http://www.srovnejokna.cz/poptavky/ <? const pzn=33; $sql=new mysql(); $c_arr = array(); $c_buf = ''; $c_zak = $sql->arrays("SELECT * from vz WHERE vlozeno > DATE(NOW()) ORDER BY ID DESC"); $c_pop = $sql->arrays("SELECT * from poptavky WHERE zalozeno > DATE(NOW()) ORDER BY ID DESC"); if ($c_zak) { $c_format = '%s, za %s Kč - %s'; foreach ($c_zak as $key => $value) { array_push($c_arr, sprintf($c_format, c_strip_str_len($value[nazev], pzn), c_nf($value[cena]), $value[mesto] ) ); } } if ($c_pop) { $c_format = '%s, za %s Kč'; foreach ($c_pop as $key => $value) { array_push($c_arr, sprintf($c_format, c_strip_str_len($value[label], pzn), c_nf($value[cena]), $value[mesto] ) ); } } shuffle($c_arr); $c_format = '<a href="/poptavky/">%s...</a> '; foreach ($c_arr as $key => $value) { $c_buf .= sprintf($c_format, $value); } $fce[zakazky]=$anw; $anw=""; $q=$sql->arrays("SELECT * from vz WHERE vlozeno > DATE_SUB(NOW(), INTERVAL 365 DAY) ORDER BY ID DESC limit 200"); if ($q) foreach ($q as $res){ if (date ("d.m.Y")==date("d.m.Y",strtotime("$res[vlozeno]"))) $dat="dnes"; elseif (date ("d.m.Y", strtotime("-1 day"))==date("d.m.Y",strtotime("$res[vlozeno]"))) $dat="včera"; else $dat=date("d.m.Y", strtotime("$res[vlozeno]")); $anw.="<TR><TD class=\"podtrh\"><A HREF = \"/zakazka-detail-$res[ID]/\">$res[nazev], za ".c_nf($res[cena])." Kč<BR>$res[mesto]</A><TD class=\"datum\">$dat</TR>"; } $fce[zakazky2]=$anw; // ZAKÁZKY --- $q=$sql->arrays("SELECT * from poptavky WHERE zalozeno > DATE_SUB(NOW(), INTERVAL 360 DAY) ORDER BY ID DESC limit 200"); if ($q) foreach ($q as $res){ if (date ("d.m.Y")==date("d.m.Y",strtotime("$res[zalozeno]"))) $dat="dnes"; elseif (date ("d.m.Y", strtotime("-1 day"))==date("d.m.Y",strtotime("$res[zalozeno]"))) $dat="včera"; else $dat=date("d.m.Y", strtotime("$res[zalozeno]")); if ($res[cena]=="0") $cena = ""; else $cena = ", za ".c_nf($res[cena])." Kč"; $pop.="<TR><TD class=\"datum\">$dat<TD class=\"podtrh\"><A HREF = \"/poptavka-detail-$res[ID]/\">$res[label]$cena<BR>$res[mesto]</A></TR>"; } // POPTÁVKY ---- ?> |
||
Martin02 Profil |
divady:
Pomocí LIMIT 0, 30 zobrazíš prvních 30 řádků z databáze podle daného dotazu. Pak si třeba vypiš několik odkazů (stránkování) podle toho, kolik máš řádků v té tabulce a adresa odkazu bude třeba ...index.php?page=3 . V PHP si pomocí $_GET['page'] zjistíš to číslo 3 z toho odkazu. A podle toho pak sestrojíš sql dotaz, který ti vyhodí ten určitý počet řádků od určité pozice.
|
||
divady Profil |
#3 · Zasláno: 22. 2. 2014, 20:52:03
ja jsem to chtěl vyřeši tak to
// předávání počtu záznamů zbývajících do konce $pocet = mysql_result(mysql_query("SELECT COUNT(*) FROM poptavka"), 0); $offset = ($_GET["offset"] ? $_GET["offset"] : $pocet); // offset se předává od konce, aby stránky zůstaly trvale platné $result = mysql_query("SELECT * FROM poptavka ORDER BY zalozeno DESC, id DESC LIMIT $limit OFFSET " . ($pocet - $offset)); if ($offset < $pocet) { echo ' <a href="' . htmlspecialchars($_SERVER["PHP_SELF"]) . ($offset + $limit < $pocet ? "?offset=" . ($offset + $limit) : "") . '">zpět</a>'; } if ($offset > $limit) { echo ' <a href="' . htmlspecialchars($_SERVER["PHP_SELF"]) . "?offset=" . ($offset - $limit) . '">vpřed</a>'; } |
||
Časová prodleva: 10 let
|
0