Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: kaksi submit -nappia

Sivun loppuun

Jantse [20.10.2005 11:42:33]

#

Kuinka voidaan yhteen lomakkeeseen (joka siis sisältää useita kävijän täyttämiä tietokenttiä) saada kaksi submit -nappulaa, joista molemmat käyttävät omaa
"<form action="joku_tiedosto.php" method="POST">" koodiaan...

Eli toisesta napista olisi tarkoitus lähettää tiedot sähköpostiin ja koota tiedot tulostusta varten, toisesta nappulasta tulisi koota tiedot toisenmoista tulostusta varten.

kayttaja-2791 [20.10.2005 11:51:08]

#

JS kikkare pikaisella googletuksella:
http://www.codingforums.com/showthread.php?t­=67793

Järkevämpää liene lähettää tiedot samaan paikkaan josta sitten ohjataan ne oikeaan paikkaan vaikka PHPn header-funktiolla. Halutun actionin tarkistus voi olla vaikka radiovalinnassa taikka kahdessa submit napissa joissa on eri value, sitten vain tarkistetaan PHP:llä kumpaa nappia käyttäjä on painanut.

Blaze [20.10.2005 13:32:41]

#

Ei mitään javaskriptiä.

lomake:

<form action="skripti.php" method="post">
  <input type="submit" name="meilaa" value="Meilaa" />
  <input type="submit" name="printtaa" value="Printtaa" />
</form>

skripti.php:

<?php
if(isset($_POST['meilaa'])) {
  // meilaa-nappia painettiin
  mail(...);
} else if(isset($_POST['printtaa'])) {
  // printtaa-nappia painettiin
  print_r($_POST);
} else {
  // kumpaakaan ei painettu
   echo 'Mitä yrität?';
}
?>

Jantse [20.10.2005 16:46:50]

#

Blazen esimerkki toimi sellaisenaan, mutta kun pistän esim. "// meilaa-nappia painettiin" kohdan alle pitkän rimpsun php ja html koodia ei enää toimikaa.
antaa seuraavan virhekoodin
"Parse error: parse error, unexpected $ in /html/act_form.php on line 457"


Eli voisiko Blazen esimerkkiä käyttää siten, että kahdesta nappulasta ohjataan uudelleen "act_form1.php" ja "act_form2.php" -sivuille...

ajv [20.10.2005 17:01:48]

#

Voi toki, mutta jos lähetät jotain dataa sen lomakkeen mukana, niin se data ei välity enää suoraan sinne uudelleenohjatulle sivulle.

Uudelleenohjaus tapahtuu lähettämällä header()-funktiolla Location-otsake:

header('Location: act_form2.php');

Niin ja kuulemma mielummin pitäisi käyttää kokonaisia osotteita:

header('Location: http://sivu.si/act_form2.php');

Olga [20.10.2005 17:21:04]

#

Ja tuosta virheestä vielä... eli korjaat vaan tuon mainitun virheen (ja muut jos on), niin sittenhän se toimii.

Lebe80 [20.10.2005 19:08:17]

#

jep, eli sinulla on vain kirjoitusvirhe rivillä 457 tai 456. Näyttäisi olevan $ eli sinulla on joko väärin kirjoitettu muuttuja, tai hipsut jäänyt sulkematta. Tai sinulla on jäänyt ; (puolipiste) laittamatta edellisen rivin loppuun. Huolimattomuutta huolimattomuutta

leftover [22.10.2005 20:46:48]

#

Tähän väliin pieni varoituksen sana, kun lomakkeessa on useampi submit-painike, älä missään tapauksessa upota ensimmäiseen painikkeeseen ainakaan toimintoa "poista kaikki tiedostot ja hakemistot sekä vaihda rootin salasana". Jotkin selaimista nimittäin kaivavat ensimmäisen löytyvän submit-painikkeen jos käyttäjä painaa input type="text" lomakekomponentissa enteriä.

Vihjeenä vielä, jos haluat kuljettaa post-dataa sivusiirtojen välissä, kannattaa lisätä sivujen alkuun session_start() ja koodiin ennen uudelleenohjausta $_SESSION['POST'] = $_POST; Nyt sen sijaan että kaivaisit uudelleenohjaussivulla dataa $_POST-taulukosta, löytyy kaikki $_SESSION['POST'] alta.


Sivun alkuun

Vastaus

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

Tietoa sivustosta