1

ホラみんな

私は、管理者がクラスに参加した人をチェックできるphpWebアプリを作成している最中です。

私はデータベースに次のデータを持っています

学期開始日、学期終了日、授業日時

例えば、

5 March 20129th April 2012 Monday{9,12},Thursday{14,17}

開始日と終了日に基づいて合計週数を取得できます。問題は、クラスが想定する日付を取得する方法にあります。たとえば、月曜日のように、9日と想定されますが、木曜日はどうでしょうか。動的に。

PHPクラスやアプローチはありますか?

どうもありがとう

4

2 に答える 2

4

日付関数を自分で実装しないでください。日付の処理には多くの落とし穴があります。次のような文字列を使用して、 strtotimeを使用して日付を反復処理できます。strtotime("next Thursday", yourdate)

于 2012-04-10T15:40:29.290 に答える
1

この時点でデータの形式を変更する傾向があるかどうかはわかりませんが、データベースを構造化することをお勧めします (これにより、質問する情報の種類のクエリが大幅に簡素化されます) は次のようになります。

CREATE TABLE `student_attendance` (
  `student` INT(11) NOT NULL,
  `class` DATETIME NOT NULL,
  `attended` BOOLEAN NOT NULL,
  PRIMARY KEY (`student`,`class`)
)

次に、学生が出席した日数を照会するには、次のようにします。

SELECT COUNT(*) 
FROM `student_attendance` 
WHERE `student` = '1'
AND `attended` = TRUE;

もちろん、あなたが達成しようとしていることを正確に知らなければ、これが完全に適切であるとは言えません。データを保存するために使用している形式は、あなたの人生を不必要に困難にするように思えますが (異なるデータポイントを 1 つの列に結合しています。それはノーノーです)、これは改善だと思います.

編集: より正確に言うと、(日付と時刻ではなく) 日付と期間を保存します。例えば:

CREATE TABLE `student_attendance` (
  `student` INT(11) NOT NULL,
  `class_date` DATE NOT NULL,
  `class_period` TINYINT(4) NOT NULL,
  `attended` BOOLEAN NOT NULL,
  PRIMARY KEY (`student`,`class_date`,`class_period`)
)
于 2012-04-10T15:56:34.280 に答える