Viikkotehtävä 8 - Ajax
Toteutaan Ajaxin avulla treenitietokanta.
Yhteiset vaatimukset:
- Luo ensin kanta.sql-tiedoston avulla
SQLite-tietokanta. Katso myös relaatiokuva.
Luo itse tietokannassa käytettävät tunnukset ja salasanat.
Työn tarkistamista varten on luotava ainakin tunnus 'ope', jonka salasana on 'ope'.
Huomaa, että salasana ei saa missään tapauksessa olla tietokannassa kryptaamattomassa muodossa.
- Ensimmäinen ladattava sivu on oltava valmiiksi annettu staattinen XHTML Strict -dokumentti. Sitä ei saa luoda PHP:n avulla. Dokumentti linkitetään erillisiin JavaScript-tiedostoihin.
- Muotoilut pitää pyrkiä tekemään erillisellä CSS-tiedostolla.
- JavaScript-tiedosto saa XMLHttpRequest-olion avulla kutsua PHP-skriptejä.
- JavaScriptissä on käytettävä standardinmukaisia operaatioita (EcmaScript, W3C DOM, W3C XMLHttpRequest) aina kun se on mahdollista.
- Selaimien yhteensopivuusapuna saa käyttää Prototype-kirjastoa. Riittää kuitenkin, että sovellus toimii Firefox 2 tai Firefox 3 -selaimessa.
- Käytetään ISO-8859-1-merkistöä.
- Tietokantaan ei saa tehdä vaatimusten vastaisia lisäyksiä, vaikka joku onnistuisi kiertämään Ajaxilla tehdyt ennakkotarkistukset.
Taso 1
Tee mallin mukainen treenisyöttösivu Ajaxia käyttäen.
- Mallikuvat ja -pohjat:
- Eri lajivaihtoehdot ja treenityyppivaihtoehdot on haettava Ajax-operaationa, joka kutsuu PHP-skriptiä. PHP-skripti hakee vaihtoehdot tietokannasta. Vaihtoehdot on haettava sivun latauksen yhteydessä ja liitettävä sivuun DOM- tai Prototype-operaatioilla.
- Jos käyttäjä kirjoittaa jonkin tunnuksen, jota ei löydy, niin
tästä tulee virheilmoitus. Samoin jos syötetty salasana ei vastaa käyttäjän tietokannassa olevaa salasanaa.
Lisäksi tulee tarkistaa, että on syötetty kelvollinen alkuaika ja kesto.
- Käyttäjänimen tarkistus tehdään Ajax-operaationa aina, kun käyttäjä siirtyy pois nimikentästä. Salasanatarkistus, alkuajan tarkistus ja keston tarkistus tehdään vastaavalla tavalla.
- Tallenna-painike on epäaktiivinen, kunnes lomakkeeseen on syötetty kelvollinen tunnus, salasana, alkuaika ja kesto.
- Treenin tallentamista ei tarvi tehdä ajax-operaationa vaan se voidaan tallentaa tavallisella PHP-ohjelmalla. Näytä tuloksena sivu, jossa on lyhyesti listattuna syötetyn ja tietokantaan tallennetun treenin tiedot.
Taso 3
Tee taso 1 seuraavilla muutoksilla:
- Mallikuvat:
- Eri lajityyppivaihtoehdot ja treenityyppivaihtoehdot on haettava Ajax-operaationa sivun latauksen yhteydessä.
- Käyttäjä valitsee treeniä syöttäessään lajityypin, jonka perusteella listataan vain tähän lajityyppiin kuuluvat lajit. Lajilistaus on haettava Ajax-operaationa palvelimelta, koska lajeja voi koska tahansa tulla uusia.
- Myös treenin tallentaminen tehdään Ajax-operaationa. Tallentamisen jälkeen sivun alaosassa listataan kaikki kyseisen henkilön treenit aikajärjestyksessä (uusin ensimmäisenä).
Taso 5
Lisätään hieman ominaisuuksia taso 3:n ohjelmaan. Kaikki operaatiot tapahtuvat Ajaxin avulla koko ajan samalla sivulla pysyen (sivu ei saa latautua uudelleen).
- Kaikkiin Ajax-operaatioihin pitää liittää jokin selkeä latausindikaattori, jota näytetään kunnes operaatio on suoritettu.
- Listaus henkilön treeneistä haetaan näkyviin heti, kun käyttäjätunnus ja salasana on syötetty oikein.
- Treenin tallentamisen jälkeen voi treeniä edelleen muokata ja tallentaa se uudelleen, jolloin se korvaa edellisen tallennuksen.
- Treenilistauksesta voi valita minkä tahansa vanhan treenin muokattavaksi, jolloin kyseisen treenin tiedot ladataan lomakkeeseen muokattaviksi.
- Treenilistauksessa jokaisen treenin viereen ilmestyy poista-painike, jolla kyseisen treenin voi poistaa. Poistaminen varmistetaan erillisellä dialogilla.

Käyttäjien kommentit
Täytyykö tähän tehdä joku rekisteröitymissivu vai riittääkö, että ope-tunnuksen lisää tuonne tietokantaan suoraan sqlite3 käyttöliittymällä?
Ei tarvitse erillistä rekisteröitymissivua, vaan riittää, että kyseinen tunnus (ja sen salasana) löytyy tietokannasta (kryptatussa muodossa toki).