Autor Zpráva
barneby
Profil
Dobrý den,
mám webovou stránku kde se my vypisujou z databáze novinky.
Jak udělám aby se my na jedné stránce vypsalo třeba 5 novinek a v patičce by byli odkazy 1 2 3 4 5 6 7 8 9 atd... které bymě odkazovali na starší články.
Děkuju.
Joker
Profil
barneby:
Základem je klauzule LIMIT v databázovém dotazu.
A pak je nutné vědět dva parametry: Kolik zpráv vybrat (= velikost stránky) a od kolikáté začít (závisí na tom, na kolikáté stránce jsem).

Kolik zpráv vybrat jde vyřešit prostě tím, že se to řekne napevno, jako je v dotazu dáno 5.
Takže dáme:
define("VELIKOST_STRANKY", 5);

Od kolikáté začít se musí získat od uživatele, takže na jednotlivé stránky povedou odkazy s GET parametrem. Ten může říkat buď přímo od kolikáté zprávy začít, respektive kolik jich přeskočit (tj. 0, 5, 10, 15, …), nebo udávat číslo stránky (pak to bude 1, 2, 3, …)
V prvním případě se při zpracování jen převede na číslo a použije, ale při tvorbě odkazů se musí vypočítat podle velikosti stránky. Ve druhém případě naopak odkazy na další stránku jsou jednoduše předchozí + 1, ale při zpracování se musí vypočítat kolik zpráv přeskočit podle velikosti stránky.
V různých situacích je lepší jedna či druhá varianta.

Takže například předávání stránek by fungovalo takto:
Odkaz na druhou stránku bude třeba novinky.php?strana=2 (taková drobnost, je dobré si říct, jestli první stránka bude jen novinky.php, nebo novinky.php?strana=1 a pak se toho držet při generování odkazů).
Nezapomenu si zkontrolovat, jestli tam je smysluplná hodnota:
$stranka = (isset($_GET["stranka"]) && ((int)$_GET["stranka"] > 0)) ? (int)$_GET["stranka"] : 1;
Pak si v kombinaci s tím define co jsem napsal už dříve vypočítám kolik přeskočit:
$preskocit = ($stranka - 1) * VELIKOST_STRANKY;
No a pak se už jen do SQL dotazu přidá klauzule "LIMIT " . $preskocit . "," . VELIKOST_STRANKY
barneby
Profil
moc my to pomohlo dík


nějak my to nefunguje:(

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: