Autor Zpráva
Tomashek
Profil
Zdravím,
udělal jsem si třídu na stránkování a chtěl bych, když změním pořadí při výpisu (ORDER BY něco DESC), aby se změnilo jenom pořadí u těch výsledků aktuální strany.
Jenže, když změním to pořadí například na 3. straně, tak se bohužel změní celý výpis čili mně to vyhodí jiné řádky.
K vypisování používám limit a offset.
Online příklad nemám, ale kdyby byl třeba, tak můžu zařídit.
Děkuji za rady.
tiso
Profil
Tomashek: tak si ten výpis zoraď až v PHP, nie v DB.
Tomashek
Profil
To mně napadlo, ale připadá mi to jako komplikované. Jestli to jinak nepůjde, tak to budu muset udělat takhle no. Díky
AM_
Profil
Můžeš to proložit trochou matematiky a udělat to chytře - pokud se otočí pořadí, přesměruješ na odpovídající stránku.
Příklad:
140 záznamů (0..139), 30 záznamů na stránku
zobrazíme záznamy 30-59 vzestupně (LIMIT 30, 30)
otočíme pořadí -> zobrazíme záznamy 110-81 sestupně (LIMIT 81, 30)

Není to nejjednodušší na naprogramování, nicméně libůstka pro návštěvníky :)
Trošku problém bude, že počet záznamů celkem není vždy násobek počtu záznamů na stránku (30 nedělí 140), takže rozdělení na stránky musí být tak trochu amorfní - musíš mít možnost pomocí odkazu zobrazovat od určitého záznamu (třeba ?startFrom=81), a ne jen pomocí celé stránky (?page=3 by bylo od záznamu 60, ?page=4 od z. 90)
Tomashek
Profil
Díky za nápad. Jsem zvědav jestli moje znalost php a matematiky je natolik dobrá, abych to rozlousknul:)
AM_
Profil
Tomashek:
věřím, že to zvládneš, je to akorát troška otravného počítání, ale nic víc oproti obyčejnému stránkování z PHP umět nemusíš a matematika na to stačí cca ze třetí třídy ;)
Vzoreček:
- vypisujeme od záznamu č. X, na stránku P záznamů, celkem C záznamů
- po otočení pořadí vypisujeme od záznamu č. C-(X+P)+1, opět P záznamů
Tomashek
Profil
Z části jsem to vyřešil (funguje to když už vypisuji třeba podle názvu titulku). Co ale když to vypisuji podle id a chci přejít na vypisování podle titulku? To mi změní ty výsledky na jednotlivých stránkách. Přemýšlím jestli to vůbec bude možné...
Zatím jsem to nechal v zobrazení po stránkách a je to jen trochu jine vsechny - aktualni_strana * clanky_na_stranku
tiso
Profil
Tomashek: máš na výber z dvoch možností:
- zoradiť všetky výsledky a tie stránkovať
- stránkovať všetky výsledky a zoradiť inak výsledky na práve načítanej stránke
AM_
Profil
Tomashek:
Co ale když to vypisuji podle id a chci přejít na vypisování podle titulku?
Tak tam už to takhle jednoduché nebude, protože pořadí se nejen otočí, ale úplně změní. Tam bych se na to ale klidně vykašlal a při změně sloupce, podle kterého se řadí, klidně přeskočil zpět na stránku 1. Nebo jak píše tiso, řadit jen v rámci dané stránky, ale z toho by návštěvník mohl být dost zmatený.
Tomashek
Profil
Dobře tedy. S tím už si nebudu lámat hlavu. Děkuji Vám za rady, pomohli jste mi:)

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: