Autor Zpráva
Kolemjdouci
Profil *
Zdravím,

řeším následující věc. Chci vypisovat do "radio selectu" (něco jako select, ale lépe graficky zpracovaný) položky pro "option", které jsou pouze v databázi a to tak, že jednou. Mám 4 typy materiálu, k výrobkům sázím ceny s různým materiálem, rozměry atd a na webu si to filtruji. Nechci, ale filtrovat něčím, co v databázi vůbec není.

Jak bych měl zapsat něco ve smyslu:
"pokud je v databázi alespoň jednou, vypiš 1x input ..." ... a to tak, se 4 možnými typy (číslo 1-4)?
Výsledek by měl být 4 inputy a méně, podle toho jestli existuje cena s daným materiálem v db.

Vůbec nevím jak do toho.
Děkuji za rady.

K.
Tori
Profil
Seznam materiálů máte v DB a čtete odtamtud? Pak by šlo omezení přidat tam:
SELECT m.id, m.nazev 
FROM materialy m
INNER JOIN 
    (SELECT DISTINCT id_materialu 
     FROM cenik
     WHERE nejake-dalsi-omezeni) pm ON pm.id_materialu = m.id
ORDER BY nazev
anebo
SELECT m.id, m.nazev 
FROM materialy m
WHERE EXISTS 
    (SELECT * 
     FROM cenik c
     WHERE c.id_materialu = m.id AND nejake-dalsi-omezeni)
ORDER BY nazev
(zkuste EXPLAINEM zjistit, co je lepší - nevím z hlavy). Asi by to pak chtělo index na ID materiálu v ceníku, aby se pro zjištění dostupných materiálů nemusela procházet celá tabulka.
Kolemjdouci
Profil *
Díky,
vyzkouším. Materiály jsou v db jako číslo v tabulce ceníku, v jiné tabulce nejsou, dále v php je to jen array.
Tori
Profil
Kolemjdouci:
Tak jen ten SELECT DISTINCT a v PHP podle ID doplnit názvy. Ale asi by bylo konzistentnější je mít také uložené v DB (i kdybyste s nimi vůbec nepracoval), aby se při případné záloze DB a ztrátě skriptu vědělo co je co.

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