Jag funderar på att fixa en funktion som skall generera skolscheman, men jag vet inte hur jag skall planera databasen och dess tabeller, finns det någon son har någon ide?
Förutsättning:
Nytt schema varje vecka.
Rumsnummer kopplat till varje tidsenhet.
Schemat är individuellt.
för att krångla till saker så bör man ju kunna hantera saker klassvis om man tänker sig att det skall finnas nån form av administrationsgränssnitt på det hela. Kan bli lite trist att sitta och mata in 30 poster för att klass 7a skall ha svenska. Ytterligare knepigheter är väl då om man skall ta hänsyn till halvklass osv
Det hela beror nog på hur stort man vill göra det hela.
Men visst bör en elev tillhöra en klass så schemalägger man klasserna.
Glöm nu inte periodiciteten dvs från datum till datum.
för att krångla till saker så bör man ju kunna hantera saker klassvis om man tänker sig att det skall finnas nån form av administrationsgränssnitt på det hela.
Precis! Detta ska fungera som ett mindre admin system för lärare.
Jag har fortfarande inte kommit någonstans med mitt "schema".
Är fortfarande lite osäker på hur jag ska strukturera upp det hela. :r
Schemat ska vara "löpande".
Det kommer fungera som så att det är en (1) lärare per elev.
En "admin" ska kunna klicka på ett tomt fält/ledig tid (se screen) för att sedan boka in en (1) elev.
Man ska även kunna boka in elever flera veckor framåt.
Räcker det med att ha följande tabeller:
elever
lärare
tider
Är återigen tacksam för alla förslag på hur jag kan bygga upp det hela.
(Har bifogat ett exempel på hur jag vill att det hela ska se ut.)
jag skulle nog ha tabellerna
elever
lärare
klassrum
lektioner
lektioner är då den tabell som själva schemat ligger i och där har man fält för
startTid
slutTid
ElevID
LärarID
KlassRumsID
Precis... ungefär så hade jag tänkt. ;)
Hur ritar/skapar man sen själva schemat från mysql?
Vill gärna att alla tider/rum ska visas, även om ingen elev är bokad för just den tiden, i det klassrummet. *lite svårt att förklara*
EDIT: Hur löser jag det enklast med tiderna?
Alltså... när man klickar på ett tomt fält, då ska tiderna redan vara "förinställda".
Hela schemat kommer mer eller mindre fungera som en "vanlig" kalender, där varje schema ska hämtas/genereras beroende på vilken dag man väljer.
vanliga metoden är ju att man skriver ut en kalender, eller i det här fallet ett schema och för varje position man skriver ut så kontrollerar man om det finns en "bokning"
finns det inget så skrivs ju den rutan ut, men utan innehåll=bokningsbar
jag har gjort nåt liknande fast mot den inbyggda kalender-kontrollen i asp.net
där hämtade man helt enkelt ut alla "bokningar" till en collection och sen för kollar man mot den.
nånting i stil med detta borde funka (pseudokod)
//Hämta aktuella bokningar för denna dag
SQL="SELECT startTime,...... WHERE date(startTime)=[valda dagens datum]
//Stoppa in resultatet i tex en array
//skriv ut tabellhuvud
<table>
<tr><td>Tid</td><th>Klassrum 1</th>.... osv
//Loopa ut rader för alla "lektionsblock"
<tr>
<td>[tiden]</td>
//Här nånstans måste man då kolla om det finns en bokning för just detta block och i vilken "cell" det skall ligga
if bokning_finns then
Skriv ut cell med bokningsinfo
Else
skriv ut en bokningsbar cell
End If
//Slut loop
</tr>
hur du löser kontrollen av vilket klassrum det gäller är den pilliga biten
men om du skriver ut klassrummen ordnat efter ID så borde det vara enkelt
för att lösa att tiden skall vara förinställt är väl enklast om man skickar med starttiden som en variabel i det script som öppnar inmatningsrutan
ha en länk som är lika stor som tabellcellen och en onclick på den som anropar tex openMakeBooking(starttiden) denna öppnar då en popup med sidan MakeBooking.aspx?sTime=starttiden.
sen får den sidan fixa till så att starttiden sätts i rätt fält, och då även lägga på tid så att sluttiden sätts
Det här förutsätter ju dock att varje lektion bara är tex 40 min, skall man ha dubbelpass så blir det lite knepigare
Tack för infon, ska kolla lite på detta. :birp
(Sedan ska man kunna boka antingen 30 eller 60 minuter.)
Men eftersom att jag vill visa alla tider (utfyllnad) även om det inte finns någon bokning för just den tiden, hur löser jag då det? *sorry för luddiga förklaringar*
som jag gjorde ovan ;)
dvs du skriver ut alla tider men stoppar bara in info i de det finns bokningar
så det du bygger är först kod som skapar scema-layouten "parallellt" med det så stoppr du in bokningarna i schemat
jag klurade lite på det här med 30 eller 60 min bokningar
det går ju att lösa genom att varje "cell" egentligen är 2 celler, sen vid utskriften får man kolla om bokningen är 60 eller 30 min lång
(vid bokningsformuläret får men dessutom göra en dubbelkoll så att ingen försöker att boka tex mellan 10:00 och 11:00 när det redan finns en bokning 10:30-11:00 i det klassrummet)
du skriver ut alla tider men stoppar bara in info i de det finns bokningar
så det du bygger är först kod som skapar scema-layouten "parallellt" med det så stoppr du in bokningarna i schemat
Jo, jag läste det sedan. :r
Men var får jag tiderna ifrån?
du får helt enkelt ta en starttid tex 07:00
och sen lägga på 30 min i gammal klassisk ASP skulle det bli nånting i stil med
Dim startTime : startTime=TimeSerial(7,0,0)
For i=0 To 10
Response.write(formatDateTime(startTime,4)&<br />")
startTime=DateAdd("n", 30,startTime)
Next
du måste ju ändå generera hela tabellen för schemat dynamisk