2012. január 15., vasárnap

PHP - Űrlapkezelés

Végre elérkeztünk a várva várt űrlapkezeléshez. Megismerkedünk a $_GET és a $_POSTváltozókkal és készítünk egy próbaoldalt is.

Azt már tudjuk a HTML leckéből, hogy az űrlapokat hogyan hozzuk létre HTML-ben. Ha nem, akkor nézzünk utána. Azt is tudjuk, hogy az űrlap az két módon tudja átadni az adatokat a php-nek (get és post). Azt is tudjuk, hogy mit jelent

  • get - az űrlap adatai látszódnak az URL-ben. Akkor hasznos, ha pl. könyvjelzőként mentjük el, hiszen nem kell mindig újraírni. Jelszavaknál és nagyobb tartalmaknál ne használjuk.
  • post - az űrlap adatai titkosak. Ezt foglyuk mi is használni.
Ismerkedjünk meg a $_POST-tal (a get is ugyan úgy működik, csak POST helyett GET).
Mi is az a $_POST?
   A $_POST valójában egy tömb, mely tartalmazza az űrlap összes elemét név szerint indexelve (tehát name)
Például ha van egy szövegbeviteli mezőm:
   <input type="text" name="nevem"/>
Akkor a $_POST['nevem'] veszi fel a beviteli mezőben található értéket. 
Akkor használható, ha a form method értéke post (ha get, akkor  a $_GET működik).

Hozzunk létre egy űrlapot, ami nevet és életkort kér be. Method az legyen post, az action pedig a php fájl neve (amiben benne lesz a most készülő űrlapunk).

<form action="alap.php" method="post">
Név: <input type="text" name="fname" />
Kor: <input type="text" name="age" />
<input type="submit" name ="submit" />
</form>

Most a php kódrészbe kiírjuk a nevet és az életkort.

<?php
echo "Név: " . $_POST['fname'] . " Kor: " . $_POST['age'];
?>

Az oldalunk még nem tökéletes, hiszen az előtt próbálja kiírni az adatokat, mielőtt megadtuk. Tehát amikor betöltjük az oldalt a php kód lefut, de várja a fname és age adatokat, amik még nincsenek, mert nem adtuk meg. 
Emlékszünk még az isset() függvényünkre? Azt vizsgálja, hogy a változó kapott-e már értéket. Ennek segítségével nézzük meg a forgatókönyvet:

HA (a $_POST['submit']-nak már van értéke, mert rákattintottam)
{
   AKKOR írja ki a nevet és a kort;
}

Ezt persze egy iffel oldom meg:

if(isset($_POST['submit']))
{
   echo "Név: " . $_POST['fname'] . " Kor: " . $_POST['age'];
}

Ha a method get, akkor is ugyanígy járunk el, csak $_POST helyett $_GET- et használunk.

A befejező feladat az űrlapunk tökéletesítése. 
Legyen az a feladat, hogyha az illető a gombra kattint, akkor a szöveg ne tűnjön el a szövegdobozokból. 

A php kódomat módosítom, hogy a két adatot két változóban tárolja:

if(isset($_POST['submit']))
{
$name = $_POST['fname'];
$age = $_POST['age'];
echo "Név: " . $name . " Kor: " . $age;
}

Ha emlékeztek, akkor a szövegdobozoknak van egy value attribútumuk, ami az alapértéket jelöli. Tehát csak egyszerűen ennek az alapértéke legyen a változó.

Name: <input type="text" name="fname" value="<?php echo $name?>" />
Age: <input type="text" name="age" value="<?php echo $age?>"/>

Az eredmény első indításra egy krikszkraksz lesz, hiszen még nincsenek meg a változóink. Csak annyit kell tenni, hogy a value éréke is az isset($_POST['submit']) feltételhez legyen kötve.

Tehát: 
CSAK AKKOR LEGYEN ALAPÉRTÉKE, HA MÁR RÁKATTINTOTTAM A GOMBRA

if(isset($_POST['submit'])) 
{
echo $age;
}

A végeredmény tehát a következő lesz (html, head, body tagok nincsenek itt):

<?php
if(isset($_POST['submit']))
{
$name = $_POST['fname'];
$age = $_POST['age'];
echo "Név: " . $name . " Kor: " . $age;
}
?>
<form action="alap.php" method="post">
Name: <input type="text" name="fname" value="<?php  if(isset($_POST['submit'])) {echo $name;}?>" />
Age: <input type="text" name="age" value="<?php  if(isset($_POST['submit'])) {echo $age;}?>"/>
<input type="submit" name ="submit" />
</form>

Ezt mindenképpen alap.php néven mentsük el.

A következő leckékben az eddig megszerzett tudásunkkal készítünk weboldalakat és oldunk meg problémákat :D

1 megjegyzés:

  1. Üdv.
    Nyelvi hiba a http://htmlkezdoknek.blogspot.com/2012/01/php-urlapkezeles.html oldalon, a

    "post - az űrlap adatai titkosak. Ezt foglyuk mi is használni."

    nyelvi hiba foglyuk (főnév)= lyukas fog
    fogjuk (ige v. segédige)= a helyes ez esetben.
    Kérem javítani.
    Köszönettel

    VálaszTörlés