Momenteel heb ik op vraag van een school een kleine website draaien. De opzet is vrij eenvoudig: een aantal leerlingen krijgt beschikking over een reeks hulpmiddelen afhankelijk van de achtergrond van die leerling. De maatregelen zijn verdeeld over verschillende categorieën bv. algemeen, taalkundig, ...
Het doel was om een fiche te kunnen aanmaken voor een leerling met daarin enkele basisgegevens (naam, datum opstart, datum contact ouders, ...) en uiteraard alle maatregelen van toepassing. Belangrijk hierbij is dat de maatregelen gespecificeerd zijn per onderwijsjaar. Zo wordt de fiche een aangroeifiche waarbij het steeds mogelijk is om een volgend schooljaar nieuwe maatregelen bij aan te duiden alsook terug te kunnen gaan kijken naar het verleden. Dat is een simpele tabel met alle jaren in en een kruisje per jaar.
De begeleider kan per maatregel en per jaar een vak aanvinken. De fiche moet later te bewerken zijn.
Gewone gegevens opvragen en opslaan zijn niet het probleem, wel de maatregelen. Een tweetal jaar geleden heb ik dit opgelost, maar nu blijkt dit niet de ideale manier te zijn. Ze willen maatregelen kunnen verwijderen, maar daarmee hield ik geen rekening (dom). Nu een maatregel verwijderen zal verregaande gevolgen hebben vrees ik. Een tweede probleem is dat er een bug is opgedoken (nu pas) bij het ophalen van de maatregelen doordat er achteraf maatregelen in verschillende categorieën zijn bijgevoegd.
Hier even een voorbeeld van hoe de maatregelen van het kind opgeslagen worden in de database:
Volgende afbeelding is hoe dit er op de fiche uitziet:
Elke maatregel-id staat tussen piping-teken. Voor die maatregelen staan daar alle leerjaren op. 1:L1 betekent maatregel met id #1 voor L1. Als er meerdere leerjaren van toepassing zijn dan staan die tussen dezelfde piping-tekens.
Binnen PHP splits ik de maatregelen op in een array via de piping-tekens en later doe ik hetzelfde voor de leerjaren.
De categorieën staan in een database, de maatregelen staan in een database, de fiches van de leerlingen staan in een database. Ik heb het idee dat de manier van opslaan, ophalen, ... niet erg goed bedacht zijn, maar kan ook niet echt een alternatief verzinnen ervoor. Daarvoor zoek ik hulp. Wat zou een betere database-structuur zijn? Wat zou een goede manier zijn om de maatregelen per kind en per leerjaar bij te houden?
Ik heb beslist om helemaal van nul te beginnen met de website. Aanpassen lijkt me, hoewel ik binnen de code goed heb gedocumenteerd, meer werk dan opnieuw beginnen. Graag blijf ik bij de PHP/MySQL combinatie, maar ik zou in een later stadium alles eens willen proberen omzetten naar Django.
Disclaimer: het was een leerproject voor mij. Ik ben geen superprogrammeur en vond het wel leuk om daar wat van mijn tijd aan te besteden. Ik heb er veel uit geleerd, ook uit de fouten die ik heb gemaakt.
Het doel was om een fiche te kunnen aanmaken voor een leerling met daarin enkele basisgegevens (naam, datum opstart, datum contact ouders, ...) en uiteraard alle maatregelen van toepassing. Belangrijk hierbij is dat de maatregelen gespecificeerd zijn per onderwijsjaar. Zo wordt de fiche een aangroeifiche waarbij het steeds mogelijk is om een volgend schooljaar nieuwe maatregelen bij aan te duiden alsook terug te kunnen gaan kijken naar het verleden. Dat is een simpele tabel met alle jaren in en een kruisje per jaar.
De begeleider kan per maatregel en per jaar een vak aanvinken. De fiche moet later te bewerken zijn.
Gewone gegevens opvragen en opslaan zijn niet het probleem, wel de maatregelen. Een tweetal jaar geleden heb ik dit opgelost, maar nu blijkt dit niet de ideale manier te zijn. Ze willen maatregelen kunnen verwijderen, maar daarmee hield ik geen rekening (dom). Nu een maatregel verwijderen zal verregaande gevolgen hebben vrees ik. Een tweede probleem is dat er een bug is opgedoken (nu pas) bij het ophalen van de maatregelen doordat er achteraf maatregelen in verschillende categorieën zijn bijgevoegd.
Hier even een voorbeeld van hoe de maatregelen van het kind opgeslagen worden in de database:
code:
1
| |1:L4,1:L5,1:L6|2:L4,2:L5,2:L6|3:L4,3:L5,3:L6|4:L4,4:L5,4:L6|31:L4|61:L4,61:L5,61:L6|62:L4,62:L5,62:L6|66:L4,66:L5,66:L6|69:L4,69:L5| |
Volgende afbeelding is hoe dit er op de fiche uitziet:
Elke maatregel-id staat tussen piping-teken. Voor die maatregelen staan daar alle leerjaren op. 1:L1 betekent maatregel met id #1 voor L1. Als er meerdere leerjaren van toepassing zijn dan staan die tussen dezelfde piping-tekens.
Binnen PHP splits ik de maatregelen op in een array via de piping-tekens en later doe ik hetzelfde voor de leerjaren.
De categorieën staan in een database, de maatregelen staan in een database, de fiches van de leerlingen staan in een database. Ik heb het idee dat de manier van opslaan, ophalen, ... niet erg goed bedacht zijn, maar kan ook niet echt een alternatief verzinnen ervoor. Daarvoor zoek ik hulp. Wat zou een betere database-structuur zijn? Wat zou een goede manier zijn om de maatregelen per kind en per leerjaar bij te houden?
Ik heb beslist om helemaal van nul te beginnen met de website. Aanpassen lijkt me, hoewel ik binnen de code goed heb gedocumenteerd, meer werk dan opnieuw beginnen. Graag blijf ik bij de PHP/MySQL combinatie, maar ik zou in een later stadium alles eens willen proberen omzetten naar Django.
Disclaimer: het was een leerproject voor mij. Ik ben geen superprogrammeur en vond het wel leuk om daar wat van mijn tijd aan te besteden. Ik heb er veel uit geleerd, ook uit de fouten die ik heb gemaakt.