Jalgrattaeksami haldamise rakendus
Järgnevalt veidi pikem näide enamvähem tegeliku rakenduse veebiliidese kohta, kus sama
sündmusega tegelevad mitu asjaosalist. Ehk siis tegemist abivahendina töö juures, kus
muidu oleks päris palju sebimist, et vajalikud andmed õigel ajal õigesse kohta jõuaksid.
Üksinda päris lihtsalt rakendust tehes saab otsast vaikselt tegema hakata, veidi
katsetada ning loodetavasti jõuabki mõne aja pärast kasutaja jaoks sobivale tulemusele.
Kui aga tegijaid või kasutajaid mitu, või lihtsalt võtab rakenduse kokku panek rohkem
aega kui paar päeva - sellisel juhul tuleb mõningane kavandamine ja plaanide
ülesmärkimine kasuks. Siis rohkem lootust, et tulemus lõppkasutajale sobilik on ning ei
pea nõnda palju tööd ringi tegema. Et pärast arendaja arvates rakenduse enam-vähem valmis
saamist kulub vähemalt kolmandik tööd lõppviimistluse jaoks, see on tavapärane. Küllalt
kergesti aga kipub juhtuma, et pärast esialgse lahenduse pealtnäha kõikide osade eraldi
tööle hakkamist kulub veel kaks korda nõnda palju aega ja jõudu, et kuidagi töötavad
lahendused võimalikult hästi töötavate mooduste vastu vahetada. Sest veebirakendusest on
ju üldiselt kasu vaid siis, kui töö jõutakse kiiremini ja paremini teha võrrelduna
pliiatsi ja paberi ning muude tavaliste vahendite abil tehtuna. Tavamooduseid on sageli
aastakümneid kasutatud ja lihvitud. Veebilahenduse mugavaks saamiseks tuleb see
kohandumisring ka ette võtta.
Üks levinud moodus rakenduste kavandamisel ja koostamisel on kirja panna või läbi käia
järgmised osad:
Rakenduse üldkirjelduse ülesmärkimine
Kasutajate tegevuste kirjapanek üksikute kasutajalugude kaupa
Veebilehtede struktuuri kirjapanek
Lehtede ülesjoonistamine (paber)prototüüpidena, tegevuste läbimäng
Lehtede kujundamine HTML-prototüüpidena
Andmebaasiskeem
Andmete ja kujunduse ühendamine (ehk esmapilgul põhiline töö)
Lahenduse katsetamine tegijate hulgas
Vajalike täienduste sisseviimine
Lahenduse katsetamine sihtkohas, kohandamine, kuni võib tulemuse kõlblikuks lugeda.
Kavandamine
Jalgrattaeksami üldkirjeldus
Jalgrattaeksam koosneb kolmest etapist:
Teooriaeksam
Platsieksam
Tänavasõidueksam
Teooriaeksami sooritamiseks on kümnest küsimusest vaja õigesti vastata vähemalt üheksa.
Platsieksamil tuleb reeglitepäraselt läbida slaalomirada ning näidata oma sõiduoskusi
ringteel.
Tänavasõidueksamil tuleb eksamineeritavate grupil järjestikku sõita ees ja taga oleva
eksamineerija vahel järgides liikluseeskirju.
Teooriaeksam peab olema sooritatud enne platsieksamit. Platsieksam peab olema sooritatud
enne tänavasõidueksamit. Platsieksami osade läbimise järjekord pole tähtis.
Kasutajalood
Jalgrattalubade taotleja tuleb eksamile registreerimise laua juurde, esitab oma isikut
tõendava dokumendi. Registreerija sisestab kasutaja andmed (lihtsamal juhul ees- ja
perekonnanime) rakenduse kaudu infosüsteemi
Teoriaeksamiruumi sisenemisel kontrollitakse, et kohaletulnud on end eksamile
registreerunud. Keda pole veel kirjas, suunatakse registreerimislaua juurde.
Teooriaeksami lahendanud taotlejatele sisestatakse nime juurde tema saadud punktide arv.
Platsieksamil on kaks kontrollpunkti, kummaski eraldi kontrollija koos sisestusseadmega.
Kontrollijad näevad vaid neid nimesid, kes on registreeritud ning kel on kogutud
teooriaeksamist vähemalt üheksa punkti. Kontrollija saab rakenduses määrata, kas
eksamineeritav sai oma ülesandega hakkama (vastavalt siis slaalomisõiduga või
ringteesõiduga vastavalt kontrollpunktile).
Tänavasõidueksami inspektorid näevad infosüsteemis vaid neid lubade taotlejaid, kel on
läbitud mõlemad platsieksami kontrollpunktid. Vaid neid saavad nad tänavasõidueksamile
lubada. Tänavasõidueksami lõpus märgivad inspektorid, et kellel tänavasõidueksam
õnnestus, kellel mitte.
Lubade väljastamise laua töötajal on võimalik näha kõigi eksamineeritavate seisu. Kel
pilt olemas, sellele väljastatakse luba ning määratakse sellega eksam lõpetatuks.
Rakenduse lehed
Jalgrattalubade taotleja registreerimine
Sisestatakse taotleja ees- ja perekonnanimi. Andmed talletatakse kirjena tabelisse.
Teooriaeksam
Nähakse loetelu registreeritud osalejatest, kes pole veel teooriaeksamil tulemust
saanud.
Eksamiülesande lahendanu nime juurde saab kirjutada tulemuse.
Slaalom
Näha on teooriaeksami läbinud eksamineeritavad, kel veel pole kirjas tulemust slaalomi
kontrollpunkti kohta. Saab soorituse määrata kas õnnestunuks või ebaõnnestunuks.
Ringtee
Näha on teooriaeksami läbinud eksamineeritavad, kel pole veel kirjas tulemust ringtee
kontrollpunkti kohta. Saab soorituse määrata kas õnnestunuks või ebaõnnestunuks.
Tänavasõidueksam
Näha on nimekiri eksamineeritavatest, kes on läbinud platsieksami (ehk siis slaalomi ja
ringtee kontrollpunkti) ning pole veel kirja saanud tulemust tänavasõidueksamil. Iga
eksamineeritava kohta saab määrata tulemuse kas õnnestunuks või ebaõnnestunuks.
Vormistamise leht
Näha on kõikide osalejate tulemused. Kel kõik etapid korras, saab loa kätte ja see
pannakse kirja.
Lehtede joonised
Järgmisena on viisakas valmis joonistada üksikud vaated. Olgu siis pastapliiatsi ja
paberi abil, lihtsa joonistusprogrammiga või mõnd mockup-tööriista kasutades.
Edasi tasub läbi mängida kasutajalood jälgides, et kas ja kui mugavalt on neid
joonistatud vaateid kasutades võimalik süsteem läbida. Piisavalt lihtsalt loodud
kavanditele saab kergesti kommentaare juurde lisada. Ning kui katsetamise käigus selgub,
et mõni muu lahendus oleks parem, siis on suhteliselt hõlbus ka vana skeem uuega asendada.
Andmebaasiskeem
Rakenduse loomise võimaluste juures on tähtis osa andmebaasiskeemil. Kasutada õnnestub
enamasti vaid neid andmeid, mis baasis olemas. Siin näites piirdutakse andmete hoidmisel
ühe tabeliga. Kuid erisuguste andmete lisandumisel võib tabelite arv kergesti kasvama
hakata. Lühidalt kirja panduna on tabel järgnevate tulpadega.
jalgrattaeksam(id, eesnimi, perekonnanimi, teooriatulemus, slaalom, ringtee, t2nav, luba)
Andmebaasiprogrammile tabeli loomisel arusaadavaks SQL-lauseks on
CREATE TABLE jalgrattaeksam(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
eesnimi VARCHAR(30),
perekonnanimi VARCHAR(30),
teooriatulemus INT DEFAULT -1,
slaalom INT DEFAULT -1,
ringtee INT DEFAULT -1,
t2nav INT DEFAULT -1,
luba INT DEFAULT -1
);
-1 tähistab sisestamata tulemust
teooriatulemuse puhul 0-10 tähistab saadud punktide arvu
muude tulpade puhul
1 tähistab, et sooritus õnnestus
2 tähistab, et sooritus ei õnnestunud
Rakenduse käiguks tarvilikud SQL-laused.
Lehtede tööks vajalikud andmete küsimise, lisamise, muutmise ja kustutamise laused on hea
enne eraldi välja kirjutada ning lehtede joonistega võrrelda. Siis paistab välja, et
milliseid andmeid kust saadakse ning kas kõik vajalik on olemas.
Taotleja registreerimine
INSERT INTO jalgrattaeksam (eesnimi, perekonnanimi) VALUES ('Juku', 'Juurikas');
INSERT INTO jalgrattaeksam (eesnimi, perekonnanimi) VALUES ('Kati', 'Tamm');
INSERT INTO jalgrattaeksam (eesnimi, perekonnanimi) VALUES ('Mati', 'Kask');
Teooriaeksamil loetelu eksamineeritavatest, kes pole veel teooriaeksamil tulemust saanud.
SELECT id, eesnimi, perekonnanimi FROM jalgrattaeksam WHERE teooriatulemus=-1;
Teooriaeksami tulemuse sisestamine
UPDATE jalgrattaeksam SET teooriatulemus=9 WHERE id=1;
UPDATE jalgrattaeksam SET teooriatulemus=10 WHERE id=2;
UPDATE jalgrattaeksam SET teooriatulemus=10 WHERE id=3;
Loetelu eksamineeritavatest, kes saavad slaalomipunktis oma oskusi näidata
SELECT id, eesnimi, perekonnanimi FROM jalgrattaeksam
WHERE teooriatulemus>=9 AND slaalom=-1;
Slaalomipunkti edukalt läbituks märkimine
UPDATE jalgrattaeksam SET slaalom=1 WHERE id=2;
Loetelu eksamineeritavatest, kes saavad ringteepunktis oma oskusi näidata
SELECT id, eesnimi, perekonnanimi FROM jalgrattaeksam
WHERE teooriatulemus>=9 AND ringtee=-1;
Ringteepunkti edukalt läbituks märkimine
UPDATE jalgrattaeksam SET ringtee=1 WHERE id=2;
Loetelu eksamineeritavatest, kel õigus tänavasõidueksamile minna
SELECT id, eesnimi, perekonnanimi FROM jalgrattaeksam
WHERE slaalom=1 AND ringtee=1 AND t2nav=-1;
Hetkeandmete väljund:
+----+---------+---------------+
| id | eesnimi | perekonnanimi |
+----+---------+---------------+
| 2 | Kati | Tamm |
+----+---------+---------------+
Tänavasõidueksami määramine sooritatuks:
UPDATE jalgrattaeksam SET t2nav=1 WHERE id=2;
Lubade laua juures kõigi tulemuste nägemine:
SELECT id, eesnimi, perekonnanimi, teooriatulemus, slaalom, ringtee, t2nav, luba FROM
jalgrattaeksam;
Lubade väljastamise märkimine:
UPDATE jalgrattaeksam SET luba=1 WHERE id=2;
Veebilehtede loomine
Pärast selliste eeltööde läbi viimist on valmivast rakendusest juba mõnevõrra lähem
ettekujutus olemas ning võib loota, et kokkupandav rakendus ka kasutatav on. Ehkki juhtub
küllalt sageli, et pärast esialgse versiooni tööle panekut tuleb ta veel mitme koha pealt
ümber teha enne, kui kasutajad tulemusega rahul on. Kasutajalugude, skeemide ja
esialgsete SQL-lausete kohendamine on aga algul tunduvalt lihtsam kui valmiskujundusega
lahenduse pidev ümbermängimine. Samuti eriti suuremate lahenduste puhul ei pruugi kogu
kavand sugugi kohe korraga pähe mahtuda. Üksikuid vaateid ja lõike aga julgeb ikka eraldi
katsetada ning nende pealt jõuab vaikselt ka suurema lahenduse kokku panna.
konf.php
Suurema lahenduse puhul on seaded hea panna eraldi konfiguratsioonifaili. Praegusel juhul
tulevad siia andmebaasiühenduse andmed. Kuid hea on olemasolu korral ka kõiksugu muud
lisandused ühte koondada. Nagu ka lõpus kommentaar ütleb, siis juhul, kui PHP-fail midagi
otse ekraanile väljastama ei pea, siis on lubatud ja soovitatav PHP lõpumärk ?> ära
jätta.
prepare(
"INSERT INTO jalgrattaeksam(eesnimi, perekonnanimi) VALUES (?, ?)");
$kask->bind_param("ss", $_REQUEST["eesnimi"], $_REQUEST["perekonnanimi"]);
$kask->execute();
$yhendus->close();
header("Location: $_SERVER[PHP_SELF]?lisatudeesnimi=$_REQUEST[eesnimi]");
exit();
}
?>
Kasutaja registreerimine
Registreerimine
Tulemusena koht, kus nimi sisse kirjutada ning pärast sisestusnupule vajutamist jõuab see
andmebaasitabelisse.
Pärast vajutust ilmuval uuel lehel näeb ametnik kinnitust oma saadetud andmete
sisestamise kohta.
teooriaeksam.php
Järgmisena on vaja registreerunud eksamituppa kutsuda. Kõigepealt näha, et kes üldse
tulemas on. Ning pärast ülesannete lahendamist ja kontrollimist tuleb märkida, millised
tulemused saadi. Selleks siis kõigepealt SELECT-lause nende registreerunute leidmiseks,
kel veel teooriaeksam tegemata (punktide arv -1). Ning pärast igaühe juures UPDATE-lause,
mis osalise punktid paika määrab. Et igaühe andmed saaks mugavasti eraldi saata, selleks
on iga nime taga olev sisestusväli eraldi vormis, kus pannakse varjatud väljana kaasa ka
vastava registreerunu id-number.
prepare(
"UPDATE jalgrattaeksam SET teooriatulemus=? WHERE id=?");
$kask->bind_param("ii", $_REQUEST["teooriatulemus"], $_REQUEST["id"]);
$kask->execute();
}
$kask=$yhendus->prepare("SELECT id, eesnimi, perekonnanimi
FROM jalgrattaeksam WHERE teooriatulemus=-1");
$kask->bind_result($id, $eesnimi, $perekonnanimi);
$kask->execute();
?>
Teooriaeksam
fetch()){
echo "
$eesnimi |
$perekonnanimi |
|
";
}
?>
slaalom.php
Platsieksami juures üheks punktiks on slaalomisõit. Sinna pääsevad need registreerunud,
kes kogusid teooriaeksamil vähemasti 9 punkti ning kes pole veel slaalomitulemust kirja
saanud. Tulemus tähendaks seda, et slaalomisõit on kas korras või ebaõnnestunud.
Kasutajaliides on inspektorile võimalikult lihtne, et seda suudaks kergesti ka platsil
kaasas oleva miniseadme pealt vaadata.
prepare(
"UPDATE jalgrattaeksam SET slaalom=1 WHERE id=?");
$kask->bind_param("i", $_REQUEST["korras_id"]);
$kask->execute();
}
if(!empty($_REQUEST["vigane_id"])){
$kask=$yhendus->prepare(
"UPDATE jalgrattaeksam SET slaalom=2 WHERE id=?");
$kask->bind_param("i", $_REQUEST["vigane_id"]);
$kask->execute();
}
$kask=$yhendus->prepare("SELECT id, eesnimi, perekonnanimi
FROM jalgrattaeksam WHERE teooriatulemus>=9 AND slaalom=-1");
$kask->bind_result($id, $eesnimi, $perekonnanimi);
$kask->execute();
?>
Slaalom
Slaalom
ringtee.php
Ringteeharjutus on korraldusliku poole pealt slaalomiga sarnane. Kuna platsiharjutuste
läbimise järjekord pole tähtis, siis ringteeharjutusele pääsemiseks on sama tingimus kui
slaalomi puhul - ehk siis peab teooriaeksam tehtud olema.
prepare(
"UPDATE jalgrattaeksam SET ringtee=1 WHERE id=?");
$kask->bind_param("i", $_REQUEST["korras_id"]);
$kask->execute();
}
if(!empty($_REQUEST["vigane_id"])){
$kask=$yhendus->prepare(
"UPDATE jalgrattaeksam SET ringtee=2 WHERE id=?");
$kask->bind_param("i", $_REQUEST["vigane_id"]);
$kask->execute();
}
$kask=$yhendus->prepare("SELECT id, eesnimi, perekonnanimi
FROM jalgrattaeksam WHERE teooriatulemus>=9 AND ringtee=-1");
$kask->bind_result($id, $eesnimi, $perekonnanimi);
$kask->execute();
?>
Ringtee
Ringtee
t2nav.php
Tänavasõidule lastakse siis, kui mõlemad platsiharjutused edukalt läbitud. Seetõttu ka
vastav pikem kontroll sealjuures.
$kask=$yhendus->prepare("SELECT id, eesnimi, perekonnanimi
FROM jalgrattaeksam WHERE slaalom=1 AND ringtee=1 AND t2nav=-1");
Muu osa aga eelmistele failidele suhteliselt sarnane.
prepare(
"UPDATE jalgrattaeksam SET t2nav=1 WHERE id=?");
$kask->bind_param("i", $_REQUEST["korras_id"]);
$kask->execute();
}
if(!empty($_REQUEST["vigane_id"])){
$kask=$yhendus->prepare(
"UPDATE jalgrattaeksam SET t2nav=2 WHERE id=?");
$kask->bind_param("i", $_REQUEST["vigane_id"]);
$kask->execute();
}
$kask=$yhendus->prepare("SELECT id, eesnimi, perekonnanimi
FROM jalgrattaeksam WHERE slaalom=1 AND ringtee=1 AND t2nav=-1");
$kask->bind_result($id, $eesnimi, $perekonnanimi);
$kask->execute();
?>
Tänavasõit
Tänavasõit
lubadeleht.php
Lõpetuslaua juures tasub kõiki eelnevaid andmeid näha. Et kui mõnel osalejal tekib
küsimusi, et kuhu maani ta välja jõudis, siis seal on paras koht tulemusi vaadata.
Lihtsamal juhul kuvatakse tabeli sisu veebilehele. Ning piisavalt teadlik asjaosaline
juba teab sealt välja vaadata, et milline number mida tähendab.
prepare(
"SELECT id, eesnimi, perekonnanimi, teooriatulemus,
slaalom, ringtee, t2nav, luba FROM jalgrattaeksam;");
$kask->bind_result($id, $eesnimi, $perekonnanimi, $teooriatulemus,
$slaalom, $ringtee, $t2nav, $luba);
$kask->execute();
?>
Lõpetamine
Lõpetamine
fetch()){
echo "
$eesnimi |
$perekonnanimi |
$teooriatulemus |
$slaalom |
$ringtee |
$t2nav |
$luba |
";
}
?>
lubadeleht.php ilusamalt
Lõpetaja tööülesannete hulka kuulub ka lubade väljastamine - järelikult ka see toimetus
sobib siinse lehe juurde. Ning esimesi päevi tööl oleval ametnikul on mugavam vaadata
selgesõnalisi seletusi, kellel mis on korras ja mis mitte. Selle tarvis lisati väike
alamprogramm asenduste tarbeks - numbrile vastavalt antakse välja sobiv tekst. Nõnda näeb
allolev leht juba märgatavalt ametlikum välja.
prepare(
"UPDATE jalgrattaeksam SET luba=1 WHERE id=?");
$kask->bind_param("i", $_REQUEST["vormistamine_id"]);
$kask->execute();
}
$kask=$yhendus->prepare(
"SELECT id, eesnimi, perekonnanimi, teooriatulemus,
slaalom, ringtee, t2nav, luba FROM jalgrattaeksam;");
$kask->bind_result($id, $eesnimi, $perekonnanimi, $teooriatulemus,
$slaalom, $ringtee, $t2nav, $luba);
$kask->execute();
function asenda($nr){
if($nr==-1){return ".";} //tegemata
if($nr== 1){return "korras";}
if($nr== 2){return "ebaõnnestunud";}
return "Tundmatu number";
}
?>
Lõpetamine
Lõpetamine
Eesnimi |
Perekonnanimi |
Teooriaeksam |
Slaalom |
Ringtee |
Tänavasõit |
Lubade väljastus |
fetch()){
$asendatud_slaalom=asenda($slaalom);
$asendatud_ringtee=asenda($ringtee);
$asendatud_t2nav=asenda($t2nav);
$loalahter=".";
if($luba==1){$loalahter="Väljastatud";}
if($luba==-1 and $t2nav==1){
$loalahter="Vormista load";
}
echo "
$eesnimi |
$perekonnanimi |
$teooriatulemus |
$asendatud_slaalom |
$asendatud_ringtee |
$asendatud_t2nav |
$loalahter |
";
}
?>
Oma lahenduse loomise ülesanded
Eelneva jalgrattaeksami lahenduse saab näiteks kõrvale võtta ning nüüd on paras aeg oma
valitud teemal sarnane arendusprotsess läbi käia. Kui tegijal parajasti paremat ideed ei
tule, siis heaks harjutuseks on näiteks pitsapoe tellimuste haldus. Kõigepealt paika
rakenduse lihtne üldkirjeldus, et kõrvaltvaatajalt veidi lähemalt mõista oleks, millega
tegemist. Siis saab ükshaaval paika panna tegevused ja rollid - kel mida põhjust ja õigus
teha. Edasi on viisakas järjest kirja panna kõik võimalikud toimingud, mis
veebirakenduses ühe pitsatellimuse juures on mõistlik ette võtta. Ka tasub näiteks mõelda
sellele, kas kuidagi peaks rakendus teadma sellest, et esimene pannile pandud pitsa läks
kõrbema ning uue valmimine võtab lisaaega.
Kui toimetused kirjas, siis tasub asuda vaadete välja joonistamisele. Esialgu kõik lehed
lihtsate skeemidena. Nende peal on hea võimalikud olukorrad läbi mängida. Kui aga
põhilised toimetused tunduvad töötama, siis võib mõne kujunduse ka põhjalikumalt korda
teha ning ka HTMLina valmis kujundada - enne kui päris andmetega majandama ja pead
valutama hakata.
Omaette rida on andmebaas välja mõelda - lihtsamal juhul sobiv andmetabel kokku panna,
kus kõik ühe pitsa tellimisega seotud andmed sees. Ning siis lehekülgede kaupa SQL-laused
valmis kirjutada, et näha, millised andmed kust tulevad ning kuhu lähevad. Sageli selgub
selle käigus ka, et mõistlik on andmetabelit või kujunduslehti veidi kohandada, et
tulemus mugavamalt saavutatav oleks.
Ja kui eeltööd tehtud, võib usinasti rakenduse kokkupaneku kallale asuda. Olgu siis
üksipäini või koos sõbraliku seltskonnaga. Kui kujunduspildid ning andmebaasipäringud
ees, siis võib juba üsna julgesti iga lehte eraldi teha ning pärast koos töötavat
tulemust imetleda.
Suurema toimetuse kõrvale või asemele enesekontrolliks või kontrolltööks mõned ülesanded,
mille kallal võiks siinse õppematerjali läbimise järel olla samuti jaksu jõudu katsuda.
Kohviautomaat
Andmetabeli kuju: (id, jooginimi, topsepakis, topsejuua)
Topside arv pakis näitab, mitu topsitäit saab juua ühe täitepakendi sisestamise peale.
* Loo tabel SQL-lausega. Lisa joogina kohv. Täitepaki suuruseks 50 topsi jagu pulbrit,
algul masin tühi, juua pole midagi. Loo SQL-lause juua olevate topside arvu
suurendamiseks täitepaki jagu. Käivita.
* Automaadi käivitatav leht vähendab juua olevate topside arvu ühe võrra. Vaataja leht
näitab seda arvu.
* Automaat saab hakkama mitme joogiga (kohv, tee, kakao). Lehel näidatakse vaid neid
jooke, millel on vähemasti üks tops juua. Joomise tulemusena vähendatakse vastava joogi
olemasolevate topside loendurit. Halduslehel saab joodavate topside arvu kogust
suurendada täitepaki jagu.
Viljaladu
Andmetabel koormad: (id, autonr, sisenemismass, lahkumismass)
* Koosta tabel. Loo SQL lause auto lisamiseks koos autonumbri ja sisenemismassiga. Loo
lause valitud id-ga auto lahkumismassi määramiseks.
* Koosta veebileht, kus saab sisestada autonumbri ja sisenemismassi. Koosta teine
veebileht, kus valitud autole saab määrata väljumismassi.
* Koosta leht, kus näha tulnud autod koos andmetega ning maha laetud koormate suurused.
Autonumbrile vajutades näidatakse kõik selle auto reisid ning arvutatakse kokku toodud
vilja kogus.
Toolivahendus
Andmetabel toolid: (id, toon, tellimiskogus, valminudkogus)
* Koosta tabel. Loo SQL-lause tellimuse sisestamiseks (toon tekstina, ja tellimiskogus).
Valminuid algul 0. Loo käsklus valminud koguse suurendamiseks ühe võrra.
* Koosta veebileht tellimuse sisestamiseks. Näita veebilehel toolide tabeli seisu. Loo
leht tellimusele vastava valminud koguse suurendamiseks ühe võrra.
* Valminud kogust saab suurendada vaid tellimustel, kus kogus pole veel täis. Eraldi
lehel näita valminud tellimusi. Arvuta kokku, mitu tooli on veel teha.
Autoveod
Andmetabel veod: (id, algus, ots, aeg, autonr, juht, valmis)
* Koosta tabel. Loo SQL-laused tellimuse sisestamiseks (algus, ots, aeg), tellimusele
autonumbri määramiseks, tellimusele juhi nime määramiseks.
* Koosta leht veotellimuse sisestamiseks (algus- ja otspunkt, soovitav aeg). Koosta leht
tellitud, kuid ilma juhita vedude nägemiseks. Võimalda veole määrata juht.
* Näita lehel vedusid, mille juht või autonumber määramata. Võimalda neid määrata. Juhi
ja autonumbriga vedude puhul näita eraldi need veod, mis pole veel valmiks määratud,
võimalda tehtuks määrata.
Arvutikomplektid
Andmetabel: arvutitellimused(id, kirjeldus, korpus, kuvar, pakitud). Viimased kolm neist
arvud väärtusega 0 või 1.
* Koosta tabel. Loo SQL-lause kirjelduse sisestamiseks. Loo lause määramaks, et valitud
tellimuse korpus on komplekteeritud.
* Koosta veebileht tellimuse sisestamiseks. Näita sisestatud tellimuse ja
komplekteerimata korpusega tellimusi, võimalda määrata korpus komplekteerituks.
* Eraldi saab valmiks määrata korpuse ja kuvari. Pakkimislehel näeb vaid neid lehti, kus
korpus ja kuvar olemas, aga komplekt veel pakkimata. Saab määrata pakituks. Luuakse
statistikaleht, kus kirjas tellimuste arv ning mitu neist on lõpetatud.
Hirmude maja
Lõbustuspargis olevate õuduste maja külastajate haldamise rakendus. Majas olevate ohtlike
atraktsioonide tõttu tuleb inimeste üle arvet pidada.
Andmetabel: hirmumaja:(id, eesnimi, sisenes, lahkus).
* Loo andmetabel. Loo SQL-lause kasutaja lisamiseks. Lause etteantud id-ga kasutaja
sisenemiseks. Lause etteantud id-ga kasutaja lahkumise märkimiseks.
* Koosta veebileht pileti ostmiseks. Kasutaja kohta sisestatakse eesnimi. Võimalusel
näidatakse lehele tekkival piletil kasutaja eesnime ja id-d ($yhendus->insert_id).
* Sisenemisukse juures oleval lehel märgitakse piletit näidanud id-ga inimene sisenenuks,
väljumisukse juures oleval lehel lahkunuks. Loetelus saab näha hirmude maja sees olevate
inimeste loetelu.
Aknaruloode tootmine
Andmetabel rulood (id, mustrinr, riievalmis, puuvalmis, pakitud)
Tellimisel sisestatakse mustri number. Vastavalt mustrinumbrile tuleb lõigata sobiv riie
ning värvida sobiv puuosa. Kui mõlemad on olemas, saab nad ühendada ja teelesaatmiseks
pakki panna.
* Loo SQL lause soovitud mustrinumbriga tellimuse lisamiseks. Lause määratud id-ga
tellimuse riidelõikuse valmiks määramiseks. Lause valimis riide- ja puuosadega kuid veel
pakkimata ruloode näitamiseks.
* Koosta veebileht tellimuse lisamiseks. Riideosakonna tööline näeb koos mustrinumbritega
tellimusi, kus riideosa pole veel lõigatud. Saab töö tegemisel määrata need lõigatuks.
* Loo sarnane leht puuosa tegijate jaoks. Komplekteerijate lehel näha tellimused, mida
saab pakkima hakata. Pakitud tellimused saab pakituks märkida. Klient saab oma tellimuse
numbri sisestamisel näha oma tellimuse seisu.
Tantsuvõistlus
Hambotantsuvõistlusel tantsitakse piki tänavat. Sama paari hindab žürii iga liige oma
lõigul.
Andmetabel tantsupaarid (id, hinne1, hinne2, hinne3)
* Loo SQL lause tantsupaari sisestamiseks. Loo lause esimeses punktis hindamata paaride
näitamiseks. Loo lause määratud id-ga paarile hinde määramiseks.
* Loo veebileht tantsupaari lisamiseks. Loo veebileht paaride näitamiseks, kes pole veel
esimest hinnet saanud. Hindaja saab paarile hinde andmiseks vajutada sobivat tema taga
olevat numbrit ühest viieni.
* Loo sarnased lehed teiste hindamislõikude tarbeks. Loo koondleht võistluse lõpetanud
paaride tulemuste vaatamiseks, kus on näha ka iga paari keskmine hinne.
Suusahüppevõistlus
Andmetabel suusahyppajad (id, alustanud, kaugus, valmis).
* Loo SQL laused suusahüppaja lisamiseks, laskumise alustamise märkimiseks, alustanud ja
veel lõpetamata hüppaja leidmiseks, talle kauguse määramiseks ning hüppealast väljumise
määramiseks.
* Loo veebileht suusahüppajate lisamiseks. Ühtlasi on näha igaühe seis ja tulemus.
* Loo veebileht, millega määratakse laskumine alustatuks. Korraga tohib laskuma lubada
vaid ühe hüppaja, muidu antakse veateade. Teised peavad olema selleks ajaks hüppealast
lahkunud.
* Loo leht kauguse sisestamiseks. Kaugus kirjutatakse parasjagu hüppava võistleja juurde.
Näita hüpanud võistlejate paremusjärjestust koos kohtadega kauguste järgi.