2020. március 31., kedd

PHP alapok

Mi az a PHP?
A PHP kezdetben csak egy makrógyűjteménynek indult, ami a személyes honlapok programozását volt hivatott támogatni. Neve is innen ered: Personal Home Page (más források szerint Personal Homepage Programming). A PHP azonban túlnőtt kezdeti feladatán, és mára már egy komplett WEB-programozói nyelvvé alakult.

A PHP program szerkezete
Egy PHP program nem más, mint szokványos HTML kód, melybe PHP nyelvű kódrészleteket (szkripteket) illeszthetünk be.
A HTML kódon belül a PHP kód a <? és a ?> jelek közé kerül. Többsoros kód esetében a sorok végére pontosvesszőt kell tennünk. Íme egy egyszerű példa:
<HTML>
  <BODY>
    <b>Egy egyszerű összeadási művelet:</b><br>
    <?
    $eredmeny = 10 + 13;
    print "Tíz plusz tizenhárom = $eredmeny";
    ?>
    <br><br>
    <b>Ez pedig a pontos idő:</b> <?= date("H:i:s")?>
  </BODY>
</HTML>

Szerveroldali szkriptek és működésük
A PHP tulajdonképpen egy szerveroldali szkript nyelv. Ez a megfogalmazás elsőre bonyolultnak tűnhet, ám roppant egyszerű megérteni (és ha ezt megértjük, akkor a PHP lényegét már el is sajátítottuk).
A szerveroldali szkriptek a következőképp működnek:
1. A felhasználó beírja a böngészőbe a futtatni kívánt PHP program nevét (elérési útvonallal együtt).
2. A szerver, ahol a PHP program található, megkeresi a szóban forgó PHP fájlt, és egy értelmező program segítségével lefuttatja azt.
3. Futtatás közben egy úgynevezett "eredmény HTML oldalt" készít, melyet - miután a PHP kód végére ért - visszaküld a felhasználói oldalra a böngészőnek.
4. A felhasználó már csak ezt a PHP kód alapján készült HTML oldalt látja.


Az eredmény HTML oldal elkészítésének szabályai
A PHP-értelmező program az alábbi szabályokat veszi figyelembe a PHP kód értelmezése közben:
1. Ha HTML kódot talál, azt változtatás nélkül átmásolja az eredmény oldalra.
2. Ha PHP kódot lát, azt lefuttatja. Ha azt a parancsot kapja, hogy "Írd ki!", akkor a kiírandó szöveget az eredményoldalra írja ki, mégpedig az aktuális pozícióba. Ha bármilyen más parancsot kap, azt végrehajtja, és nem nyúl az eredmény oldalhoz.
A fentiekben ismertetett PHP kód eredmény oldala a következőképp nézne ki:
<HTML>
  <BODY>
    <b>Egy egyszerű összeadási művelet:</b><br>
    Tíz plusz tizenhárom = 13
    <br><br>
    <b>Ez pedig a pontos idő:</b> 19:35:06
  </BODY>
</HTML>

Kiíró parancs a PHP-ben
Mint azt a fenti példából is látjuk, a PHP-ben kétféleképpen adhatjuk ki az "Írd ki!" parancsot. Az első lehetőség a PRINT() függvény használata, melyet a következőképp használhatunk:
print("szöveg, amit ki szeretnénk írni");
A print függvény esetében a zárójeleket nyugodtan elhagyhatjuk:
print "szöveg, amit ki szeretnénk írni";
A kiíratásnak létezik egy egyszerűbb módja is, melyet kizárólag akkor alkalmazhatunk, ha a nyitó és záró PHP jelek között csak ezt az egy kiíró parancsot szeretnénk kiadni. Ekkor a nyitó jel után közvetlenül egy egyenlőségjelet kell kitennünk, majd ezt követi a kiírni kívánt szöveg:
<?= "szöveg, amit ki szeretnénk írni"?>
Első ránézésre szokatlan lehet, de PHP-vel nemcsak látható szöveget írhatunk ki az eredmény oldalra, de HTML kódot is. A következő két kódrészlet eredménye ugyanaz:

<HTML>
  <BODY>
    <?= "valami"?>
  </BODY>
</HTML>
    <HTML>
  <?
  print "<BODY>";
  print "valami";
  print "</BODY>";
  ?>
</HTML>

Változók használata
A PHP-ben a változók neve elé egy dollárjelet kell tennünk. A változók létrehozásának legegyszerűbb módja az értékadás:
$szam = 15;
$szoveg = "valami";
A változókat szövegeken belül is elhelyezhetjük. A szöveg kiírásakor a változó értéke a megadott helyen kerül kiírásra:
<?
$eletkor = 23;
print "Én most $eletkor éves vagyok."
?>
A fenti kód eredménye: "Én most 23 éves vagyok."

Szövegrészek és változók összefűzése
A PHP-ben a szövegösszefűzés jele a pont. A következő szöveget 3 részletben írjuk ki:
<?
print "Én most" . " 23 éves" . " vagyok."
?>
Szövegrészeket és különböző típusú változókat nyugodtan összefűzhetünk, az eredmény mindig szöveges típusú lesz:
<?
$eletkor = 23;
$szoveg = "éves";
print "Én most" . $eletkor . $szoveg . " vagyok."
?>
A fenti kódrészlet helyett a következőt is írhattuk volna:
<?
$eletkor = 23;
$szoveg = "éves";
print "Én most $eletkor $szoveg vagyok."
?>

Dátum- és időfüggvények használata
A dátum és időpont lekérdezésére leggyakrabban a DATE() függvényt használjuk:
<?= date("Y-m-d, H:i:s")?>
A vezérlő karakterek jelentése a következő: Y: év, m: hó, d: nap, H: óra, i: perc, s: mp.
Ezeket a betűket bármilyen sorrendben felhasználhatjuk, közéjük tetszőleges karaktereket tehetünk. A vezérlő karakterek helyére az aktuális érték kerül, a többi karakter érintetlen marad. Például kiírhatjuk a hónapot és az évet egy per-jellel elválasztva:
<?= date("m/Y")?>

Feltételes elágazás a PHP-ben
A PHP-ben a feltételes elágazás szerkezete leginkább a JavaScript-hez hasonlít:
if (feltétel) {
  [parancsok]
}
elseif (újabb feltétel) {
  [parancsok]
}
else {
  [parancsok]
}


Függvények szerkezete, meghívása és paraméterezése
A függvények létrehozása a PHP-ben szintén a JavaScript-hez hasonlóan történik:
function osszeadas ($szam1,$szam2) {
  $eredmeny = $szam1 + $szam2;
  print "$szam1 + $szam2 = $eredmeny";
}
A függvény meghívása:
osszeadas(15,30);
Az eredményoldalon ez kerül kiírásra: "45".
A fenti példában meghívtuk a függvényt, átadtunk két paramétert, majd a függvényen belül kiadtunk egy kiíró parancsot. Másik módja a függvények használatának, hogy a meghívott függvény egy értéket ad vissza, amit utána felhasználunk (például kiíratunk):
function osszead($egy,$ket) {
  $eredmeny = $egy + $ket;
  return $eredmeny;
}
A függvény meghívása:
print osszead(15,30);
Az eredményoldalon ismét ez kerül kiírásra: "45".


Űrlapok feldolgozása PHP-vel


Mezők az űrlapon
Az űrlapon minden mezőnek, amit el szeretnénk küldeni feldolgozásra, nevet kell adnunk. Általában bármilyen ékezet nélküli nevet használhatunk, erre nézve nincs különösebb szabály. A mező neve legyen rövid, és utaljon a mező tartalmára (pl. nev, jelszo, eletkor, stb.).
Gomboknak nem kell nevet adnunk, hiszen azokat nem küldjük el feldolgozásra.
Rejtett mezőknek nemcsak nevet, de értéket is kell adnunk, mivel a felhasználó ezt nem tudja megtenni.
Példaként vegyük a következő űrlapot, ahol minden mezőnek alapértéket is adunk:
<FORM action="feldolgozo.php" method="POST">
  <input type="hidden" name="rejtett" value="valami">
  Név: <input type="text" name="nev" value="Eza Nevem">
  <br>
  Jelszó: <input type="password" name="jelszo" value="123">
  <br><br>
  <input type="submit" value="Elküld!">
</FORM>

Mezők felhasználása változóként
A PHP feldolgozó-program futtatásakor az űrlapról átadott mezőket automatikusan változókként tudjuk kezelni: a változó neve a mező neve, értéke pedig a mező értéke lesz. Természetesen a változó neve előtt a kötelező dollárjelet is használnunk kell.
Ha a fenti űrlapot változtatás nélkül elküldjük feldolgozásra, a "feldolgozo.php" oldalon az átadott értékeket a következő kóddal tudjuk kiíratni az eredmény oldalra:
<?
print "<b>Név:</b> $nev <br>";
print "<b>Jelszó:</b> $jelszo <br>";
print "</b>Rejtett:</b> $rejtett";
?>
Ekkor az eredményoldalon a következőt olvashatjuk:
Név: Eza Nevem
Jelszó: 123
Rejtett: valami

Paraméterek átadása manuálisan egy URL-ben
Ha egy űrlapot küldünk el feldolgozásra, akkor paraméterként az űrlapon szereplő mezők nevét és értéküket adjuk át a feldolgozó PHP programnak.
Van viszont egy másik lehetőség is a paraméterek és értékeik átadására: egy URL-ben (például egy linkre kattintva) a feldolgozó program neve után egy kérdőjellel jelezzük, hogy paramétereket kívánunk átadni, majd ezután felsoroljuk a paraméterek nevét és értékét. A paraméter neve után egy egyenlőségjelet követően írjuk be a paraméter értékét. A paramétereket egymástól egy & jellel választjuk el.
Ha tehát a következő URL-t hívjuk meg (például egy link segítségével), akkor a feldolgozó program szemszögéből ugyanaz történik, mintha a fentebb kidolgozott űrlapot küldenénk el neki:
feldolgozo.php?nev=Eza Nevem&jelszo=123&rejtett=valami
A "feldolgozo.php" oldalon ekkor ugyanúgy három változót tudunk felhasználni (és kiíratni), névszerint: $nev, $jelszo és $rejtett.

Egy név alatt több érték átadása: tömb típusú mezők
Ha checkbox-ok egy csoportjának ugyanazt a nevet adjuk, és az összes négyzetet kipipáljuk, akkor egy név alatt több értéket fogunk elküldeni a feldolgozó programnak.
Hasonló a helyzet a többszörös kiválasztást engedélyező listák esetében is: a listának egy neve van, de több értéket is át szeretnénk adni (a kiválasztott sorok értékeit).
A feldolgozó PHP oldalon ezeket a mezőket nem változóként, hanem tömbként tudjuk majd felhasználni. Ehhez viszont az szükséges, hogy a mezők nevének végéhez a tömbre utaló [ ] jeleket is hozzá kell fűznünk!
Az alábbi példában három azonos nevű checkbox-ot készítünk, majd mindhármat bejelöljük, és így küldjük el az űrlapot a feldolgozó programnak:
<FORM action="feldolgozo.php" method="POST">
  Audi <input type="checkbox" name="auto[]" value="Audi">
  Lada <input type="checkbox" name="auto[]" value="Lada">
  BMW <input type="checkbox" name="auto[]" value="BMW">
  <br><br>
  <input type="submit" value="Elküld!">
</FORM>
Elküldés után a "feldolgozo.php" oldalon egy $auto nevű tömböt kapunk, melyet majd fel kell dolgoznunk (például kiíratjuk az elemeit, vesszővel elválasztva). A PHP oldalon a tömb neve után már nem kell kitennünk a [ ] jeleket!
Először azonban azt kell megvizsgálnunk, hogy kaptunk-e egyáltalán ilyen nevű tömböt! Ha ugyanis egyik checkbox-ot sem jelöljük ki, akkor egyáltalán nem kapunk $auto nevű tömböt, így azt fel sem tudjuk dolgozni! Ez csak a checkbox-okra és a rádiógombokra igaz, a többi mezőtípusra nem! Ha tehát egy szöveges mezőt üresen küldünk el, akkor ettől még lesz olyan nevű változónk, csak az értéke üres lesz.

Változó és tömb létezésének vizsgálatára a következő függvényt használhatjuk:
isset($valtozo) vagy isset($tomb)
Az isset() függvény visszaadott értéke igaz (true), ha létezik ilyen nevű változó vagy tömb, és hamis (false) ha nem létezik.
A fenti, checkbox-okat tartalmazó űrlapot feldolgozó PHP oldal kódja tehát így kell, hogy kezdődjön:
if (isset($auto)) {
  ...tömb feldolgozása...
}
Ha létezik $auto nevű tömb, akkor elkezdhetjük annak feldolgozását.

Tömbök feldolgozása
Egy tömb elemein az alábbi ciklus segítségével futhatunk végig:
foreach ($tomb as $elem) {
  ...műveletek...
}
A ciklus minden egyes lépésében a következő tömbelemet beolvassuk az $elem nevű változóba, amivel már azt teszünk, amit szeretnénk. Ha elfogytak a tömbelemek, a ciklusnak vége, és a program futása a ciklus után folytatódik.
Ha tehát az űrlapon kiválasztott autók neveit ki szeretnénk iratni egymás alá, a következő feldolgozó programot kell elkészítenünk:
if (isset($auto)) {
  foreach ($auto as $autonev) {
    print $autonev . "<br>";
  }
}
A fenti kódban először megvizsgáljuk, hogy egyáltalán választottunk-e ki autót, majd a tömbön végiglépkedve kiírjuk a tömbelemek értékét, melyhez mindig hozzáfűzünk egy sortörést is.



Nincsenek megjegyzések:

Megjegyzés küldése