Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Lomakkeella siirtyminen

Tuxu [07.06.2007 15:07:08]

#

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

matpit [07.06.2007 15:46:27]

#

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.

Tuxu [07.06.2007 16:39:25]

#

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?

EgeTheGod [07.06.2007 16:43:30]

#

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

matpit [07.06.2007 17:39:15]

#

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.

Tuxu [07.06.2007 23:48:42]

#

EDIT: Joo, sain toimimaan, kiitos kaikille avusta ;D

Vastaus

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

Tietoa sivustosta