0

リクエストに基づいたサイトがあり、ユーザーはアイテムをリクエストできます。1日の特定の時間帯に一部のリクエストを制限したいと思います。

たとえば、ユーザーはitem5午後5時から午後8時までしかリクエストできません。残りの時間は利用できません。

私のサイトは、MySQLバックエンドを備えたPHPです。

理想的には、アイテムIDを使用して呼び出すことができる関数が大好きです。この関数は、データベースから時間値をチェックし、trueまたはfalseの値を返します。

誰かがサンプルコードを持っていれば幸いです。私はPHPで時間通りに読んでみましたが、頭がおかしくなりました。

4

3 に答える 3

1

これは、データベースのアイテムテーブルにavailable_startandという名前の2つの列があることを前提としていますavailable_end。これらは両方ともDATETIMEであると想定されています。

function isItemAvailableNow(item_id){
    # Globals are bad but this gets the point across
    global $db;

    # Get the item from the database
    $result = mysql_query("SELECT * FROM items WHERE id = " . mysql_real_escape_string(item_id, $db) . ";");
    $row = mysql_fetch_assoc($result);

    # Pull the beginning and ending availablity time out of the database result
    $available_start = $row['available_start']
    $available_end   = $row['available_end']

    # Get the current time in the same format as the MySQL DATETIME type
    $now = date('%Y-%m-%d %H:%i:%s');

    return ($now >= $available_start) && ($now <= $available_end);
}

このコードはテストされておらず、私はいくつかの仮定をしました(MySQLを使用しているように)が、これで始めることができます。

タイムゾーンも検討する必要がありますが、それは別の議論です。

于 2012-07-09T00:57:34.910 に答える
1

time()、、date()そして多分mktime()あなたが必要なものです。現在の時間を、コンテンツの表示を許可/禁止する時間範囲と比較するだけです。

PHP date()マニュアル-これは本当に強力な関数です

タイムゾーンの問題もあります。

于 2012-07-09T01:05:57.903 に答える
0

time()データ型を使用して、startTimeフィールドとendTimeフィールドをデータベースにポップインできます。これらのフィールドに、それらが利用可能である時間と、それらが戻る必要がある時間を入力します。

次に、クエリが利用可能なアイテムを取り戻すのは簡単なことです。

tableAvailability
|--------------------------------|
| id     | availStart | availEnd |
|--------------------------------|
| 1      | 15:00:00   | 18:00:00 |
| 2      | 12:00:00   | 12:30:00 |
|--------------------------------|


$startTime='15:30:00';
$requiredTime=2; // Showing Hours for example

$sql="
select
    id
from
    tableAvailability
where
    ".$startTime." >= availStart
    and addTime('".$startTime."', '".$requiredTime.":00:00')<availEnd";
于 2012-07-09T01:04:53.353 に答える