Mitenkä formille oikein voi luoda input kenttiä, esim. painamalla jotain nappia? Sen pitäisi vielä toimia niin, että kun käyttäjä tulee formille ja alkaa täyttämään formin kenttiä, niin jo syötetyt tiedot eivät häviä formilta kun painetaan nappia joka lisää kenttiä johonkin tietoon.
Tässä on esimerkki joka vähän selventää tilannetta:
Kysymys 1: Viinit
Nimi | Vuosikerta [kenttä1] | [kenttä2]
Eli näitä kenttä1 ja kenttä2 -kenttiä tulisi lisää aina kun painetaan jotain nappia. Tietysti siihen voisi tylysti lätkästä 10 kenttää heti, mutta se on karun näkönen jos siellä on tarpeeton määrä kenttiä.
Itse pidemmittä harkinnoitta toteuttaisin tämän luultavasti lähettämällä getillä haluttujen kenttien määrän ja silmukoittaisin kenttiä sitäkautta. Nappulaan laittaisin lähettämään yhden suuremman(+1) muuttujan arvon, joka silmukasta tulloo, ja homma pelaa, toivottavasti.
Hmm... tuo voisi toimia. JavaScript varmaan olisi kans, mutta mieluummin teen kuitenkin ilman sitä.
Tee JavaScriptillinen ja scriptitön versio erikseen. Ensimmäinen vie vähemmän kaistaa ja on täten nopeampi, sekä myös helppokäyttöisempi käyttäjälle. Scriptittömässä versiossa käytä kenttien nimien perässä hakasulkuja, jolloin kentät löytyvät PHP:ssä $_POST-taulukosta taulukkona. Et tarvitse erillistä kenttien määrää ilmoittavaa muuttujaa.
<?php sarakkeet = array("nimet", "vuosikerrat", ..) // lomakkeen kenttien nimet // tämä nyt tulostaa vähän turhaan tyhjät valuet uusille formin kentille, voi jättää // poiskin ja tulostaa suoraan ne kentät, ei vaan tartte kahesti kirjotella samaa koodia tän avulla function tulostaSarake(val1 = "", val2..) { loop (sarakkeet as sarake) tulosta '<input name="' . $sarake . '[]" value="' . $val1 . '" />'; } kenttienLukumaara = count($_POST['nimet']) tulosta form loop (i = 0; i < kenttienLukumaara; i++) { tulostaSarake($_POST['nimet'][0], .. // tähän siis muut kentät, joita lomakkeesta löytyy tulostaSarake() // tulostaa siis uuden tyhjän sarakkeen ?>
Aihe on jo aika vanha, joten et voi enää vastata siihen.