2

phprunner を使用してデータ キャプチャ フォームを開発し、データは mysql データベースで更新されます。

入力中のタイプミスのため、ユーザーが自分のデータのみを編集できるようにし、さらにこれを 1 つのフィールド (自由なテキストとエラーが発生しやすいフィールド) に制限しました。

一定期間、たとえば 1 日後にレコードにロックを設定することは可能ですか。
ここでの目標は、ユーザーの「編集」機能に一種の有効期限を設定することです。これにより、保存されたレコードから取得された履歴レポートは常に同じになります。

もしそうなら、どうすればこれを達成できますか?

ありがとう

4

4 に答える 4

0

これにより、データベースの更新が妨げられるだけで、ユーザーの[更新/送信]ボタンが非表示になることはありません。

 UPDATE table
    SET  ...
 where last_update < date_sub(now(), interval 1 day)
      And id = $id

ボタンをユーザーから隠すには(フロントエンドで)

SELECT 
    id, 
    IF(last_update < date_sub(now(), interval 1 day), 1, 0) as show_update_button
    .....
于 2012-11-05T21:57:25.940 に答える
0

テーブルに入力された日付の列を設定し(現在の時刻にはNOW()を使用)、ユーザーが投稿を更新しようとしたときにそれを確認できます。date_add()またはdate_sub()を使用して、時差を計算します。

于 2012-11-05T21:40:17.637 に答える
0

作成日列を作成し、その日付と今日の日付の間の datediff を確認します。1より大きい場合は、phpなどを使用してロックできます。

if ($timeDiff greater than a day){
    disable edit button
else
    enable edit button
}
于 2012-11-05T21:43:07.030 に答える
0

簡単な方法は、最初にレコードを編集できるかどうかを確認することです。たとえば、編集フォームを作成するときに、レコードが作成されてからどれくらい経ったかを確認します。1 日を超える場合は、フォームの代わりに「申し訳ありませんが、編集は無効です」と出力します。

とにかくフォームを偽造してデータを送信できる比較的賢いユーザーがいる場合は、SQLupdateレベルでフィルタリングを実行して変更を禁止することもできます。

UPDATE yourtable
SET ...
WHERE (id = $id) AND ((record_created + interval 1 day) > now())
于 2012-11-05T21:46:17.723 に答える