Olen aikaisemmin jo kysynyt tästä samasta asiasta, mutta en ole saanut edelleenkään tätä toimimaan. Edellisessä viestissä sain "Antti Laaksoselta" seuraavanlaisen koodin.
<?php if (isset($_POST['nappi'])) { if ($_POST['luku'] == 24) { header("Location: https://www.ohjelmointiputka.net/"); } echo "<p>Tuntematon luku!</p>"; } ?> <form action="linkki.php" method="post"> Kirjoita luku: <input type="text" name="luku"> <input type="submit" name="nappi" value="L�het�"> </form>
Jostain kummman syystä en tuota saanut toimimaan. Lisäksi pitäisi saada koodia muutettua niin, että olisi useita vaihtoehtoja, ja eri luvuille on määritetty aina oma linkki. Aloittelija kun olen, tässäkin vähän tarvitsisin apua ;D
Laitat vaan yksinkertaisesti toisen if -lauseen toisen perään:
if (isset($_POST['nappi'])) { if ($_POST['luku'] == 24) { header("Location: https://www.ohjelmointiputka.net/"); } if ($_POST['luku'] == 25) { header("Location: http://www.google.fi"); } // Jne.. Voit myös käyttää elseif -sanaa if:n sijaan, silloin ehto tarkistetaan vain jos ensimmäinen if ei ole tosi. Tässä tapauksessa sillä ei kuitenkaan taida olla väliä. echo "<p>Tuntematon luku!</p>"; }
Voit myös optimoida koodiasi käyttämällä funktioita, esimerkiksi näin:
// Koodin alkuun, enne if -lauseita function siirry($minne) { header("Location: " . $minne); } // ..ja if lauseet näin: if ($_POST['luku'] == 25) { siirry("https://www.ohjelmointiputka.net"); }
Funktioiden käyttö on hyvä tapa, ja se tekee koodista/scriptistä selvemmän, tosin tässä se ei niinkän näy se ero kun funktio toteuttaa vain yhden rivin koodia.
Tässä koodinpätkässä:
if (isset($_POST['nappi'])) { if ($_POST['luku'] == 24) { header("Location: https://www.ohjelmointiputka.net/"); } if ($_POST['luku'] == 25) { header("Location: http://www.google.fi"); } // Jne.. Voit myös käyttää elseif -sanaa if:n sijaan, silloin ehto tarkistetaan vain jos ensimmäinen if ei ole tosi. Tässä tapauksessa sillä ei kuitenkaan taida olla väliä. echo "<p>Tuntematon luku!</p>"; }
Kirjoittaessa lomakkeeseen luvun 24, ei koodi siirrä osoitteeseen https://www.ohjelmointiputka.net/, mutta kun kirjoitan 25, siirtää koodi Googleen?
Missä vika?
Tai sitten switch-case -lauseella.
if (isset($_POST['nappi'])) { switch($_POST['luku']) { case 24: //Elikkä jos $_POST['luku'] on 24 header("Location: http://ohjelmointiputka.net"); break; case 25: // Jos $_POST['luku'] on 25 niin tehdään seuraavat: header("Location: http://sivu25.fi"); break; //Ja niin edespäin } //lopetetaan switch } //lopetetaan if
Tuxu kirjoitti:
Tässä koodinpätkässä:
if (isset($_POST['nappi'])) { if ($_POST['luku'] == 24) { header("Location: https://www.ohjelmointiputka.net/"); } if ($_POST['luku'] == 25) { header("Location: http://www.google.fi"); } // Jne.. Voit myös käyttää elseif -sanaa if:n sijaan, silloin ehto tarkistetaan vain jos ensimmäinen if ei ole tosi. Tässä tapauksessa sillä ei kuitenkaan taida olla väliä. echo "<p>Tuntematon luku!</p>"; }Kirjoittaessa lomakkeeseen luvun 24, ei koodi siirrä osoitteeseen https://www.ohjelmointiputka.net/, mutta kun kirjoitan 25, siirtää koodi Googleen?
Missä vika?
Outoa, kyllä se vain minulla toimii. Ei nyt muuta tule mieleen, kuin että kokeile vielä kerran uusiksi, avaa vaikka selain uudelleen, ja kirjoita suoraan 24. Suosittelen myös tuon EgeTheGodin lähettämää switch -lausetta, tulee vähemmän purkkamainen scripti. :P Elseä tuossa switchissä vastaa default muistaakseni.
case 24: //plaplap... break; default: //Tuntematon
Voit nyt vaikka kokeilla laittaa vielä nuo 24 ja 25 lainausmerkkeihin.
EDIT: Joo, sain toimimaan, kiitos kaikille avusta ;D
Aihe on jo aika vanha, joten et voi enää vastata siihen.