Autor Zpráva
PetraPP
Profil
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
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:
V dotazu do databáze neřeš nepodstatné věci. Vždy si řekni o 54 záznamů s offsetem.
LIMIT ($page - 1) * 54, 54
Nebo snad chceš zbytečně pokládat 4 dotazy?

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;
Finishe nepotřebuješ, protože to jsou přímo $pocet_zaznamu_#.
PetraPP
Profil
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
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á.

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: