Avatar billede mungojerrie Nybegynder
07. august 2008 - 23:17 Der er 14 kommentarer og
1 løsning

Find næste træningsdag

Hej folkens
Vil gerne have lidt ideer til hvordan jeg løser min situation bedst.

Jeg har en kalender side som viser hvilke dage der er træning og under denne kalender har jeg 3 kolonner, hvor første kolonne viser dags dato, som ikke nødvendigvis er en dag med træning. De to sidste kolonner skal så vise hhv næste træning og den næste efter den igen.

Jeg har en del tabeller til at holde data for mig, som I kan se nedenunder.

'trainingday'
id         int(10)
training_day     varchar(35)
sort         int(10)

'traininginfo'
id                     int(10)    
training_starttime_id     int(10)
training_endtime_id     int(10)
training_day_id     int(10)
training_place_id      int(10)
remark_id             int(10)
sort                 int(10)

'trainingplace'
id         int(10)
training_place     varchar(35)
sort         int(10)

'trainingremark'
id     int(10)           
remark     varchar(255)
sort     int(10)

'trainingtimes'
id             int(10)
training_info_id     int(10)
team_id         int(10)
sort             int(10)


Min ide går på at finde næste dag ud fra dette sql join:

select
    trainingday.training_day
from
    trainingday,
    trainingtimes,
    traininginfo
    trainingplace
where
    trainingday.id = traininginfo.training_day_id
    and trainingtimes.training_info_id = traininginfo.id
    and trainingday.id = traininginfo.training_day_id
    and trainingplace.id = traininginfo.training_place_id
    and trainingtimes.team_id = $holdid
    and trainingday.training_day <> '$day'
    order by trainingday.sort
    limit 1

Parameter $day indeholder "Mandag....Søndag";

Herefter vil jeg beregne datoen for næste træningsdag udfra dagens numeriske værdi

Hvad har I af bud på en løsning?
Avatar billede jakobdo Ekspert
08. august 2008 - 09:56 #1
Nu har jeg ikke nærlæst dine tabeller.
Men næste træningsdag, er jo:

SELECT * FROM tbl_840856 WHERE dag > CURDATE() ORDER BY dag LIMIT 1
Avatar billede jakobdo Ekspert
08. august 2008 - 09:57 #2
Og kunne næste igen ikke bare trækkes ud samtidig, med at rette LIMIT 1 til LIMIT 2 ?
Avatar billede mungojerrie Nybegynder
08. august 2008 - 10:01 #3
ahh, ikke helt, jeg har nemlig i datoer i mine tabeller men ugedage, altså
Mandag, Tirsdag, Onsdag ..... Søndag
Et hold kan altså have træningsdage eks Mandag, Tirsdag, Torsdag
Så hvis den dag jeg kigger på er Tirsdag, skal jeg have fat i Torsdag.
Hvis Det er Torsdag, skal jeg ha Mandag.
Avatar billede jakobdo Ekspert
08. august 2008 - 10:22 #4
Men hvordan holder du så styr på næste træningsdage ?
De hedder vel ikke bare mandag, tirsdag, onsdag og så om igen ?
Avatar billede mungojerrie Nybegynder
08. august 2008 - 10:34 #5
jeg får jo en dato fra min kalender side, som eks kan være 2008-08-10 (På søndag)
så har jeg jo 'Søndag' som $day og der er så ingen hold der har træning om søndagen, så min første kolonne vil angive at der ingen træning er, næste kolonne skal så vise Mandag, hvis holdet har træning dér. Den sidste kolonne kan så vise Torsdag, hvis holdet har træning dér.
Gav det mening?
Avatar billede jakobdo Ekspert
08. august 2008 - 10:46 #6
Nej, for jeg forstår stadig ikke hvilke data du gemmer i din tabel.
Du bruger jo åbenbart ikke date / datetime felter. :o)
Avatar billede mungojerrie Nybegynder
08. august 2008 - 11:08 #7
nej, det gør jeg ikke, for det vil jo ikke virke næste år så, derfor er det kun ugedage..... :-)
gemmer altså kun ugedagene
Avatar billede jakobdo Ekspert
08. august 2008 - 11:11 #8
Og hvordan gør du det ?

En træningsdag på mandag, hvordan ser den ud i din tabel ?
Avatar billede mungojerrie Nybegynder
08. august 2008 - 11:35 #9
ja, der er jo mange tabeller, men selve den tabel der indeholder de dage en træning kan foregå ser sådan ud:
'Traningday'
id     training_day     sort
1     Mandag         1
2     Tirsdag     2
3     Onsdag         3
4     Torsdag     4
5     Fredag         5
6     Lørdag         6
7     Søndag         7

Samlet udtræk fra den store query postet tidligere:
id     training_day     sort     id     training_info_id     team_id     sort     id     training_starttime_id     training_endtime_id     training_day_id    training_place_id     remark_id     sort     id     training_place                     sort
1     Mandag             1         34     32                     1             NULL     32     13                         25                         1                 2                     -1             NULL     2     Aarhus Svømmestadion (Ny sal)     2
2     Tirsdag         2         35     30                     1             NULL     30     7                         15                         2                 3                     -1             NULL     3     Katrinebjerg skole                 3
4     Torsdag         4         36     26                     1             NULL     26     10                         17                         4                 1                     -1             NULL     1     Aarhus Svømmestadion (Gl sal)     1
Avatar billede mungojerrie Nybegynder
08. august 2008 - 11:36 #10
sidste udtræk vises nok bedst hvis du paster den over i en teksteditor
Avatar billede jakobdo Ekspert
08. august 2008 - 11:40 #11
Og den giver f.eks. træning man, tirs og tors.
Og hvis vi som i dag har fredag, skal den vise mandag, korrekt ?
Avatar billede mungojerrie Nybegynder
08. august 2008 - 12:14 #12
ja og ja, korrekt :-)
Avatar billede jakobdo Ekspert
25. august 2008 - 16:03 #13
Jeg har desværre ikke rigtigt noget input eller gode ideer på nuværende tidspunkt.
Beklager.
Avatar billede mungojerrie Nybegynder
18. oktober 2008 - 22:11 #14
fandt selv løsningen....
Avatar billede jakobdo Ekspert
19. oktober 2008 - 10:49 #15
Hvad blev din løsning ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester