Ihan lukossa ja ei tunnu vastausta löytyvän :)
Miten saan haettua tiedot seuraavasti.
SQL:ssä on varivaihtoehto sarake. Tallennan sinne esim. arvot 1,3,5,6,7,8
Haluan hakea ne PHP-koodilla vaikka jotenki tähän tyyliin. Tämä ei nyt varmaan ole oikein mutta onnistuuko mitenkään pukata taulukosta noita tietoja helposti?
Sarake varikoodit: 1,2,3,5,7,9
Mitähän ihmettä tuolla silmukassasi tapahtuu? Käytät olematonta muuttujaa $varikoodit, laitat sen taulukkoon ja sitten yrität hakea taulukosta jotain ihan muuta.
Sinun pitäisi selvästikin hakea $row-taulukosta tuo yksi sarake ja purkaa se taulukoksi explode-funktiolla.
$varit = explode(",", $row["varivaihtoehto"]);
Monen arvon tallentaminen yhteen sarakkeeseen on riskialtista: Tietokanta ei käsittele tällaista dataa lukulistana vaan tekstinä. Tekstiin on vaikeampi tehdä hakuehtoja kuten vaikka kaikkien punaisten tuotteiden haku. Tietokannassa ole mitään takeita siitä, että arvot olisivat ylipäänsä kelvollisia, vaan värivaihtoehtoina saattaisi lukea vaikka ”mitä tämä on minä en edes” tai ”<script>alert(document.cookie)</script>”, jolloin koodisi saattaa tuottaa ihan outoja tuloksia.
Niin ajatelinkin. Mikähän olisi paras vaihtoehto tälle systeemille. Ajatellaan että on kymmenen tuotetta ja kymmenen väriä ja luonnollisesti kaikkia saa sikinsokin eri väreillä?
Jotain vinkkiä :)
Yleensä relaatiotietokannoissa, kun tarvitaan monta-moneen liitosta, käytetään erillistä sidostaulua.
Eli tuotetaulu
1 Pöytä 2 Tuoli
Väritaulu
1 Punainen 2 Vihreä 3 Sininen
TuoteVärit taulu
(Id) Tuote Väri 1 1 1 2 1 2 3 2 1 4 2 3
Yleinen tapa monta moneen -relaatiossa on laittaa tuotteet (id, nimi, ym) yhteen tauluun, mahdolliset värit (id, nimi) yhteen tauluun ja näiden yhdistelmät (tuote_id, väri_id) kolmanteen tauluun. Hakuja voi sitten tehdä erilaisilla JOIN-kyselyillä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.