Autor Zpráva
ukulele
Profil *
Dobrý den, mám stránku, která obsahuje výpis dat z databáze. Každá stránka má 5 záznamů s detaily, ale chci mít možnost počet záznamů měnit. Nové příspěvky jsou vždy na první straně a postupně se přesouvají na stránky s vyšším číslem. Tohle všechno je v pohodě a funguje to. Kromě toho mám jinou stránku, kde jsou vypsané pouze názvy a já bych chtěl ke každému názvu vložit link na správnou stránku, kde budou i detaily. Ano, můžu každému záznamu vytvořit vlastní stránku, ale je tam tak málo dat, že mi výpis pěti záznamů na stránce přijde praktičtější. Zbastlil jsem tohle:

<?php
$cislostrany = ceil((((($pocetstran * $prispevkunastrane) - $idprispevku - (($pocetstran * $prispevkunastrane) - $num_rows)) / $prispevkunastrane) + 0.1);


/*vysvětlení funkce

($pocetstran * prispevkunastrane) = celkový počet příspěvků, který lze nacpat na daný počet stran;
od tohoto čísla odečtu  id příspěvku.
od tohoto čísla odečtu počet příspěvků, které zbývají do naplnění kapacity daného počtu stran: ((celkový počet příspěvků, který lze nacpat na daný počet stran) - (reálný počet záznamů));
výsledné číslo odpovídá číslu na druhé straně počtu záznamů - druhé číslo od konce má hodnotu 2, třetí 3, atd.. tuto hodnotu podělím počtem záznamů na jedné stránce.
kvůli nemožnosti zaokrouhlit celá čísla na vyšší celé číslo přičtu 0,1 a celé to ceilem zaokrouhlím nahoru  */

echo "<a href='/?strana='". $cislostrany ."'>". $nazevzaznamu ."</a>";

?>

Tohle mi funguje a v tuhle chvíli i dělá to, co potřebuju. Vidím tam ale problém do budoucna, kdybych z nějakého důvodu potřeboval jeden nebo více záznamů odstranit. V tom okamžiku už by ale neseděl rozdíl mezi počtem příspěvků, které se na daný počet stran maximálně vejdou a reálným počtem příspěvků a celé by to šlo do mínusu, což je samozřejmě blbost. Jsou tu i důvody, kvůli kterým bych pak nemohl posunout ID tak aby tam nebyla mezera. Předpokládám, že nejsem první, kdo něco takového řeší. Dokázal by mě někdo navést, jak bych měl správně postupovat?


Kdybych si víc procvičoval matematiku, mohl jsem si ten příklad zjednodušit už na začátku: :D
$cislostrany = ceil(((($num_rows - $idprispevku) / $prispevkunastrane) + 0.1))



Ještě jednou a snad už naposledy, měl by to být zjednodušeně takhle:
$cislostrany = ceil((((($pocetstran * $prispevkunastrane) - $idprispevku) / $prispevkunastrane) + 0.1))
Keeehi
Profil
ukulele:
Jsou tu i důvody, kvůli kterým bych pak nemohl posunout ID tak aby tam nebyla mezera.
On je taky důvod, proč nikdy žádné IDčka neposouvat. Například se dá těžko odkázat na článek, jehož url se mění protože někdo v databázi "potřeboval" sesypat IDčka.
Reálných důvodů proč by bylo nutné mít IDčka popořadě moc není. Nikdo nepřijde na tvůj web a nebude zkoumat, zda IDčka jdou hezky popořadě.
ukulele
Profil *
JJ, to je ten hlavní důvod, pak na ty ID mám navázány i další věci, takže je fakt měnit nemůžu. Chtěl jsem se jen vyhnout tomu, aby mi někdo poradil přečíslovat ID. Jak bych ale měl řešit můj problém?
Kajman
Profil
Místo id příspěvku použijete pořadí příspěvku (počet menších nebo stejných id ve všech článcích).

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0