PDA

View Full Version : نحوه نمایش مطالب سایت بر اساس تاریخ



mohammad-gh
جمعه 08 آذر 1392, 14:39 عصر
با سلام
در حال نوشتن سیستم وب لاگ دهی هستم
همانطور که می دانید بعد از درج مطالب امکان نمایش انها بر اساس ماههای شمسی نیز وجود دارد

مثلا قسمت ارشیو مطالب رو در این وبلاگ ببینید: http://bebareybaron.blogfa.com/

حال می خواهیم امکان دسته بندی مطالب بر اساس ماه رو بدیم (آرشیو مطالب)

می خواستم بدونم اگر به صورت timestampذخیره کنم تاریخ رو هنگام ثبت می تونم با sql مطالب یک ماه خاص رو بکشم بیرون ، مثلا آذر ماه 92
اگر نمی شود چه کار باید کرد

smksmk
جمعه 08 آذر 1392, 15:44 عصر
100% به صورت timestamp باید ذخیره کنید . برای نمایش ماهها به صورت فارسی هم میتونید از jdf استفاده کنید یا کلاسهای مشابه jdf .

mohammad-gh
جمعه 08 آذر 1392, 16:35 عصر
متاسفانه شما پاسخ من رو ندادید
در دستور sql می توانم به طور مستقیم از مثلا مطالب اذرماه 1392 کاربر کوئری بگیرم ؟ و چطور

smksmk
جمعه 08 آذر 1392, 16:52 عصر
بله من هم همین رو جواب دادم ، ساختار timestamp رو جستجو کنید متوجه میشین ، ولی اینکه مستقیم ماه مثلاً آذر رو بکشید بیرون چون timestamp ذخیره شده میلادی هست معادل میلادی اون رو در پایگاه داده جستجو میکنید چون قراره مستقیم باشه بعد ماه رو به شمسی برمیگردونید .

mohammad-gh
جمعه 08 آذر 1392, 18:13 عصر
من ضمن تشکر از شما باید بگم که هنوز جوابم رو نگرفتم
اینکه تایم استمپ چطور ذخیره میشود و باید به میلادی باشد و چوطر تبدیل می شود به کنار
می خواهم بدانم توسط دستور مستقیم اس کیو ال میشه اون مطالب ماه اذر 92 رو از اون کشید بیرون یا نه
البته ابن رو هم می دونم که اذر 92 باید به میلادی تبدیل بشه اول !!!!

smksmk
جمعه 08 آذر 1392, 18:54 عصر
خواهش میکنم ، مثلاً یک نمونه شما تاریخ امروز رو میخاین از بین تاریخ های جدولتون انتخاب کنید که تاریخ های بین دو timestamp رو جستجو میکنید . ، حالا اینکه شما یک ماه خاص رو میخاین بازم همینه مثل این نمونه :

month(date(date_column))
همون لحظه با date به تاریخ استاندارد تبدیلش میکنیم و با month ماه رو میگیریم و با تاریخی که میخایم جستجو میکنیم . نمونه های کامل در این آدرس :
http://www.epochconverter.com/programming/mysql-from-unixtime.php

mohammad-gh
یک شنبه 10 آذر 1392, 14:15 عصر
یه سئوال دارم که با اینکه تو صفحهلینک داده شده خوب توضیح داده شده اما این مورد نیست
فرضا ما می خواهیم پستهای اذر ماه 92 رو تو شرط جستجو بگذاریم
یعنی نتایج جستجو فقط پستهای اذر 92 رو نشون بده
چطور باید بنویسم من هر کاری کردم با FROM_UNIXTIME درست در نمیاد

SELECT id, txtTitle FROM user_post where FROM_UNIXTIME(datestamp,201310)

nadi_1368
یک شنبه 10 آذر 1392, 15:16 عصر
فایل زیر را در مای اس کیو ال import کنید

http://www.uploadmb.com/dw.php?id=1385900559

اینم یه نمونه کد برای ارشیو مطالب



$data = array();
$sql="
SELECT pyear(FROM_UNIXTIME(`date`)) AS 'year', pmonth(FROM_UNIXTIME(`date`)) AS 'month', COUNT(`id`) AS 'count' FROM `news` GROUP BY pyear(FROM_UNIXTIME(`date`)) DESC, pmonth(FROM_UNIXTIME(`date`)) DESC
";
$result = mysql_query ($sql);
while ($row = mysql_fetch_array($result))
{

$data[$row['year']][$row['month']] = $row['count'];

}

return $data;

mohammad-gh
یک شنبه 10 آذر 1392, 18:09 عصر
ممنون ولی
من گروه بندی و تعداد مطالب در هر ماه رو دراوردم
مشکلم فقط نحوه نوشتن دستور برای یک ماه خاص است

مثلا به این صفحه دقت کنید

http://sananet2.blogfa.com/
من منظورم این صفحه است که چطور با این لینک می شود به دیتابیس فهموند که اطلاعت این ماه از این سال رو بیاره
http://sananet2.blogfa.com/1392/09
البته من لینک رو هم به همین صورت در آوردم که سال و ماه رو به اخر لینک بیاره

nadi_1368
یک شنبه 10 آذر 1392, 23:51 عصر
خوب حالا از کوئری استفاده کن


sql="pyear(FROM_UNIXTIME(`date`))='".$_GET['year']."' and pmonth(FROM_UNIXTIME(`date`))='".$_GET['month']."' ";

mohammad-gh
دوشنبه 11 آذر 1392, 06:09 صبح
با سلام مجدد
تاریخ در بانک اطلاعاتی من در فیلد datestamp ذخیره می شود
من کوئری رو به این صورت نوشتم

SELECT id, txtTitle FROM user_post where FROM_UNIXTIME(datestamp)='139209'
اما تاثیری نداشت
به نظر شما چی باید بنویسم

nadi_1368
دوشنبه 11 آذر 1392, 08:33 صبح
من فیلد Date به صورت int تعریف میکنم

mohammad-gh
دوشنبه 11 آذر 1392, 15:03 عصر
من فیلد Date به صورت int تعریف میکنم
من هم تاریخ رو به صورت تایم استمپ و در نوع int ذخیره می کنم
ای کاش یکی پیدا می شد می گفت اصلا وقتی تاریخ به صورت تایم استمپ (ثانیه های گذشته شده از تاریخ 1970) ذخیره می شود اصلا می شود با زدن 139209 اطلاعات اذرماه 92 رو کشید بیرون!