Autor Zpráva
weckho
Profil
Ahoj,

po 3 dnech hledání už mi nezbývá nic jiného než poprosit o radu zde.
Mám hotové stránkování a potřebuji výsledky dotazu seřadit.
Dotaz sestavuji dynamicky. Nejdříve je v dotazu požadavek na seřazení a poté LIMIT.
Při vytažení dat z DB jsou data na první stránce seřazena správně, např. podle datumu, názvu, aj. (dle dyn. dotazu), jenže po přechodu na druhou stránku jsou na této stránce již data seřazena náhodně, a při vrácení na stránku první už nejsou seřazena ani zde..

Můžu poslat ukázku scriptu, ale nevím jestli se v tom někomu bude chtít hrabat.
Pomohlo by mi spíše teoreticky, jak postupovat, pokud chci dosáhnout toho, co potřebuji, já už si s tím poradím.
Je možné, že dělám chybu v architektuře dotazu, že prostě třeba takhle nejde skombinovat limit s řazením výsledků, jestli má někdo zkušenosti, popřípadě funkční řešení, budu velice rád.

Děkuji za každou odpověď.
Kajman_
Profil *
Předávejte si na další stránky podle čeho se má řadit.
weckho
Profil
Ty jo to mě vůbec nenapadlo, děkuju moc. Teď mi došlo že budu muset předat celou tu část dynamického dotazu, která kromě toho jak seřadit také říká co z DB vybrat. Jak nejlíp bych měl ten dotaz předat? GET určitě ne.. napadá me session.. a nebo lze nějak použít u klasického odkazu POST? Díky
Alphard
Profil
GET určitě ne
proč? naopak myslím, že ano, při něčem jiném bude problém s přeposíláním odkazů a tak dále
samozřejmě je nutné ošetřit sql injection, ale to je vše
index.php?limit=20&od_id=60&order=asc, v PHP poskládat
weckho
Profil
Problém je v tom, že já nepotřebuji přeposlat jen to, jak výsledek řadit, ale celou část dynamického dotazu, a ta má (podle požadavku) až 80 znaků. Data se vybírají z 5ti tabulek. Proto si myslím že použití GET je nevhodné..
Kajman_
Profil *
A co máte všechno dynamické?

Limit a offset se dají poslat jako jednoduché číslo. Pro řazení lze použít např. sadu čísel (určující pořadí sloupečku a záporné, třeba může mít funkci desc).

Filtrování obsahu přes where také může používat proměnné get.
Joker
Profil
weckho
Problém je v tom, že já nepotřebuji přeposlat jen to, jak výsledek řadit, ale celou část dynamického dotazu
Zkuste třeba na Google najít něco, co dá víc než jednu stránku výsledků, a pak přepnout na další stránku. Tak se to dělá.
weckho
Profil
Joker
Jj, přesně tohle jsem včera zkoušel, ale neodvodil jsem z toho, jak to použít na mém webu.

Kajman_
Mám stránku s formulářem pro zadání parametru hledání, uživatel buď nevyplní nic (pak se z DB vytáhne vše) a nebo vyplní některé parametry. Podle toho kolik jich vyplní, se vytvoří dynamický dotaz na DB (podmínka WHERE), který může být, jak už jsem uvedl, až 80 znaků.. A to by v adrese, při předání přes GET, nebylo podle mě úplně ok.

Kdybych němel klauzuli WHERE poskládanou dynamicky, tak způsob řazení předám přes GET, ale takhle si fakt nevím rady.. Samozřejmě, nějak bych to dohromady přes skryté prvky formuláře dal, ale myslím že musí existovat efektivní řešení. Vyhledávání podle parametrů s následným stránkováním výsledků přece není na webech zase tak neobvyklou věcí.
ninja
Profil
weckho: URL 80 znaku zkousne bez problemu. Otazka je co uzivatel, ale to zalezi na vasi aplikaci.

Misto GET muzete pouzit POST nebo SESSION.
djlj
Profil
až 80 znaků.. A to by v adrese, při předání přes GET, nebylo podle mě úplně ok.
Tak se znovu podívej na Google a spočítej si počet znaků.

Vyhledávání podle parametrů s následným stránkováním výsledků přece není na webech zase tak neobvyklou věcí.
Není, používá se tak, jak již bylo nastíněno výše. Můžeš se sice na další stránky dostávat tak, že tam uděláš formulář, který budeš odesílat metodou POST, ale to zase přináší problém v tom, že nebudeš moct na konkrétní stranu výsledků vyhledávání odkázat.
Kajman_
Profil *
Mám stránku s formulářem pro zadání parametru hledání, uživatel buď nevyplní nic (pak se z DB vytáhne vše) a nebo vyplní některé parametry.

A právě tyhle vybrané parametry předáte přes get. Co je na tom divného?
weckho
Profil
Ok, mě jenom přišlo prostě divné předávat v adrese až 15 parametrů (pokud uživatel bude hledat podle všech kriterií). Ale pokud se to tak běžně dělá, dám na vaše rady.

Děkuji moc všem za pomoc.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0