Autor | Zpráva | ||
---|---|---|---|
Pata Profil * |
#1 · Zasláno: 4. 1. 2016, 17:56:11
Dobrý den,
pro výpis dat z databáze využívám for ($i = 0; $sql_c= mysql_fetch_object($crew); $i++; ) jde mi o to, ze bych chtel postupne vypsat data dle kategorie, pomoci sloupce job, ted se vypise vse naraz, ale chtel bych to roztridit dle tech kategorii a pokud to jde, tak na prvni místo si dát tu kategorii kterou chci, lze to vubec udelat ? nebo musim mit vzdy selectu where a na vsechny kategorie zvlast ? Diky |
||
Lonanek Profil |
#2 · Zasláno: 4. 1. 2016, 18:29:38
Nevím jak máte sestavený dotaz, ale pokud požadujete pouze řazení podle kategorie, pak stačí do dotazu přidat
ORDER BY job . Opět netuším co je v této položce a jak si řazení představujete.
Vše záleží na návrhu tabulky a obsahu položek. Pro výpis dotazu je vhodnější použít smyčku while než for. while ($sql_c= mysql_fetch_object($crew)) { ... } |
||
juriad Profil |
#3 · Zasláno: 4. 1. 2016, 18:31:45
Pata:
Stačí upravit ten SELECT. Ukaž jej. Budeš řadit napřed podle kategorie, a potom až podle ostatních atributů. Vynutit nějakou kategorii jako první lze jejím prostým porovnáním jako první parametr řazení. Lonanek: Proč je to vhodnější? Pokud zároveň potřebuje řádky číslovat, toto je docela elegantní způsob. |
||
Pata Profil * |
to chapu, ale v job jsou treba polozky ahoj, nazdar, cus vypisuji treba 100 zaznamu a kazdy ma polozku job, 30 jich ma treba ahoj, 40 nazdar a 30 cus, a ja chci vypsat treba prvne ty kde je job nazdar, pak ty kde je cus a pak ahoj, o to mi práve jde, a nevim zda se to da udelat jednim dotazem na query, nebo musim mit tri s WHERE job=....
zatim to mam jen takto, nevim jak dal, takze zatim tak to SELECT * FROM crew WHERE neco_id=$neco->id |
||
juriad Profil |
SELECT * FROM tabulka ORDER BY job DESC, id ASC Jinak lze udělat toto. Tam nezáleží na pořadí mezi jednotlivými joby. SELECT * FROM tabulka ORDER BY job = 'nazdar' DESC, job = 'cus' DESC, job = 'ahoj' DESC, id ASC |
||
Lonanek Profil |
#6 · Zasláno: 4. 1. 2016, 18:42:07
juriad:
Proč je to vhodnější? Pokud zároveň potřebuje řádky číslovat, toto je docela elegantní způsob. Protože není nutné zjišťovat počet záznamů, pokud požaduješ číslovat řádky to lze i v této smyčce. Pořadí lze v dotazu řešit např. takto: ORDER BY case job when "nazdar" then 1 when "cus" then 2 when "ahoj" then 3 else 4 end |
||
juriad Profil |
#7 · Zasláno: 4. 1. 2016, 18:45:29
Lonanek:
On nikterak nezjišťuje počet záznamů. On iteruje dokud přiřazení $sql_c= mysql_fetch_object($crew) nebude false, což je to samé, co dělá while .
|
||
Pata Profil * |
#8 · Zasláno: 4. 1. 2016, 19:03:27
juriad:
Presne takhle mi to stačí, už jsi jen do výpisu přidelím nadpisy a je to...díky moc |
||
Časová prodleva: 9 let
|
0