Elikkäs, olen nyt tehnyt tämän oppaat-alueen palaute-lomakkeen.
Tuota kun rupesin nyt testailemaan ja vääntelemään pidemmälle, niin mitenkä saan laheta_palaute.php -tiedostossa vaikka kaikki palautelomakkeen kenttien arvot omina muuttujina käsiteltäväksi?
Tämä lause on ilmeisesti se, jossa ne pitäisi jotenkin napata muuttujiinsa:
//muodostetaan merkkijono $_POST-taulukon alkioista foreach($_POST as $nimi => $arvo) { $palaute .= $nimi . ": " . $arvo . "\n"; }
Mielestäni sinun ei edes kannata ottaa niitä "omiin" muuttujiinsa, sillä kaikkien kenttien arvot ovat jo omassa alkiossaan $_POST nimisessä taulukossa.
Kyseinen foreach lauseke käy jokaisen $_POST taulukon alkion läpi ja ottaa kaiken datan yhteen muuttujaan talteen, kaikkien erillisten alkioiden sijasta, jotta se voidaan lähettää yhtenäisenä sähköpostilla.
Jos välttämättä tarvitset tiedot omiin muuttujiin niin voisitko kertoa miksi?
Ahaa, en tiennytkään että se tuo kaikki arvot valmiiksi omissa soluissaan.
Tarkoitus olisi katsos tutkia noita käyttäjän syöttämiä arvoja, että mitä käyttäjä on johonkin kenttään syöttänyt ja tehdä sitten jotain sen perusteella. Vaikka ladata eri sivu sen mukaan, minkä radiobuttonin on aktivoinut.
Mitenkä tuossa sitten pääsee käsiksi tämän $_POST-taulukon alkioihin?
Hoover kirjoitti:
Mitenkä tuossa sitten pääsee käsiksi tämän $_POST-taulukon alkioihin?
Ihan tavallisesti :)
$_POST on ns. superglobaali, joten se nakyy kaikkiin aliohjelmiin ilman mitaan ihmeellisempia kommervenkkeja. Sita voi kayttaa niinku ihan mita tahansa itsemaariteltyakin taulukkoa.
Njoo, no siis näissä .NET -kielissähän ainakin pääsee taulukon indeksinumeroilla Esim. Taulu[numero], niin mitenkä se "tavallisesti" sitten on?
Eihän tuossa voi tietää missä indeksissä on mitäkin tietoa jos kaikki tavara on samassa taulukossa sekasi. :o
Voisko vaikka esimerkin pistää. Varmaan äkkiä pääsisin kärryille, kun olen kuitenkin muita kieliä ohjelmoinut kohtuu paljon.
Jos lomakkeen kentän nimi on kentta, niin sen arvon löydät $_POST["kentta"].
PHP:ssa indeksi voi olla numero tai teksti.
Ahaa. No nyt selvisi tuo idea. Kiitoksia.
foreach($_POST as $nimi => $arvo) { $palaute .= $nimi . ": " . $arvo . "\n"; }
Voisiko joku vielä selittää mitä tuossa oikein tapahtuu, mahdollisimman yksityiskohtasesti.
esim. tuo $nimi => $arvo, niin mitäkö se tekee?
Miksi tässä on piste ennen yhtäkuin merkkiä: $palaute .= $nimi
Hoover kirjoitti:
Voisiko joku vielä selittää mitä tuossa oikein tapahtuu, mahdollisimman yksityiskohtasesti.
Käydään läpi kaikki $_POST-taulukossa olevat avain-arvo -parit, ja lisätään niiden arvot $palaute-muuttujaan.
Hoover kirjoitti:
esim. tuo $nimi => $arvo, niin mitäkö se tekee?
Kertoo, että taulukon avain halutaan muuttujaan nimeltä $nimi ja arvo muuttujaan $arvo.
Jos $_POST taulukko näyttäisi tältä:
$_POST['nimi'] = 'Blaze'; $_POST['ika'] = 'liikaa'; $_POST['hassuusaste'] = 78;
Olisi silmukan ensimmäisellä kierroksella $nimi = 'nimi' ja $arvo = 'Blaze', toisella kierroksella $nimi = 'ika' ja $arvo = 'liikaa' jne.
Hoover kirjoitti:
Miksi tässä on piste ennen yhtäkuin merkkiä: $palaute .= $nimi
$palaute .= $nimi on sama kuin $palaute = $palaute . $nimi
Blaze kirjoitti:
$palaute .= $nimi on sama kuin $palaute = $palaute . $nimi
...ja pisteellä tosiaan yhdistellään muuttujia PHP:ssä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.