PDA

View Full Version : تاریخ انقضا برای یک فیلد های تیبل در msql



haniye70
شنبه 31 تیر 1391, 17:15 عصر
با سلام نیاز به روشی دارم که مثلا بعد از زمان مشخصی فیلد های تیبل های من توی msql غیر فعال بشوند مثل سایت های اگهی که بعد از گذشت زمان اگهی رو ارشیو میکنند و غیر فعال
متشکر میشوم راهنمایی بفرماید

us1234
شنبه 31 تیر 1391, 19:14 عصر
باید برای نمایش هر مقداری زمان مشخص کنید . مثلا بگید زمان شروع این تاریخ و زمان اتمام این تاریخ باشه . بعد هر باری که یورز اطلاعات را لود میکنه قبل از نمایش تاریخ امروز را بگیرید ببنید تو این بازه هست یا نه . اگر نبود میگید تاریخ این مطلب گذشته است.

Unique
شنبه 31 تیر 1391, 19:16 عصر
احتمالا منظورتون اینه که ردیف های شما غیر فعال بشوند !
برای غیر فعال کردن یا بهتر بگیم ! نشون ندادن شما دو تا راه حل دارین :

1 - اگه عدم نمایش بر اساس یک تاریخ و زمان بخصوص باشه ! شما باید یک فیلد از نوع DateTime یا int برای استفاده به صورت timespan داشته باشین و زمان به پایان رسیدن نمایش را توی اون فیلد تعین کنید ! مثلا در مورد آگهی شما اگه میخواهین آگهی 1 ماه نمایش داده بشه ! در طمان ثبت آگهی مقدار این فیلد را برابر 1 ماه آینده قرار میدین ! در زمان query گرفتن هم رکورد هایی را از پایگاه درخواست میکنید که فیلد زمان پایان مایششون بزرگتر یا مساوی زمان جاری باشه !

2 - اگه عدم نمایش بر اساس تصمیم مدیر سایت باشه ! باید یک فیلد از نوع bit یا smallint یا word ایجاد کنید و با اختصاص اعداد 1 و 0 با استفاده از یک checkbox در قسمت مدیریت سایت ! نمایش یا عدم نمایش را تعین کنید.

haniye70
شنبه 31 تیر 1391, 21:03 عصر
با سلام من طریقه گرفتن تاریخ انقضا رو بر اساس روز گرفتم که کاربر میگه چند روز این تا اینجا
من از این روش استفاده کردم روز ها رو کاربر وارد میکنه و محاسبه میشه و به فیلد مربوطه انتقال پیدا میکنه


if ($expire == "") {
$expire = 0;
}
if ($expire != 0) {
$expire = time() + ($expire * 86400);
}



حالا من می خوام که توی حلقه وایلم که محتویات تیبلم رو لیست میکنه where رو طوری قرار بدم که فیلدام بر اساس تاریخ باشن و تاریخ گذشته ها رو نشون نده
اگر ممکنه اینجا راهنمایی کنید

Unique
شنبه 31 تیر 1391, 23:48 عصر
اگه فرض را بر این بگذاریم که فیلد شما اسمش expire_date باشه و مقدارش از نوع عددی و داره یک timestamp را ذخیره میکنه ! و به روشی که خودتون گفتین تعداد روز را مشخص کردین کافیه بگین :

select [fields you need] from mytable where expire_date >= ".time()