Tev ir divi lieli uzdevumi – aizmugursistēmā (angļu v. back-end) ir jāizveido 4 PHP funkcijas, kuras iegūst datus no MySQL datubāzes, savukārt priekšgalsistēmā (angļu v. front-end) jāizveido reaģējoša tīmekļa vietne! Darba ir daudz, bet laiks – tikai 4
astronomiskās stundas, tāpēc izvērtē kārtīgi, ko darīsi, bet ko iespējams izlaidīsi.
Datubāze
Ziemassvētku vecītis bērnu atsūtītās vēstules glabā MySQL datubāzē. Tomēr kurš katrs nevar
saņemt dāvanas, tāpēc datubāzē tiek glabātas arī bērnu sekmes. Tā Ziemassvētku vecītis var izvērtēt,
kurš ir bijis centīgs, bet kurš – ne tik ļoti.
Piekļuve datubāzei
Datubāzes serveris (host): server43.areait.lv
Lietotājvārds: jekabsar_reader
Parole: Christmas2022
Datubāzes nosaukums: jekabsar_christmas
Datubāzes uzbūve
Tabula children
Kolonnas nosaukums
Kolonnas apraksts
id
Primārā atslēga
firstname
Vārds
middlename
Otrais vārds, ja ir
surname
Uzvārds
age
Vecums
Tabula gifts
Kolonnas nosaukums
Kolonnas apraksts
id
Primārā atslēga
name
Dāvanas nosaukums
count_available
Pieejamais dāvanu skaits
Tabula grades
Kolonnas nosaukums
Kolonnas apraksts
id
Primārā atslēga
student_id
Ārējā atslēga uz tabulu children
subject
Mācību priekšmets
grade
1. semestra vērtējums ballēs
Tabula letters
Kolonnas nosaukums
Kolonnas apraksts
id
Primārā atslēga
sender_id
Ārējā atslēga uz tabulu children
letter_text
Vēstules teksts
Aizmugursistēma (back-end)
Šo uzdevumu pildi skola.hex.lv, ielogojoties ar savu lietotājvārdu un paroli.
Vispirms jaunā failā (nosaukums nav būtisks) izveido savienojumu ar datubāzi, tad izpildi
turpmāk prasīto! Kad uzdevums pabeigts, nokopē visu savu PHP kodu lokāli failā back-end.php (vairāk informācijas skatīt 5. punktā).
1. Funkcija gifts_to_array($id)
Ir zināms, ka ikkatra atsūtītā vēstule beidzas ar tekstu dāvanas:, pēc kā seko dāvanu saraksts, kuras sūtītājs vēlas saņemt svētkos. Tāpat ir zināms, ka
katrs sūtītājs ir iesūtījis tikai vienu vēstuli. Tavs uzdevums ir izveidot funkciju gifts_to_array($id), kura:
saņem vienu argumentu – vēstules sūtītāja id (sender_id);
atgriež masīvu ar dāvanām, kuras vēstules sūtītājs vēlas saņemt.
Vari pārbaudīt, vai funkcija darbojas, kā nākas. Ja tavā kodā ieraksta rindiņu
echo implode(", ", gifts_to_array(18));
, tad skola.hex.lv konsolē parādās rezultāts:
kluči, lelle, ragavas, cimdi
2. Funkcija has_been_good($id)
Vēstuļu sūtītāji ir skolas vecuma bērni. Ikkatram no viņiem ir ne tikai Ziemassvētku vēlmes,
bet arī šajā semestrī skolā saņemtās atzīmes. Ir uzskatāms, ka skolēns bijis centīgs bērns
un saņems dāvanas, ja viņa vidējā atzīme ir 5 vai vairāk. Pretējā gadījumā dāvanas skolēns
nesaņems*. Tavs uzdevums ir izveidot funkciju has_been_good($id), kura:
saņem vienu argumentu – skolēna id (student_id);
atgriež patiesumvērtību (boolean): true, ja skolēns ir nopelnījis
dāvanas, turpretim false, ja dāvanas nepienākas.
Vari pārbaudīt, vai funkcija darbojas, kā nākas. Ja tavā kodā ieraksta rindiņu
echo has_been_good(19) ? "true" : "false";
, tad skola.hex.lv konsolē parādās rezultāts:
true
* Šis ir vienkāršots uzdevums. Reālajā dzīvē tikai atzīmes vien nevar noteikt to, cik
centīgs un labestīgs ir cilvēks.
3. Funkcija summarize_children($offset, $count)
Lai Ziemassvētku vecīša darbu atvieglotu, datus par bērniem ir nepieciešams attēlot konsolē
sakopotā veidā. Tavs uzdevums ir izveidot funkciju summarize_children($offset, $count), kura:
saņem divus argumentus:
$offset – bērni tiek sakārtoti alfabēta secībā pēc uzvārda un $offset norāda, no kura ieraksta pēc kārtas rādīt rezultātus konsolē (ja
rādīt no paša pirmā ieraksta, tad $offset = 0),
$count – cik ierakstus (bērnus, rindiņas) parādīt konsolē;
skola.hex.lv konsolē izvada sarakstu, kur katrā rindiņā (rindiņas atdalīt var
ar echo "\n";) redzams:
bērna vārds (arī otrs vārds, ja tāds ir),
bērna uzvārds,
tas, vai bērns saņems dāvanas (jā vai nē),
bērna atsūtītajā vēstulē minētais vēlamo dāvanu saraksts, kur dāvanas viena no otras
atdalītas ar komatu.
Vari pārbaudīt, vai funkcija darbojas, kā nākas. Ja tavā kodā ieraksta rindiņu
Marija Guna Kriščo. Saņems dāvanas? Jā! Vēlas: lego, kāmītis
Anna Liepiņa. Saņems dāvanas? Nē! Vēlas: kaķēns
4. Funkcija not_enough()
Arī Ziemassvētku vecīša dāvanu krājumi ir ierobežoti, un var gadīties, ka dāvanu ir mazāk
nekā nepieciešams. Ir zināms, ka katrs bērns vēlas tikai tādas dāvanas, kuras ir
Ziemassvētku vecīša sarakstā (tabulā gifts), kā arī nav itin nevienas kļūdas dāvanu
nosaukumos, kurus bērni minējuši savās vēstulēs. Ja bērns atzīmju dēļ dāvanas nesaņems, tad
viņa vēlmes nav jāņem vērā (dāvanas nav jāskaita). Tavs uzdevums ir izveidot funkciju not_enough(), kura:
nesaņem nevienu argumentu;
skola.hex.lv konsolē izvada tās dāvanas, kuras vēl trūkst, kā arī skaitu, cik
šādas dāvanas vēl nepieciešams sagatavot pirms svētkiem (katra dāvana jaunā rindiņā,
rindiņas var atdalīt ar \n).
Vari pārbaudīt, vai funkcija darbojas, kā nākas. Ja tavā kodā ieraksta rindiņu
not_enough();
, tad skola.hex.lv konsolē parādās vairākas rindiņas (neatklāšu, cik), no
kurām divas ir:
Skandas => trūkst 1
Ragavas => trūkst 2
5. Koda sagatavošana iesniegšanai
Tas arī aizmugursistēmai viss! Savu izveidoto PHP kodu gan neatstāj skola.hex.lv, bet izpildi turpmāk aprakstīto, citādi kods netiks ņemts vērā.
Mapē Documents izveido apakšmapi christmas.
Atver mapi christmas ar IDE Visual Studio Code.
Izveido failu back-end.php.
Pārkopē visu savu kodu no skola.hex.lv uz failu back-end.php.
Saglabā izmaiņas, vēlāk, pašās darba beigās mapi christmas saarhivētā formātā
tu iesūtīsi Skolo.lv.
Priekšgalsistēma (front-end)
Ziemassvētku vecītis, lai atvieglotu savu darbu, ir nolēmis izveidot tīmekļa vietni Vēstule Ziemassvētku vecītim. Paredzēts, ka tajā ikviens var nosūtīt Ziemassvētku vecītim vēstuli ar vēlmju sarakstu,
izpildot 3 vienkāršus soļus. Un nu pati labākā daļa – šīs vietnes izveidi Ziemassvētku vecītis
ir uzticējis tieši tev!
Lapai ir jābūt reaģējošai (angļu v. responsive) – tai labi jāizskatās kā uz iPhone SE ekrāna, tā arī uz MacBook Air 13'' ekrāna.
Pēc iespējas jāizmanto HTML Semantic Elements.
Jāseko labajai praksei – jaātdala HTML, CSS, JavaScript, nevajadzētu lietot inline styles, CSS atslēgvārdu !important u.c.
Kad tiek nospiesta poga Sūtīt!, konsolē parādās:
Vārds: [lapas lietotāja ierakstītais vārds]
Uzvārds: [lapas lietotāja ierakstītais uzvārds]
Vēstules teksts: [lapas lietotāja ievadītais vēstules teksts]
Izvēlētās dāvanas: [lapas lietotāja izvēlēto dāvanu nosaukumi, atdalīti ar komatu]
Zemāk ir dots video, kurā redzams, kā jāizskatās gala vietnei.
Paraugs
Resursi
Šeit vari iegūt nepieciešamos attēlus. Spied ar labo peles pogu un lejuplādē!
Darba iesniegšana
Lūdzu, visus failus – back-end.php, HTML, CSS, JavaScript, attēlus – saarhivē
vienā .zip arhīvā un iesniedz Skolo.lv uzdevumā Draugiem Group konkurss.
Vērtēšanas kritēriji
Kopā par darbu var iegūt 88 punktus: 40 par aizmugursistēmu, 48 par priekšgalsistēmu.
Detalizētu vērtēšanas kritēriju apskatu vari atrast šeit vai arī Skolo.lv uzdevumā Draugiem Group konkurss