ActionScripti õppematerjal

Vormid ja integratsioon andmebaasiga

Tagasi sirvima

Juba varastest versioonidest (Flash 5) toetab Flash võimalust intergreerida rakendus andmebaasi või mõne muu välise andmete töötlemisvahendiga. Vaatleme, mil viisil on võimalik andmeid Flash rakendusest välja saata ning koostame lihtsa tagasiside vormi.

Õpime:

Näidetest failid vorm.fla, vorm.swf, vorm.php, vorm_mysql.php

  1. Kujundame vormi, nagu näha joonisel 7.1.

  2. Joonis 7.1 - Lihtne vorm Flashis
    Joonis 7.1 - Lihtne vorm Flashis

    Selleks loome kokku kaheksa tekstikasti, esimesed neli lahtrite selgituseks ning teised neli etendavad sisendikastide rolli. Et tavalisest tekstikastist saaks kasutaja teksti sisendikast, tuleb see seadistuses vastavalt määrata (vt. joonis 7.2), valides teksti tüübiks sisendteksti (Input text). Varasemates harjutusülesannetes oleme kasutanud staatilisi (muutumatu sisuga) ja dünaamilisi (ActionScripti abil muutuva sisuga) tekstikaste.

    Joonis 7.2 - Sisendkasti  loomine
    Joonis 7.2 - Sisendkasti loomine

    Lisaks vajame veel nuppu, millele klõpsamisel andmed edasi saadetakse.

  3. Sisendikastidele tuleb anda muutujanimed, kirjutades need vastava tekstikasti seadetes lahtrisse Var. Nendeks on vastavalt: eesnimi, perenimi, email, teade. Samanimelised muutujad väljastatakse hiljem teisele rakendusele.

  4. Kirjutame nupule uuel kihil järgneva skripti:

    saadaNupp.onRelease = function():Void{
    	getURL("http://koduleht.com/vorm.php",0,"post");
    }

  5. Selleks on eelnevalt lavale lohistatud nupule vaja anda instantsinimi saadaNupp. Funktsiooni getURL() saab kasutada dokumendi laadimiseks kindlalt URL-ilt või muutujate saatmiseks teisele rakendusele selleks defineeritud URL-il. [AS2LR, lk. 59-61] Parameetriteks on url, aken - määrab ära akna või HTML-freimi, kuhu dokument peaks laaditama (meie näites lihtsalt "0") ning meetodi, kuidas muutujad saata (GET või POST, erinevad sellepoolest, kas meetodid saadetakse kaasa URL'iga või mitte).

    Nagu näha, piisab andmete väljaspoole saatmiseks sisuliselt vaid ühest koodireast. Sarnaselt võimaldab funktsioon loadVariablesNum() ka andmeid välisallikast (ColdFusion'i, CGI, ASP või PHP programmeerimiskeelte abil genereeritud tekstist või failist) sisse lugeda.

  6. Flashi-poolne osa on sellega tehtud – andmed saadetakse välja. Näitena kirjutame PHP programmi. PHP koodi jooksutamiseks on tarvis Apache't või mõnda muud veebiserverit ning PHP-d. MySQL andmebaasi võimaluste kasutamiseks peab rakendatud olema MySQL-server.

  7. Flashiga saadetud andmete kuvamine PHP abil

    Antud kood kuvab veebilehel Flashist saadud andmete põhjal ees- ja perekonnanime. See ei õigusta küll tagasiside vormi kasutamist, kuid näitab, mil viisil Flashi poolt väljastatud andmeid kuvada.

    <?php
    echo '<html><head>';
    echo '<meta http-equiv="content-type" content="text/html; charset=utf-8" />';
    echo '</head><body>';
    
    echo 'Tere,'.$_REQUEST[eesnimi].' '.$_REQUEST[perenimi].'!<br />';
    echo 'Töötab!';
    
    echo '</body></html>';
    ?>

    Vaikimisi eeldavad Flash Player 7 ning selle hilisemad versioonid, et kogu tekst, millega need kokku puutuvad, on UTF-8 kodeeringus. Seetõttu peaksid välised teksti- ja XML-failid, mida rakendus kasutab, olema sarnaselt salvestatud UTF-8 kodeeringus. Vastasel korral on probleeme näiteks täpitähtede kuvamisel.

    Flashist saadud andmete saatmine MySQL andmebaasi

    Järgnev kood on näide PHP abil MySQL andmebaasiga ühendamisest. Esmalt kontrollitakse if-tingimuse abil, kas lehele saabudes on kaasa antud muutuja teade, kui see on tõene, luuakse ühendus andmebaasiga ning salvestatakse kirje. Antud juhul ei ole tegemist ainuõige lahendusega, vaid katsetamiseks mõeldud koodiga. Väljad server, kasutajanimi, parool, andmebaas ning tabel tuleks koodis asendada kehtivatega.

    <?php
    $REQUEST[teade] = $teade;
    
    if(isset($teade)){
    	mysql_connect("server", "kasutajanimi", "parool");
    	mysql_select_db("andmebaas");
    
    	$lause="INSERT INTO tabel (eesnimi, perenimi, email, teade) VALUES ('$_REQUEST[eesnimi]', '$_REQUEST[perenimi]', '$_REQUEST[email]', '$_REQUEST[teade]')";
        mysql_query($lause);
    	mysql_close();
    
    echo "Korras!";
    }
    ?>
    

    Tagasi sirvima