Php

Allikas: Kuutõrvaja
Redaktsioon seisuga 9. aprill 2010, kell 12:43 kasutajalt Jj (arutelu | kaastöö) (PHP skript)

Sissejuhatus

PHPd kasutatakse dünaamiliste veebilehtede loomiseks. PHP töötab veebiserveris ning väljastab tavalist HTML teksti. PHPd võib näiteks kasutada selleks, et vahendada andmebaasi läbi veebi.

Andmebaasi kasutavate skriptide kirjutamisel tuleks arvestada järgmist

  • andmebaasipäringud tuleb sooritada võimalikult korrektselt, näiteks selliselt, et andmete sorteerimine ja filtreerimine toimub SQLi vahenditega, mitte hiljem skriptis
  • sisestades andmebaasi uusi andmeid või muutes olemasolevaid, kontrollige skriptis eelnevat nende sobivust, näiteks, et poleks lubatud sisestada arvulisse andmevälja teksti

PHP skript

PHP skripti moodustavad käsud kirjutatakse <?php ja ?> märkide abil otse HTML faili, kusjuures faili nime lõpus peab olema .php. Näiteks sellise sisuga fail php.php.

    <html>
    <body>
    <h1><?php echo "Tere päevast!"; ?></h1>
    <p>
    <?php 
      /* see on kommentaar, mida PHP mootor ignoreerib */
      echo "Mina olen PHP skritp!"; 
    ?>
    </p>
    </body>
    </html>

on samaväärne HTML-tekstiga

    <html>
    <body>
    <h1>Tere päevast!</h1>
    <p>Mina olen PHP skritp.</p>
    </body>
    </html>

Ekraanile kuvatakse tekst

   Tere päevast!
   Mina olen PHP skritp.

Veebiserver asendab <?php ja ?> märkide vahel asuva PHP käskude jada nende käivitamisel tekkinud väljundiga, antud juhul siis echo käskude väljundiga.

PHP käsud peavad lõppema semikooloniga (;) nagu

   echo "Tere päevast!";

PHP skripti sisse saab kirjutada kommentaare eristades nad sarnaselt C keele traditsioonile /* ja */ märkidega muust tekstist

   /* see on kommentaar mida PHP mootor ignoreerib */

Samuti kommenteerib '//' välja järgneva teksti kuni seda märget sisaldava rea lõpuni

   echo "Tere Priit"; // siin trükitakse välja tekst "Tere Priit"

Muutujad ja väärtuse omistamine

PHP skriptis saab kasutada arvulist ja tekstitüüpi muutujaid, samuti massiive ning teha nendega tehteid. Muutuja nime alguses on dollar ($), millele järgneb alakriips või tähemärk (a-z, A-Z) ning seejärel võib nimes sisalduda ka numbreid (0-9). PHP eristab väikesi ja suuri tähti. Näiteks on korrektne muutuja nime märkida selliselt

   $kordaja_1

Muutuja tüüpi ei pea enne kasutamist defineerima, piisab muutujale väärtuse omistamisest, mida tehakse võrdusmärgi abil. Näiteks omistame muutujaile väärtused ja teeme mõne tehte

    <?php
    $a = -15.5; $b= 20;
    $c = $a + $b;
    ?>
    <?php
    echo "$a korda $b on $c";
    ?>

Negatiivset arvu peab alustama -märgiga ning pealekomakohti eraldatakse ennekomakohtadest punktiga.

Pange tähele, et <?php ja ?> märkide vahel kasutatud muutujad omavad endisi väärtusi ka siis, kui neid hiljem uuesti kasutada mõnes järgmises samas dokumendis asuvas <?php ja ?> märkide vahel olevas PHP skriptis.

   <?php
   $d = "muinas";
   $e = "jutt";
   $f = $d.$e;
   echo "sõnesid $d ja $e saab kokku ühendada, tulemuseks on $f";
   ?>

Sõnedega (ingl. k. string) tegelemisel on põhiliseks tehteks nende sobivas järjekorras kokkuühendamine. Allpool näitame, kuidas sõne osadeks lahutada jms.

Omistamisel saab kasutada

   $a = 5;
   $a = $a + 4;

asemel samaväärset kuid lühemat kirjaviisi

   $a = 5;
   $a += 4;

Muutujale saab omistada operatsioonisüsteemi käsu väljundit kasutades graaviseid. Käsk antakse kasutaja httpd õigustes. Näiteks omistame muutujale $aeg väärtuseks süsteemi aja

   $aeg=`date`;

Aritmeetilised tehted

Aritmeetilisi tehteid

  • "+, -" - liitmine ja lahtutamine
  • "*, /, %" - korrutamine, jagamine ja jääk

tehakse arvväärtustega. Näiteks

   <?php
   $a = 3.5;
   $b = 2;
   $korrutis = $a * $b;
   echo "$a ja $b korrutis on $korrutis";
   ?>

Kui arvutuses kasutada täisarvu ja komakohtadega arvu, siis tulemus sisaldab samuti komakohti.

Juhtstruktuurid

Skripti käigu suunamiseks kasutatakse juhtstruktuure, mis valivad järneva tegevuse vastavalt seatud tingimustele. Tingimusi esitatakse võrdlustehete <,>, <=, >=, ==, != abil. Võrdlustehete tulemusi (tõene, väär) saab omakorda kombineerida loogiliste tehete (and, or, xor, ! $a - not $a) abil.

Loogalisi sulge ({, }) kasutatakse käskude grupeerimiseks plokiks, mis täidetakse või täidetakse korduvalt.

if

if konstruktsiooni abil saab valida kahe võimaliku tegevuse vahel sõltuvalt tingimuse täidetusest.

Võrdleme kahte arvu omavahel

   $a = 5; $b = 6;
   if ($a > $b) {
       print "$a on suurem kui $b";
   } else {
       print "$a on väiksem või võrdne $b-ga";
   }

Kombineerides kahte tingimust loogilise tehtega võrdleme arve nulliga

   $a = 5; $b = 6;
   if ($a > 0 and $b > 0) {
       print "$a ja $b on nullist suuremad";
   } elseif ($a < 0 and $b <  0) {
       print "$a ja $b on nullist väiksemad";
   } else {
       print "$a ja $b on mõlemad nullid või erimärgilised";
   }

for

for-konstruktsiooni abil saab täita sama plokki käske kontrollitud arv kordi, kuni tingimus on tõene. Näiteks kirjutab skript ekraanile arvud ühest viieni

   for ($i = 1; $i < 6; $i++)
   {
   echo "$i
   ";
   }

$i=$i++ on samaväärne nagu $i=$i+1.

Sama tulemuse väljastab ka selline skript

   $i = 1;
   for (;;) {
       if ($i > 5) {
           break;
       }
       print $i;
       $i++;
   }

for (;;) vastab lõpmatule kordusele, kusjuures break annab käsu tulla kordusest välja.

while

while konstruktsiooni puhul täidetakse plokki seni, kuni tingimus on tõene. Trükime arvud ühest viieni välja ka while'i abil

   $i = 1;
   while ($i <= 5) {
       print $i++;  
       print ++$i;
       print 
   ;
   }

Tulemuseks on

   13
   35
   57

See näide demonstreerib ka eel- (++$i) ja järel- ($i++) inkrementeerimist.

  • eel-inkrementeerimisel (++$i) suurendatakse muutuja väärtust enne ja allest siis kasutatakse seda, näiteks trükitakse
  • järel-inkrementeerimisel ($i++) kasutatakse enne muutuja väärtust, näiteks trükitakse ja alles siis suurendatakse muutuja väärtust

do ... while

do ... while konstruktsioon on sarnane while'ga, erinedes selle poolest, et tingimust kontrollitakse peale ploki täitmist. Seega täidetakse plokki vähemalt üks kord. Näiteks trükime välja arvud ühest viieni

   $i = 0;
   do {
      print $i;
   } while ($i>0);

foreach

foreach - konstruktsioon võimaldab mugavalt täita plokis olevaid lauseid iga massiivi elemendi jaoks. Näiteks väärtustame viie-elemendilise massiivi $m ning trükime selle elemendid välja

   $m = array ("Jaan", "Peeter", "Marta", "Laura");
   $i=1;
   foreach ($m as $element) {
      print $i++.". $element
   ";
   }

Trükkimine

Teksti ja muutujate väärtuste ekraanile trükkimiseks kasutatakse käske echo, print ja printf. Käsud echo ja print on praktiliselt sarnased, väljatrükitav tekst tuleb kirjutada nende järele jutumärkide (") vahele. Näiteks trükib skript välja teksti, muutuja nimed ja nende väärtused

   $a = "Mari";
   $b = 5;
   $c = -2;
   $korrutis = $b * $c;
   echo "$b korda $c on 
   võrdne 
   $korrutis";
   print "
   ";
   print "\$a = $a";

echo või print argumendiks olev tekst võib ulatuda üle mitme rea tingimusel, et viimase lõpus on semikoolon (;). Soovides trükkida muutuja väärtuse asemel tema nime, tuleb põgeda $ tagurpidi kaldkriipsuga (\) nagu \$a.

Kui kasutada jutumärkide asemel ülakomasid, ei asendata muutujaid nende väärtustega

   $b = 5;
   $c = -2;
   $korrutis = $b * $c;
   echo '$b korda $b on $korrutis';

Soovides vormistada (format) väljundit paindlikumalt, tuleb kasutada käsku printf, mille süntaks on sarnane C vastavale käsule. Näiteks teeme arvutused ja trükime välja muutujate väärtused kahe pealekomakohaga

    $b = 1.3;
    print "< pre >";
    while ($b < 5)
    {
    printf ("%3.2f%6.2f\n", $b, $b*$b++);
    }
    print "< /pre >";

%6.2f tähendab, et trükkimisel tuleb korrutisele $b*$b++ vastav väli hoida vähemalt kuue positsiooni laiune, millest kaks on pealekomakohad. Vaikimisi täidetakse tühjad kohad tühikutega ja joondatakse paremale poole, so tühikud sisestatakse väärtusest vasemale. Siin on asjakohane kasutada HTMLi pre-tagi, sest muidu "sööb" brauser tühikud ära. Tulemus

     1.30     1.69
     2.30     5.29
     3.30    10.89
     4.30    18.49

Funktsiooni defineerimine

Kasutaja saab ise lisaks olemasolevatele funktsioone juurde meisterdada. Näiteks tekitame funktsiooni korruta(), mis vajab kahte arvulist argumenti, korrutab need omavahel ning tagastab tulemuse.

   $a = 2;  
   $b = 3;
   $tulemus = korruta($a, $b);
   print "$a * $b on võrdne $tulemus";

   function korruta ($a, $b) {
      $korrutis = $a * $b;
      $a = 10;
      $b = 15;
      return $korrutis;
   }

Tulemus

   2 * 3 on võrdne 6

Vaikimisi antakse funktsioonile üle muutuja väärtus, nagu näites. St kuigi funktsiooni sees defineeritakse $a ja $b väärtused ümber, ei mõjuta see skripti muutujate $a ja $b väärtusi. Need on sisuliselt erinevad muutujad, kuigi neil on samad nimed.

Soovides aga funktsiooni seest muuta skripti muutujaid, tuleb anda funktsioonile üle muutuja viide. Selleks kirjutatake muutuja nime ette ampersand (&)

   $a = 2;  
   $b = 3;
   $tulemus = korruta(&$a, &$b);
   print "$a * $b on võrdne $tulemus";

   function korruta ($a, $b) {
      $korrutis = $a * $b;
      $a = 10;
      $b = 15;
      return $korrutis;
   }

Tulemus

   10 * 15 on võrdne 6 

Üldiselt peetakse puhtamaks stiiliks, kui funktsioon ei muuda skripti muutujaid, sest nii on teinekord keerukas võimalikke vigu leida. Operatsioonid sõnedega

PHP pakub vahendeid tegeleda sõnedega (ingl. k. string). Näiteks ühendame kokku kaks sõnet, omistades tulemuse muutujale $koos

   $a = "Tere,";
   $b = " mina siin";
   $koos = $a.$b;

Käsuga strlen saab leida sõne pikkuse tähemärkides

   $sone = "Taavet ja Koljat";
   $pikkus = strlen ($sone);

Käsk strstr tagastab sõne, mille väärtuseks on tähemärgid alates leitud sõnest kuni lõpuni, näiteks

   $email = 'priit@zoo.edu.ee';
   $domain = strstr ($email, '@');              
   print $domain;   

tagastab @zoo.edu.ee.

Sõnest eraldab osa käsk substr, näiteks eemaldame kõik peale esimese tähemärgi

   $domain = "@zoo.edu.ee";
   $domaininimi = substr ($domain, 1)
   $domaininimi väärtuseks saab zoo.edu.ee.

Veebivormidega tegeledes kasutatakse tihti sarnase struktuuriga sõnesid "nimi=Villem&vanus=25&elukoht=Tartu+linn". Käsu parse_str abil on lihtne omistada muutujaile vastavad väärtused

   $str = "nimi=Villem&vanus=25&elukoht=Tartu+linn";
   parse_str($str);                          
   echo "$nimi";
   echo "$vanus";
   echo "$elukoht";

Massiiv

Massiivi tüüpi muutujat märgitakse sarnaselt tavalise muutuja nimega, kuid tema kasutamisel peab arvestama, et tegu on massiiviga. Näiteks defineerime massiivi ja trükime välja selle elemendid

   $mass = array ("Priit", "Jaan", "Memm", "Kana", "Ivo");
   $a = current ($mass);
   do  {
   print "$a
   ";
   } while ($a = next ($mass));

funktsioon current tagastab massiivi esimese elemendi väärtuse; next järgmise elemendi väärtuse.

Omades sõnet

   $sone = "Priit Jaan Memm       Kana  Ivo";

saab selle teisendada tühikute kohalt massiiviks käsuga split

   $mass = split (" +", $sone);

kus " +" on regulaaravaldis. Kui tulevase massiivi elemente eraldaks üks tühik, võiks kasutada sarnaselt käsku explode.

   $sone = "Priit Jaan Memm Kana Ivo";
   $mass = explode (" ", $sone);

Vastupidiselt, massiivi saab ühendada sõneks käsuga join

   $mass = array ("Priit", "Jaan", "Memm", "Kana", "Ivo");
   $sone = join (":", $sone);

tulemuseks on sõne

   Priit:Jaan:Memm:Kana:Ivo

Massiivi üksikute elementide poole saab pöörduda indeksi abil, indekseerimine algab nullist. Näikeks trükime üle ühe välja massiivi elementide väärtused

   for ($i=0; $i < sizeof ($mass); $i+=2)
   {
      print "$i. $mass[$i]
   ";
   }

Funktsioon sizeof tagastab massiivi elementide arvu ning konstruktsioon $i+=2 suurendab iga kordusega muutuja $i väärtust kahe võrra. Konstruktsioon $mass[$i] abil pöördutakse massiivi $mass $i-nda elemendi poole.

Käsk array_pop tagastab massiivi viimase elemendi väärtuse ja eemaldab ta massiivist

   $mass = array ("Priit", "Jaan", "Memm", "Kana", "Ivo");
   $viimane = array_pop ($mass);

Käsk array_shift tagastab massiivi esimese elemendi väärtuse ning eemaldab ta massiivist; ülejäänud elemendid nihutatakse ühe positsiooni võrra ettepoole

   $mass = array ("Priit", "Jaan", "Memm", "Kana", "Ivo");
   $viimane = array_shift ($mass);

Sarnaselt lisatakse masiivi algusse ja lõppu elemente käskudega array_unshift array_push

   $mass = array ("Priit", "Jaan", "Memm", "Kana", "Ivo");
   $elementide_uus_arv = array_unshift ($mass, "Laine", "Jaa");
   $elementide_uus_arv = array_push ($mass, "Leo", "Liina");

Tulemuseks on massiiv ("Laine", "Jaa", "Priit", "Jaan", "Memm", "Kana", "Ivo", "Leo", "Liina"), kusjuures mõlemad käsud tagastavad väärtusena uue massiivi elementide arvu.

Assotsiatiivne massiiv

Tavalises massiivis saab üksikute elementide poole pöörduda kasutades elemendi indeksit, mis on täisarvuline ja algab nullist. Defineerime massiivi

   $massiiv[0] = "Jaan";
   $massiiv[1] = "Peeter";
   $massiiv[2] = "Laur";

Näiteks pöördume teise elemendi poole

   print "$massiiv[1]";

Assotsiatiivse massiivi puhul võib see indeks olla ka tekstiline. Assotsiatiivse massiivi puhul nimetatakse indeksit võtmeks ja seda, millega võti on seotud, väärtuseks. Defineerime massiivi

   $inimesed["Priit"] = "21";
   $inimesed["Jaan"] = "54";

ning pöördume teise elemendi poole

   print "$inimesed["Jaan"];

Tulemusena tagastatakse väärtus 54.

Assotsiatiivsus tähendab, et andmed on sisuliselt paarikaupa seotud: näiteks nimi ja vanus. Esitame terviklikuma näite

   $inimesed = array ("Priit" => "21", "Jaan" => "54", "Memm" => "67", 
   "Kana" => "82", "Ivo" => "14"); 
   while (list ($nimi, $vanus) = each ($inimesed))
   {
   print "$nimi $vanus
"; }

Pikema massiivi korral võib selle sisu ulatuda üle mitme rea tingimusel, et viimase rea lõpetab semikoolon (;) nagu näites.

Esimesel kahel real defineeritakse massiiv $inimesed. Seejärel kasutatakse while kordust massiivi väärtuste väljatrükkimiseks. each tagastab iga kord kaks väärtust, mis omistatakse käsuga list muutujaile $nimi ja $vanus.

Teisendame tavalise massiivi assotsiatiivseks

   $inimesed = array ("Priit", "21", "Jaan", "54", "Memm", "67",
   "Kana", "82", "Ivo", "14");                    
   for ($i=0; $i < sizeof ($inimesed); $i+=2) {
      $ass_mass[$inimesed[$i]] = $inimesed[$i+1];
   }
   while (list ($nimi, $vanus) = each ($ass_mass))
   {
   print "$nimi $vanus
   ";
   }

Käsuga array_keys saab assotsiatiivsest massiivist kätte kõik võtmed, tagastatakse tavaline massiiv võtmenimelisi väärtusi

   $inimesed = array ("Priit" => "21", "Jaan" => "54", "Memm" => "67",
   "Kana" => "82", "Ivo" => "14");
   $votmed = array_keys ($inimesed);
   for ($i=0; $i < sizeof($votmed); $i++)
   {
   print "$votmed[$i]
"; }

Emaili saatmine

Saab seda teha mail funktsiooni kasutades näiteks sarnase skriptiga

<?PHP
$to = "kasutaja@test.ee";
$subject = "TEST SUBJECT";
$message = "Hello! \n";
$message .= "More blah blah blah \n";
$message .= "blah blah blah blah blah blah blah blah blah \n";
$headers = "From: kasutaja@test.ee \r\n" .
"Reply-To: kasutaja@test.ee \r\n" .
"X-Mailer: PHP/" . phpversion();
mail($to, $subject, $message, $headers);
echo $headers;
?>


MySQL-andmebaasiga suhtlemine

PHP pakub vahendid MySQL-andmebaasiga suhtlemiseks. Järgnevas näitame, kuidas kasutada MySQL palas tarvitatud andmebaasi puhul. Andmebaasiga suhtlemiseks peab PHP skript kõigepealt näitama andmebaasiserveri nime, kasutajanime, parooli ning kasutatava andmebaasi nime. Praktiliselt tähendab see, et need väärtused tuleb sisestada PHP skripti avatekstina, mis pole aga tingimata ebaturvaline, kuna PHP skripti ennast veebikoha külastaja ei näe.

Andmebaasi kirjete kuvamine

Skript kuvab kõigi andmebaasi kirjete sisu

   // Ühendume andmebaasiserveriga
   $ab = mysql_connect("www.zoo.edu.ee", "zoo", "zooparool");
   // valime andmetabeli
   mysql_select_db("zoo",$ab);
   // esitame päringu
   $tulemus = mysql_query("SELECT * FROM inimesed",$ab);
   print "< pre >";
   // kuni päringutulemuste lõppemiseni täidame nendega
   // assotsiatiivse massiivi $rida ning trükime selle elementide väärtused
   while ($rida = mysql_fetch_array($tulemus)) {
   printf ("%12s %15d %15s\n",$rida["nimi"], $rida["vanus"], $rida["elukoht"]);
   }
   print "< /pre >";

Andmebaasi kirjete lisamine

Skript lisab andmebaasi kirje

   <?php
   if ($submit) {
        // Ühendume andmebaasiserveriga
        $ab = mysql_connect("www.zoo.edu.ee", "zoo", "zooparool");
        // valime andmetabeli
        mysql_select_db("zoo",$ab);
        // kirjeldame päringu
        $sql = "INSERT INTO rahvas VALUES ('$nimi','$vanus','$elukoht')";
        // teostame päringu
        $tulemus = mysql_query ($sql);
        echo "< p >Asi valmis!< p >";
   }
    ?>
    < form method= "post" action="<?php echo $PHP_SELF ?>" >
    Nimi:< input type= "textbox" name="nimi" >< br >
    Vanus:< input type= "textbox" name="vanus" >< br >
    Elukoht:< input type= "textbox" name="elukoht" >< br >
    < input type="submit" name= "submit" value= "Sisestan andmed" >
    < /form >

Näide illustreerib ka ühte PHP skriptidele iseloomulikku asjaolu - skript kutsub ennast ise taas välja. Nimelt pole esmakordsel skripti brauserisse laadimisel ilmselt veel vajutatud submit nuppu ja seetõttu on muutuja $submit väärtustamata. Tingimuse if ($submit) plokk jäetakse täitmata ja esitatakse ainult vorm. Vormi ACTIONiks oleva muutuja $PHP_SELF väärtus on alati võrdne skripti URLiga, näiteks http://www.zoo.edu.ee/skript.php. Täites vormi ja valides OK kutsutakse seesama PHP skript välja, kuid muutuja $submit on nüüd väärtustatud ja seetõttu täidetakse if tingimusele järgnev plokk. See plokk suhtleb andmebaasiga.

Andmebaasi ühendus lõpetatakse automaatselt peale skripti täitmise lõppu.

PostgreSQLi andmebaasiga suhtlemine

PHP pakub vahendid PostgreSQLi andmebaasiga suhtlemiseks. Järgnevas näitame, kuidas kasutada PostgreSQLi palas tarvitatud andmebaasiga. Andmebaasiga suhtlemiseks peab PHP skript kõigepealt näitama andmebaasiserveri nime, kasutajanime, parooli ning kasutatava andmebaasi nime. Praktiliselt tähendab see, et need väärtused tuleb sisestada PHP skripti avatekstina, mis pole aga tingimata ebaturvaline, kuna PHP skripti ennast veebikoha külastaja ei näe.

Andmebaasi kirjete kuvamine

Skript kuvab kõigi andmebaasi kirjete sisu

   // Ühendume andmebaasiserveriga
   $ab = pg_connect ("host=www.zoo.edu.ee user=zoo dbname=zoo password=zooparool")
   // esitame päringu
   $tulemus = pg_exec ($ab, "SELECT * FROM inimesed");
   $ridu = pg_numrows($tulemus); 
   print "< pre >";
   // kuni päringutulemuste lõppemiseni täidame nendega
   // assotsiatiivse massiivi $rida ning trükime selle elementide väärtused
   for ($i = 0; $i < $ridu; $i++) {
       $rida = pg_fetch_array($tulemus, $i);
       printf ("%12s %15d %15s\n", $rida["nimi"], $rida["vanus"], $rida["elukoht"]);
      }
   print "< /pre >";

Andmebaasi kirjete lisamine

Skript lisab andmebaasi kirje

   <?php
   if ($submit) {
   // Ühendume andmebaasiserveriga
   $ab = pg_connect ("host=www.zoo.edu.ee user=zoo dbname=zoo password=zooparool");
   // kirjeldame päringu
   $sql = "INSERT INTO inimesed VALUES ('$nimi','$vanus','$elukoht')";
   // teostame päringu
   $tulemus = pg_exec ($ab, $sql);
   }

   ?>
   <form method="post" action="<?php echo $PHP_SELF ?>">
   Nimi:<input type="Text" name="nimi">
Vanus:<input type="Text" name="vanus">
Elukoht:<input type="Text" name="elukoht">
<input type="OK" name="submit" value="Sisestan andmed"> </form>

Näide illustreerib ka ühte PHP skriptidele iseloomulikku asjaolu - skript kutsub ennast ise taas välja. Nimelt pole esmakordsel skripti brauserisse laadimisel ilmselt veel vajutatud submit nuppu ja seetõttu on muutuja $submit väärtustamata. Tingimuse if ($submit) plokk jäetakse täitmata ja esitatakse ainult vorm. Vormi ACTIONiks oleva muutuja $PHP_SELF väärtus on alati võrdne skripti URLiga, näiteks http://www.zoo.edu.ee/skript.php. Täites vormi ja valides OK kutsutakse seesama PHP skript välja, kuid muutuja $submit on nüüd väärtustatud ja seetõttu täidetakse if tingimusele järgnev plokk. See plokk suhtleb andmebaasiga.

Andmebaasi ühendus lõpetatakse automaatselt peale skripti täitmise lõppu.