| 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: 12 let
|
|||
0