Autor Zpráva
divady
Profil
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&nbspKč - %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&nbspKč';
 
    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>&nbsp;&nbsp;';
 
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])."&nbspKč<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])."&nbspKč";
 
 $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 ----
 
 
 
?>
děkuji za odpověd
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
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>';
}
ale když to dám do toho kodu, tak se mi ani nenačte stránka že je tam chyba. a ni nevim jak bych to pak v html volal, vubec mi to nejde jsem už bezradnej

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0