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): 83.149.95.206
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