Autor Zpráva
Pata
Profil *
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
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
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
Protože nazdar > cus > ahoj, není třeba ani nic zvláštního dělat.

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
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
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 *
juriad:

Presne takhle mi to stačí, už jsi jen do výpisu přidelím nadpisy a je to...díky moc

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: