あなたの質問は求人掲示板への投稿のように見えます。
あなたがやろうとしていることは、それほど複雑ではありません。おそらく名前、説明、開始タイムスタンプ、終了タイムスタンプ、「繰り返し」ブール値など、appts を格納する MySQL テーブルをセットアップするだけです。Ajax を使用して、任意の時間間隔でデータベースにクエリを実行し、予定が近づいているかどうかを確認します。true の場合、ユーザーに通知します。
時間のフォーマットについては、次のようにすることができます。
function format_date($timestamp1, $timestamp2,$repeating) {
$str = "";
if($repeating) {
$str .= "Every Day";
}
$str .= "From ".date("g:i a",$timestamp1)." To ".date("g:i a",$timestamp2);
return ($str);
}
確認できるいくつかのクエリと、いくつかのテーブル作成 SQL を次に示します。
CREATE TABLE `appointments` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`description` text,
`recurring` int(11) DEFAULT NULL,
`recurrence_type` varchar(50) DEFAULT NULL,
`starting_timestamp` int(14) DEFAULT NULL,
`ending_timestamp` int(14) DEFAULT NULL,
`end_recurring_timestamp` int(14) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1
mysql_query("SELECT * FROM appointments
WHERE recurring=0
AND starting_timestamp <= ". time() + 86400 ."
AND starting_timestamp > ". time() ."
ORDER BY starting_timestamp DESC");
mysql_query("SELECT * FROM appointments
WHERE recurring=1
AND recurrence_type='DAILY'
AND starting_timestamp <= ". time() + 86400 ."
AND end_recurring_timestamp > ". time() ."
ORDER BY starting_timestamp DESC");
毎週および毎月の繰り返しはより複雑になり、SQL クエリ以外での操作が必要になる可能性があります。これは、より高いオーバーヘッドを意味する場合があります。
この例では、日付をタイムスタンプとして保存しています。ただし、それらを文字列として保存し、strtotime() などを使用する方が適切な場合があります。ただし、その機能がどれほど信頼できるかはわかりません。
あなたはアイデアを得ることができます。タイムゾーンのサポートについては、 http://www.ultramegatech.com/blog/2009/04/working-with-time-zones-in-php/およびhttp://www.php.net/manual/en/を確認してください。 class.datetimezone.php