Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP palautelomake

Sivun loppuun

Hoover [20.11.2006 11:25:18]

#

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";
}

odys [20.11.2006 12:45:32]

#

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?

Hoover [20.11.2006 13:59:13]

#

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?

Blaze [20.11.2006 14:15:51]

#

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.

Hoover [20.11.2006 14:17:38]

#

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.

siirappi [20.11.2006 14:46:37]

#

Jos lomakkeen kentän nimi on kentta, niin sen arvon löydät $_POST["kentta"].

PHP:ssa indeksi voi olla numero tai teksti.

https://www.php.net/manual/fi/function.array.php

Hoover [20.11.2006 14:51:38]

#

Ahaa. No nyt selvisi tuo idea. Kiitoksia.

Hoover [22.11.2006 20:24:17]

#

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

Blaze [22.11.2006 20:46:35]

#

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

Cornix [26.11.2006 14:12:27]

#

Blaze kirjoitti:

$palaute .= $nimi on sama kuin $palaute = $palaute . $nimi

...ja pisteellä tosiaan yhdistellään muuttujia PHP:ssä.


Sivun alkuun

Vastaus

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

Tietoa sivustosta