Autor | Zpráva | ||
---|---|---|---|
SkyVessel Profil |
Zdravím,
když uživatel klikne na nějakou položku v akci <a href="vypis.php?kat=akce&typ=23"> ,
tak chci, aby se zobrazily všechny položky v akci $dotaz = "SELECT * FROM zbozi WHERE kategorie = '$kategorie' ORDER BY cena"; ,
ale ta, na kterou kliknul, aby byla na začátku... Jde tohle nějak uspořádat v dotazu, nebo se to musí až potom v php nějak vytáhnout? |
||
juriad Profil |
#2 · Zasláno: 17. 10. 2014, 02:02:13
Lze:
SELECT * FROM zbozi WHERE kategorie = '$kategorie' ORDER BY produkt_id = $kliknuto DESC, cena ASC Výsledek porovnání produkt_id = $kliknuto bude buď 0 - neshoduje se, nebo 1 - shoduje se
Chceš tedy napřed výsledky, které se shodují (1) a pak neshodují (0), proto DESC. Následně zbytek seřadíš podle ceny jako dosud. |
||
mimochodec Profil |
ORDER BY FIELD?
http://stackoverflow.com/questions/13416153/order-by-field-in-mysql (ale juriad lepší. Jeho postup jsem chtěl taky napsat, ale nebyl jsem si jist a testovat se mně to nechtělo.) |
||
SkyVessel Profil |
Chlapi díky :)
...jdu se do toho pustit edit: dělá to přesně to, co jsem potřeboval... Díky za tip s tím = ... Bych se s tím nějak mordoval v php - ještě, že jsem se zeptal :D |
||
juriad Profil |
#5 · Zasláno: 17. 10. 2014, 03:28:12
ORDER BY FIELD nebude fungovat v jiné databázi než MySQL (SkyVessel neuvedl, jakou používá :). Navíc je to volání funkce pro každý řádek místo prostého porovnání. Pokud by těch speciálních řádků bylo více, možná by se to vyplatilo jak z hlediska výkonu, tak i čitelnosti.
|
||
rafej Profil |
#6 · Zasláno: 17. 10. 2014, 22:13:44
[#2] juriad
Tohle řešení se mi líbí. Zase se dovídám něco nového. Díky. |
||
Časová prodleva: 10 let
|
0