Olen toteuttamassa koululleni ATK-luokan varausjärjestelmää. Toteuttaminen ei sinänsä ole ongelma, mutta minun versiostani syntyisi 16-20 kyselyä tietokantaan/sivulataus. Miten voisin minimoida tämän yhteen tai maksimissaan kahteen kyselyyn? Itse koodia (PHP) en ole vielä kirjoittanut, mutta perusmatematiikalla arvioin, että kyselyjä tulisi tuolla minun versiollani aika paljon.
Opettaja voi siis varata joko pienen tai suuren ATK-luokan. Luokka voidaan varata joko puoleksi tunniksi (n. 40 min) tai koko tunniksi (75 min).
Valitettavasti kysymykseesi ei voi hirveän kattavasti vastata, koska et ole kertonut mitä nuo 16-20 kyselyä tietokantaan ovat.
Tai no tietty voisi sanoa että niputa kyselyt yhdeksi unionilla ja luovalla kenttien uudelleennimeämisellä. Tässä ratkaisutavassa ei kuitenkaan olisi mitään järkeä, eikä edes onnistuisi jos myöhemmät kyselyt käyttävät aikaisempien kyselyjen tietoja.
Sellaisen yleisen vinki voin toki antaa, että tallenna kirjautumisen yhteydessä istuntoon sellaiset käyttäjäkohtaiset tiedot, joita ei tarvitse ladata jokaisella sivulla.
Sanoinhan, ettei koodi ole vielä valmis, mutta nyt ...
Ehkä jos tästä kuvasta olisi apua:
http://petjatouru.com/kuvat/atk.png
Kuten kuvassa näette, pitäisi tarkistaa SQL-kyselyllä, onko luokka vapaana näkyvinä tunteina (1-4). Kyselyjä syntyisi ainakin 16. Jos luokka ei ole vapaana, lisättäisiin buttoniin disabled-atribuutti. Kyselyjen määrä nousisi 18, kun haluttaisiin vielä näyttää luokkien tila juuri nyt. Ja koska kyseessä on varausjärjestelmä, pitäisi toki sillä pystyä myös luokka varaamaankin. Siitäkin tulee ainakin yksi kysely.
Tällaisissa kysymyksissä kannattaisi kertoa mahdollisimman tarkkaan tietokannan ja kyselyiden rakenne.
Itse toteuttaisin homman taululla joka olisi esimerkiksi muodossa:
ID|PVM|alkuaika|loppuaika|luokka|varaaja
Tämän jälkeen katselunäkymään riittäisi yksi kysely tyyliin:
...WHERE PVM = CURRENT_DATE() ORDER BY alkuaika ASC
Jolla saadaan aikaiseksi helposti käsiteltävä array, jossa tiedot ovat aikajärjestyksessä.
Tulostaessa katsotaan alku- ja loppuajoista onko kyseiselle aikavälille varausta ja hoidetaan tulostaminen asiaan kuuluvalla tavalla.
Kiitos, yritän soveltaa tuon koodin tarpeideni mukaisesti.
Aihe on jo aika vanha, joten et voi enää vastata siihen.