2009-09-02 7 views
3

私はユーザーが "スケジュール"を挿入できる小さなスクリプトを開発しようとしています。しかし、私はDB構造を作成する方法の論理を決定する助けとデータベースのイベントの "時間"を入力する方法が必要です。PHP/MySQLを使用したスケジューリングスクリプト - ロジックのヘルプ

ただし、ユーザーが「スケジュール」を入力すると、正確な日付は入力されません。代わりに、彼らは「週の曜日」に入るでしょう。多少「定期的な」予定に似ています。あなたのよう午後3:00 等...

- 10:00 MW - - 午前8時 - 午後2:00

MWF:

たとえば、ユーザーAは、次のタイムスケジュールを入力することができます私は、必ずしも正確な日付ではなく、一般的な「曜日」を使用する方法を探しています。

これを念頭に置いて、これをデータベースに保存するにはどのような方法がありますか。最終的には、使用可能な時間を検索するためにデータベースにクエリを実行している可能性があります。

ミリ秒または秒で入力する必要がありますか?日曜日の "0"は午前12時ですか?

どのような提案も素晴らしいでしょう。

ありがとうございます!

答えて

3

まず、MySQLにはtime data typeが含まれています。私はあなたがそれを活用することを強くお勧めします。あなたのテーブル(これはacadmicスケジューリングのためですが、同じ基本的な考え方が適用されます)のためにとにかく

、:今すぐ

DaysOfWeek 
---------- 
DowID int 
DayOfWeek varchar(10) 

Users 
------------------------ 
UserID int autoincrement 
UserName varchar(50) 
PassHash varbinary(100) 
FirstName varchar(50) 
LastName varchar(50) 
DOB datetime 

Semesters 
---------------------------- 
SemesterID int autoincrement 
SemesterName varchar(50) 
SemesterNumber int 
AcademicYear int 
CalendarYear int 

Classes 
------------------------- 
ClassID int autoincrement 
ClassName varchar(50) 
ClassCode varchar(25) 

Schedule 
---------------------------- 
ScheduleID int autoincrement 
UserID int 
SemesterID int 
DowID int 
ClassID int 
BeginTime time 
EndTime time 

、あなたが誰かが間の月曜日に利用できるかどうかを確認するために行う必要があると思いますすべて1と2は次のとおりです。

select 
    count(*) as classes 
from 
    schedule sch 
    inner join users u on 
     sch.userid = u.userid 
    inner join semesters sem on 
     sch.semesterid = sem.semesterid 
where 
    u.username = 'rmcdonald' 
    and sem.academicyear = 2009 
    and sem.semesternumber = 1 
    and sch.dowid = dayofweek($mytime) 
    and $mytime between sch.begintime and sch.endtime 

は、あなたがそこにチェックしているものは何でも時間とともに$mytimeを交換してください。

+0

それは素晴らしいです、Eric。感謝万円。 – Dodinas

関連する問題