0

こんにちは、私のシナリオは、特定の日にユーザーがデータを更新できるが、更新を 3 回だけに制限するというものです。これまでの私のコードは次のとおりです。

if(date('m','d' == '04','01')){
     $sql="update tbl_enroll fields,fields,fields where student_id='".$_POST['student_id'] . "'";
     $pow = mysql_query($sql) or die (mysql_error());
}

彼の更新を制限する方法について何か考えはありますか? 私のデータベース構造で変更する必要があるものはありますか? 助けていただければ幸いです。

4

3 に答える 3

4

テーブルにカウント列を追加し、ユーザーが更新するたびにインクリメントします。カウントが 3 の場合、操作を許可せず、エラー メッセージを表示します。

于 2012-09-09T13:31:49.133 に答える
3

@TigOldBitties が提案したようにカウント列をテーブルに追加し、WHERE 句の最後に追加しますAND updateCount <= 3

--if(date('m','d' == '04','01')){は正しいですか? そうあるべきだと思うif(date('m','d') == '04','01'){

-- そして、それif(date('m','d') == '04','01'){は正しくありませんが、ここで何をしようとしているのですか?

于 2012-09-09T13:37:29.133 に答える
2

tbl_enroll に「カウンター」を追加します。このようなもの:

ALTER tbl_enroll ADD COLUMN counter SMALLINT UNSIGNED NOT NULL;

次に、コードは次のようになります。

// check how many times has this user edited:
$sql = 'SELECT counter FROM tbl_enroll WHERE student_id=123';
$pow = mysql_query($sql) or die (mysql_eror());
$pow = mysql_fetch_assoc($pow);

$allowed = true;
if ($pow['counter'] >= 3) $allowed = false;

if (date('m') == '04' && date('d') == '01' && $allowed) { // allow edit only on april 1
    $sql = "UPDATE tbl_enroll SET something='something',other_field='',counter=(counter+1) WHERE student_id=123"; // this is just an example, please focus on "counter=(counter+1)"
    $pow = mysql_query($sql) or die (mysql_error());
}
于 2012-09-09T13:40:03.287 に答える