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.
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.
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:
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...
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');
Ja tuosta virheestä vielä... eli korjaat vaan tuon mainitun virheen (ja muut jos on), niin sittenhän se toimii.
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
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.