تریگر کردن تابع در MySQL

praise

Member
سلام
من یه سایت دارم که می خوام افرادی که تا 3 روز عضویت خودشون رو فعال نکرده اند به طور خود کار پاک شوند.
یه جدول به اسم users دارم که یه ستون به اسم reg_date داره که روز عضویت رو نشون می ده:

  • سوال 1 - جطور می شه با کد SQL تفاوت دو تاریخ رو فهمید؟
  • سوال 2 - چطور میشه یه کد SQL نوشت که در موقعی که دو تاریخ از هم 72 ساعت (3 روز) اختلاف زمانی دارند؛ به طور خودکار QUERY زیر را تریگر کند؟
delete from users where id=1 limit 1​
ممنون که به سوال من جواب میدید!!!!!!!
 
آخرین ویرایش:

ziXet

مدیر انجمن PHP/MYSQL
سلام
من یه سایت دارم که می خوام افرادی که تا 3 روز عضویت خودشون رو فعال نکرده اند به طور خود کار پاک شوند.
یه جدول به اسم users دارم که یه ستون به اسم reg_date داره که روز عضویت رو نشون می ده:

  • سوال 1 - جطور می شه با کد SQL تفاوت دو تاریخ رو فهمید؟
  • سوال 2 - چطور میشه یه کد SQL نوشت که در موقعی که دو تاریخ از هم 72 ساعت (3 روز) اختلاف زمانی دارند؛ به طور خودکار QUERY زیر را تریگر کند؟
delete from users where id=1 limit 1​
ممنون که به سوال من جواب میدید!!!!!!!
خوب تو باید reg_date رو بر اساس تابع ()time تعریف کنی بعدش یه کوئری مینویسی به این صورت:
DEL --- WHERE reg_date < ()time - 3600*24*3
البته راهای دیگه ای هم هست ولی این خیلی راحته
فقط یادت باشه که تو reg_date تاریخ ها رو بر اساس ()time بذاری یعنی فقط ثانیه
 
آخرین ویرایش:

praise

Member
نه! این جواب من نبود!!

اولاً ممنونم که به من جواب دادی ولی این جواب سوال من نبود بلکه یه کلک خوب برای حل سریع مسئله بود.
من خواستم که یک QUERY بنویسید که اختلاف دو تاریخ رو به روز و ساعت بده مثلاً:
Select DATE_DIFF(DATE1, DATE2)​
البته توابعی مثل SUBDATE و ... هست که من نتونستم ازش خوب استفاده کنم. اگه پای کامپیوتر خودم بودم می تونستم تمام QUERY هایی که جواب ندادن رو برات بفرستم. این از سوال اولم.
سوال دومم این بود که من نمی خوام وارد صفحه ای که تابع پاک کردن رو به زبان PHP نوشتم؛ بشم بعد عملیات پاک کردن انجام بشه، بلکه این تابع در SERVER و یا MYSQL تعریف بشه تا بصورت خودکار که اختلاف دو تاریخ به 72 ساعت رسید، این ردیف از جدول پاک بشه. (البته میشه یه تابع به زبان PHP در صفحه اول سایت گذاشت - کلک:D)
باز هم به خاطر جوابتون تشکر می کنم:oops:
 

yakoza

Well-Known Member
اون چیزی که شما می خوایی با cron Job و او کوئری که Shahkey.com داد حل میشه

موفق باشید
 

ziXet

مدیر انجمن PHP/MYSQL
اولاً ممنونم که به من جواب دادی ولی این جواب سوال من نبود بلکه یه کلک خوب برای حل سریع مسئله بود.
من خواستم که یک QUERY بنویسید که اختلاف دو تاریخ رو به روز و ساعت بده مثلاً:
Select DATE_DIFF(DATE1, DATE2)​
البته توابعی مثل SUBDATE و ... هست که من نتونستم ازش خوب استفاده کنم. اگه پای کامپیوتر خودم بودم می تونستم تمام QUERY هایی که جواب ندادن رو برات بفرستم. این از سوال اولم.
سوال دومم این بود که من نمی خوام وارد صفحه ای که تابع پاک کردن رو به زبان PHP نوشتم؛ بشم بعد عملیات پاک کردن انجام بشه، بلکه این تابع در SERVER و یا MYSQL تعریف بشه تا بصورت خودکار که اختلاف دو تاریخ به 72 ساعت رسید، این ردیف از جدول پاک بشه. (البته میشه یه تابع به زبان PHP در صفحه اول سایت گذاشت - کلک:D)
باز هم به خاطر جوابتون تشکر می کنم:oops:
خود مای اسکیول این امکان رو ندراه!
شما یا باید از کرون جاب استفاده کنی که با اون یه کد php رو در زمان های مختلف اجرا میکنی و اون کد php اقدام به پاک کردن میکنه یا اینکه کد رو بذاری توصفحه اول که ملت رفرش کنن.
کلا اگه خیلی لازم نیست کرون جاب پیشنهاد نمیشه چون درد سرهای خاص خودشو داره

موفق باشید
 

ziXet

مدیر انجمن PHP/MYSQL
سوال اولت رو یادم رفت جواب بدم.
جواب: برای اینکه بتونی اختلاف دو ستاریه رو که مثلا به صورت Y-m-d هست رو بر حسب ثانیه یا هر چیز دیگه در بیاری استفاده از تابع mktime پیشنهاد میشه. php.net/mktime
این تبع سال رو ماه و روز و.. رو میگیره و برحسب ثانیه های گذاشته از تولد php نشون میده.

موفق باشید
 

msnasiri

Member
می بخشید پریدم وسط ولی عنوان تاپیک انگار چیزی دیگه هست.

من یه سایت دارم که می خوام افرادی که تا 3 روز عضویت خودشون رو فعال نکرده اند به طور خود کار پاک شوند.

ممنون می شم جواب بدید
 

ziXet

مدیر انجمن PHP/MYSQL
الان دیدم
ولی این یعنی کی و کجا اجرا بشه؟
گفتم !

اینو باید بجایی بذاری که همش رفرش شه! مثلا میتونی تو صفحه اول سایت بذاری یا اینکه تو یه فایل جدا بذاری و با کرون جاب اجراش کنی
 

جدیدترین ارسال ها

بالا