Autor | Zpráva | ||
---|---|---|---|
Tomashek Profil |
#1 · Zasláno: 21. 2. 2010, 17:32:26
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 |
#2 · Zasláno: 21. 2. 2010, 17:46:24
Tomashek: tak si ten výpis zoraď až v PHP, nie v DB.
|
||
Tomashek Profil |
#3 · Zasláno: 21. 2. 2010, 18:07:44
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 |
#4 · Zasláno: 21. 2. 2010, 19:35:26
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 |
#5 · Zasláno: 21. 2. 2010, 19:47:17
Díky za nápad. Jsem zvědav jestli moje znalost php a matematiky je natolik dobrá, abych to rozlousknul:)
|
||
AM_ Profil |
#6 · Zasláno: 21. 2. 2010, 20:21:12
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 |
#7 · Zasláno: 21. 2. 2010, 21:45:54
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 |
#8 · Zasláno: 21. 2. 2010, 22:07:40
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 |
#9 · Zasláno: 22. 2. 2010, 08:21:45
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 |
#10 · Zasláno: 22. 2. 2010, 16:10:42
Dobře tedy. S tím už si nebudu lámat hlavu. Děkuji Vám za rady, pomohli jste mi:)
|
||
Časová prodleva: 11 let
|
0