Hei,
Miten olette ratkaisseet tämän kaltaisen ongelman;
esimerkki vaikkapa verkkokaupasta:
- verkkokaupassa on monta tuotetta, jonka jokaisen alle voidaan heittää valintamääritelmät koko, väri, jne.
normaalisti lomakerequestina osaan kyllä kirjoitella $_POST[""] esim. väri, mutta kun tässä kohtaa ajattelin hakea tuon määritelmän tietokannasta ja samalla tuotteella voi olla montakin valintaa ennen ostoskoriin lisäystä.
esim:
- Ice peak takki
-> kokomäärittelyt M,L, XL, XXL (haettu tietokannasta)
-> värimäärittely musta, harmaa, mustaharmaa, sininen (haettu tietokannasta)
Sitten toinen tuote
- Lippalakki
-> vain värimäärittely tässä kohtaa (musta, sininen, punainen,..) (haettu tietokannasta)
- pyörän ketju
-> pituusmäärittely 30ketjulenkkiä, 32 ketjulenkkiä, jne (haettu tietokannasta)
kerron enemmän jos ei auennut. Tarkoitus on siis saada järjestettyä dynaaminen (muuttuva requesti/posti/getti koodiin..)
Eikös selectillä toimi?
<select name="color"> <option value="red">Punainen</option> <option value="yellow">Keltainen</option> <option value="green">Vihreä</option> </select>
Nyt jos valittuna on keltainen, sisältää $_POST["color"] arvon "yellow".
Muistaakseni itsekin kysyin tätä asiaa joskus aikaisemmin. Ongelmahan on kyselyn muodostamisessa se, että kaikkia arvoja ei laiteta kyselyyn, jos käyttäjä näin ei halua.
Jos tuon color:yellow jättää pois (värillä ei väliä), pitää kyselystäkin se ottaa kokonaan pois.
esim:
select productid from products where colorid IN (1,2,3,4) AND price < priceMax
// eri ehdoilla (hinta) select productid from products where price > minPrice AND price < priceMax
Ratkaisu on jonkin sortin kikkailu ja kyselyn rakentaminen sen pohjalta. En tiedä miten tuon tekisi aivan parhaimmalla tavalla.
Juu, kyllä ihan tuon tiedän, mutta tätä lähinnä tarkoitin..
ei tarvitsisi kirjoitella jokaista valmiiksi koodiin montaa erilaista käsin.
$vari = $_POST["vari"]; $koko = $_POST["koko"]; $leveys = $_POST["leveys"]; $koko_kenka = $_POST["koko_kenka"];
jne... tuollaista lähinnä tarkoitin.. saisi haettua ihan tietokannasta tuon "värin" ja lyötyä requestin.. meneeko jotenkin $tietue[0] toimintaan vai..?
Mod. lisäsi kooditagit!
Mä en tajua, miksi sä joutuisit kopioimaan arvot taulukosta erillisiin muuttujiin. Muuttujat ovat taulukon indekseinäkin ihan samanlaisia muuttujia. Jos aiot puhua jostain "$tietue[0]:sta", niin selitä nyt sitten myös, mikä helvetti on $tietue ja miten se liittyy asiaan.
Yleensähän toi menee niin, että sulla on lomake, jossa on tietyt kentät, ja luet syötteestä ($_POST, $_GET, $munomadata) lomakkeeseen lomakkeen kenttien sisältämät arvot eli toisin sanoen lomakkeen data siivilöidään erilleen yleisestä syötteestä. Samalla tietysti varmistetaan, että jos lomakkeella on kenttä 'foo' mutta syötteessä ei sitä ole, niin lomakkeen dataan se kenttä kuitenkin ilmestyy jollain järkevällä oletusarvolla ('red', 1, null tms.).
Lomakkeen datasta rakennetaan sen jälkeen hakukysely.
Pseudo-php:nä:
$form = new MyForm; $form->setData($_POST); $form->validate(); $values = $form->getData(); $database->search($values);
Hei,
Ei tarvitse kiukutella nyt sitä, että en hallitse näitä juttuja ihan täysin. Ei ole nyt oikein osunut kohdalle mallia miten tämän itse ratkaisisin.
idea on siis se, että ei tarvitse kirjottaa valmiiksi koodiin
koska ajatuksena on kaivaa jokaiselle tuotteelle erikseen tietokannasta mitä optiovalintoja pitää valita. SQL:llä vaan haetaan lomakkeet ruutuun ja _POSTit sitten jotenkin niin, että ne voidaan lisätä vaikkapa ostoskoriin.
kiitos kuitenkin avusta etukäteen.
Mod. lisäsi kooditagit!
Miten eri vaihtoehdot on tallennettu tietokantaan? Mikä niiden hakemisessa on vaikeaa? Vai onko vaikeus select-laatikon tulostamisessa vai jopa select-laatikosta saadun tuloksen siirtämisessä ostoskoriin? Millaisessa muodossa sinulla on ostoskori? Miten tallennat tietokantaan tiedon valituista ostoksista ja niihin liittyvistä valinnoista?
On siis täysin epäselvää vielä, mitä sinulla jo on ja mitä pitäisi lisätä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.