Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: lomake requestit PHP, MySQL

ViKiNGi [25.11.2014 10:53:58]

#

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..)

dartvaneri [25.11.2014 15:58:42]

#

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".

p99o [25.11.2014 21:16:19]

#

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.

ViKiNGi [25.11.2014 21:37:34]

#

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!

The Alchemist [27.11.2014 09:46:00]

#

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);

ViKiNGi [27.11.2014 20:35:42]

#

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

##
if($_$POST["vari"]) {$vari = $_POST["vari"];
if($_$POST["koko"]) {$koko = $_POST["koko"];
##

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!

Metabolix [28.11.2014 10:00:19]

#

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ä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta