PDA

View Full Version : حذف خودکار یک رکورد در جدول



hassan68
یک شنبه 17 اردیبهشت 1391, 02:58 صبح
با سلام
دوستان چجوری میشه یک رکوردی وقتی تو دیتابیس ذخیره میکنیم براش تاریخ انقضا بزاریم که وقتی رسید به اون تاریخ اون ردیف خودش خودکار حذف بشه
مثلا یک پیام بزاریم تو تاریخ x
و بگیم مثلا تو تاریخ y خودش حذف بشه

djsaeedkhan
یک شنبه 17 اردیبهشت 1391, 08:38 صبح
سلام
می تونید وقتی فیلد تاریخ انقضا گذاشتید ، توسط Cron Jobs این کار انجام بشه که هر 2 ساعت بره سراغ جدول و اونایی که تاریخ انقضاش رسیده خذف کنه
می تونید یه تابع هم بنویسید که مثلا وقتی کاربر وارد صفحه فلان شد اون تابع فعال بشه و بره کار حذف رو انجام بده

MMSHFE
یک شنبه 17 اردیبهشت 1391, 12:40 عصر
یک راه دیگه هم هست. کلاً یک اسکریپت جدا بنویسید که جدول اطلاعات رو که براشون تاریخ انقضا هم گذاشتین چک کنه و اونهایی که تاریخ انقضای اونها رسیده یا گذشته، حذف کنه. مثلاً برای تاریخ انقضا یک فیلد از نوع int میگذارین و timestamp تاریخ انقضا رو توش ذخیره میکنید. بعد این کد رو توی فایل del_expired.php مینویسید:


date_default_timezone_set('Asia/Tehran');
$time = time();
mysql_connect('localhost', 'root', '') or die('Connection error');
mysql_select_db('dbname') or die('Database error');
mysql_query("DELETE FROM `table` WHERE (`expire_time`<='{$time}')");

حالا کافیه توی همه اسکریپتهاتون یا توی اسکریپتی که همه جا ضمیمه میشه (مثل config.php و...) این فایل رو ضمیمه کنید. اینطوری به محض اینکه اولین ارتباط با سایت برقرار بشه، تمام رکوردهایی که تاریخ انقضای اونها رسیده یا رد شده، حذف میشن.
موفق باشید.

hassan68
یک شنبه 17 اردیبهشت 1391, 16:21 عصر
یک مشکلی که پیدا کردم اینه که


$timestamp=time(); //current timestamp
echo "Current Time: $timestamp<br>";

$t=$tarikh*86400;//
$tm=$timestamp+$t;
echo "Current Time ! $tm <br>";
$da=date("Y-m-d H:i:s", $timestamp);
echo "Current time string: $da <br>";
$da1=date("Y-m-d H:i:s", $tm);
echo "Modified time: $da1 <br>";

که وقتی میخوام da1 رو تو دیتابیس ذخیره کنم به جای اینکه کلی بره تو دیتابیس یعنی تاریخ کلی همرا با ساعت فقط 2012 میره
مشکل چیه>؟

hassan68
یک شنبه 17 اردیبهشت 1391, 16:34 عصر
آقا حل شد
مشکل از type ستون اون جدول بود که گذاشتم timestamp و حل شد