Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Alert ja php

novari [14.07.2010 10:53:16]

#

En oikein tiedä uskaltaako näin tyhmää kysymystä täällä esittää voi saada päin naamaa.
Teen ensimmäistä javascript viritelmää mutta mistään en löydä tietoa miten se liitetään php:hen että se toimii.
Minulla on otsikko form ja textarea. Talletus napinpainalluksen jälkeen tarkistan että otsikko on annettu ja jos ei ole niin javascriptillä tulostaisin alert viesti-ikkunan jossa on huomautus tuosta puutteesta.
Olen löytänyt nettiä kolutessani kaikenlaisia ratkaisuja mutta ne perustuvat tapahtumankäsittelijöihin.
Olen kokeillut script tagien kanssa ja funktiolla mutta huonoin tuloksin. Miten homma pitäisi toteuttaa?

<?php
if (($_POST["talleta"]!="") && ($_POST["otsikko"]=="")){
	tähän virheilmoitus
}
?>

vehkis91 [14.07.2010 10:59:55]

#

Onko sulla virhe tossa ehdossa?


Pitäiskö seuraavan

($_POST["talleta"] != "")

// olla näin:
($_POST["talleta"] === "")

Antti Laaksonen [14.07.2010 11:12:17]

#

JavaScript-koodi suoritetaan selaimessa, kun taas PHP-koodi suoritetaan palvelimella. Tämän vuoksi JavaScriptiä ja PHP:tä ei voi kirjoittaa sekaisin. Seuraavassa on yksi toteutus, jossa on ideana tarkistaa ensin selaimessa JavaScriptillä, onko otsikko tyhjä, ja sen jälkeen palvelimella PHP:llä, onko otsikko tyhjä. Jälkimmäinen tarkistus on tarpeellinen, koska kaikissa selaimissa ei ole käytössä JavaScript.

*** lomake.html
<script>
function tarkista() {
    if (document.lomake.otsikko.value == "") {
        alert("Otsikko on tyhjä!");
        return false;
    } else {
        return true;
    }
}
</script>

<form name="lomake" action="kasittely.php" method="post">
<input type="text" name="otsikko">
<input type="submit" name="nappi" value="Lähetä" onclick="return tarkista()">
</form>
*** kasittely.php
<?php
if ($_POST["nappi"] != "") {
    if ($_POST["otsikko"] == "") {
        echo "Otsikko on tyhjä!";
    } else {
        echo "OK";
    }
}
?>

Macro [14.07.2010 11:27:55]

#

Voithan myös tehdä näin:

<?php
if(empty($_POST["otsikko"])) {
?>
  <script type="text/javascript">
    alert("Otsikko on tyhjä!");
  </script>
<?php
}
?>

Metabolix [14.07.2010 11:36:13]

#

Macro, tuossa kuitenkin voi aloittelijalle syntyä harhaluulo, että PHP:n suoritus jatkuisi vasta virheilmoituksen jälkeen. Näinhän ei toki ole, vaan PHP suoritetaan ensin ja JS vasta sitten, kun sivu on päässyt selaimelle asti.

Antin ratkaisu on käyttäjien kannalta paras: JS:ää tukevat saavat ilmoituksen jo ennen palvelimen häiritsemistä, ja ilman JS:ää näkyy sitten PHP:n tekstimuotoinen ilmoitus.

novari [14.07.2010 12:30:43]

#

Kiitos Antti!
Pieni askel eteenpäin javascriptin opettelussa. Kokeilin tuolla tavalla ja sehän toimii.

Macro [14.07.2010 20:26:48]

#

Metabolix kirjoitti:

Macro, tuossa kuitenkin voi aloittelijalle syntyä harhaluulo, että PHP:n suoritus jatkuisi vasta virheilmoituksen jälkeen. Näinhän ei toki ole, vaan PHP suoritetaan ensin ja JS vasta sitten, kun sivu on päässyt selaimelle asti.

Niin, mutta minusta oma ratkaisuni vastasi esimerkkiä aloitusviestissä: Virheen tarkistuksessa IF-lohkossa tulostetaan Javascriptin pätkä, joka tekee ilmoituksen.

Tosiaan Antin esimerkki on parempi, se toimii Javascript-tuella kuin ilmankin.

Vastaus

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

Tietoa sivustosta