Autor Zpráva
sloncz
Profil
Dobrý den, mám na webu články a na u každého článku bych chtěl mít POUZE dvě tlačítka (DALŠÍ a PŘEDCHOZÍ). V databázi má každý článek svoje id, problém je v tom, že ty id nejsou popořadě, protože některé články už byly smazány. Chtěl bych se zeptat, jestli je možné vytáhnout z databáze pomocí sql dotazu id článků, které je po aktuálním (Např. jsem na stránce s id=12, článek s id 13 už v databázi není, tak se ukáže další, který v databázi je a to bude id 14)
Fisir
Profil
Reaguji na sloncza:
Než na ID ber raději ohled na skutečné vydání článku.
SELECT * FROM articles WHERE published > "2013-09-05" LIMIT 1
Pro předchozí článek obráceně. (Samozřejmě nahraď datum datem (případně i časem) vydání aktuálního článku.)
sloncz
Profil
Takže mám vybírat článek, který byl napsán před/po datu, který má aktuální článek?
Fisir
Profil
Reaguji na sloncza:
Ano. Vždy jeden a na ten pak odkazovat.
sloncz
Profil
Opět zdravím a mám problém.
Další článek s sql příkazem SELECT * FROM articles WHERE published > "2013-09-05" LIMIT 1 funguje, ovšem když chci vytáhnout článek předtím sql příkazem SELECT * FROM articles WHERE published < "2013-09-05" LIMIT 1 tak mi to vytáhne úplně nejstarší článek a ne ten, co je hned před aktuálním.
mlasevic
Profil
Ahoj, zkus toto - SELECT * FROM articles WHERE published < "2013-09-05" order by published desc LIMIT 1
juriad
Profil
sloncz:
Pokud ti záleží na pořadí, vždy používej klauzuli ORDER BY sloupec. V opačném případě může databáze vrátit výsledek v nějakém pořadí. Často to bude pořadí vytvoření záznamu, ale nelze na to spoléhat; takové chyby se špatně odhalují.
Klauzule LIMIT bez ORDER BY je skoro sebevražda, pokud ti ovšem není úplně jedno, který záznam dostaneš.
sloncz
Profil
Já si vytahuji jen id
SELECT id FROM articles WHERE published > "2013-09-05" LIMIT 1
toho dalšího článku, na který potom odkazuji, ale problém je v tom, že mi to vytáhne id článku, který byl přidán úplně jako první a ne toho, který byl přidán před tím, než byl přidán aktuální článek.

mlasevic: funguje, děkuji mnohokrát! :)

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:

0