Autor | Zpráva | ||
---|---|---|---|
PetraPP Profil |
#1 · Zasláno: 8. 11. 2014, 12:06:53 · Upravil/a: PetraPP
Potřebovala bych poradit s rovnicí tak, aby fungovala jak by potřebovala :) Jde o stránkování, kdy jedna 1 PAGE má mít 54 (sečtení počtu záznamu).
// rozdělení celkového počtu 54 do čtyř $pocet_zaznamu_1 = 18; $pocet_zaznamu_2 = 12; $pocet_zaznamu_3 = 12; $pocet_zaznamu_4 = 12; 1.stránka = celkově 54 položek (rozděleny do 4 tabulek podle počtu na 18, 12, 12 a 12) 2.stránka = celkově 54 položek (rozděleny do 4 tabulek podle počtu na 18, 12, 12 a 12) ---- atd. atd. atd. Zde je můj script s rovnici plus, krát :) Bohužel nefunguje na 100%. Na začátku, kdy třeba page=1 (homepage), tak výsledky fungují dobře. Když ale chci přejit na druhou stránku page=2, tak výsledek je už špatný. if ($page == "1") $pages = 0; else $pages = ($page - 1) * ($pocet_zaznamu_1 + $pocet_zaznamu_2 + $pocet_zaznamu_3 + $pocet_zaznamu_4); $limit_start_1 = $pages + $pocet_zaznamu_1; $limit_finish_1 = $pocet_zaznamu_1; $limit_start_2 = $pages + $pocet_zaznamu_1 + $pocet_zaznamu_2; $limit_finish_2 = $pocet_zaznamu_2; $limit_start_3 = $pages + $pocet_zaznamu_1 + $pocet_zaznamu_2 + $pocet_zaznamu_3; $limit_finish_3 = $pocet_zaznamu_3; $limit_start_4 = $pages + $pocet_zaznamu_1 + $pocet_zaznamu_2 + $pocet_zaznamu_3 + $pocet_zaznamu_4; $limit_finish_4 = $pocet_zaznamu_4; Hmm a teď zjišťuji, že to mám špatně asi úplně. $limit_start_1 = $pages + $pocet_zaznamu_1; nemůže být, protože počáteční LIMIT by měl jít od nuly.
Chjoo :( Já si fakt nevím rady. |
||
mimochodec Profil |
#2 · Zasláno: 8. 11. 2014, 12:11:28
Jestli má být na stránce 54 položek, k čemu je to dělení po 12? A proč by se to nějak mělo promítnout do LIMITu?
|
||
PetraPP Profil |
Potřebuji to do čtyř různých mySQL tabulek :)
A takhle by měl vypadat výsledek: homepage (1.page): ... LIMIT 0,18 ... LIMIT 18,12 ... LIMIT 30,12 ... LIMIT 42,12 2.page: ... LIMIT 54,18 ... LIMIT 72,12 ... LIMIT 84,12 ... LIMIT 96,12 |
||
juriad Profil |
PetraPP:
LIMIT ($page - 1) * 54, 54 Databáze ti vrátí 0 až 54 záznamů. A tyto si pak můžeš zpracovat postupně. V prvním cyklu prvních 18, v druhém 12, pak dalších 12 a nakonec zbytek. Pozdě Máš tam chybu v tom, že starty nemají uvažovat počet záznamů v žádaném bloku. Také máš špatně pojmenovaný finish - on je to totiž počet. $limit_start_1 = $pages; $limit_start_2 = $limit_start_1 + $pocet_zaznamu_1; $limit_start_3 = $limit_start_2 + $pocet_zaznamu_2; $limit_start_4 = $limit_start_3 + $pocet_zaznamu_3; |
||
PetraPP Profil |
#5 · Zasláno: 8. 11. 2014, 12:24:13
Vždy to řeším složitější cestou :) Díky moc. Funguje dobře. Jenže ...
Řekněme, že vím dopředu celkový počet položek, který může být 20, 44, 100, 140. Jakým způsobem mohu ohlídat ten výpis $limit_start |
||
juriad Profil |
#6 · Zasláno: 8. 11. 2014, 12:28:05
Nerozumím, co chceš ohlídat. Stačí přece omezit stránkování na
ceil($pocet_zaznamu / $zaznamu_na_stranku) . O zbytek se postará databáze. Při nejhorším některé dotazy vrátí 0 záznamů (pro poslední stranu). To však přece není problém - prostě ta tabulka bude prázdná.
|
||
Časová prodleva: 10 let
|
0