PDA

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



Jason.Bourne
یک شنبه 03 شهریور 1392, 17:41 عصر
یک آرایه به شکل زیر داریم.


$news[1]['title'] = 'تست 1';
$news[1]['date'] = '2013-09-01 21:32:36';

$news[2]['title'] = 'تست 2';
$news[2]['date'] = '2011-08-01 21:32:36';

.
.
.


$news[100]['title'] = 'تست 100';
$news[100]['date'] = '2001-03-01 01:12:36';

به چه شکل میشه این آرایه را بر اساس تاریخ دسته بندی و چاپ کرد.
مانند:



2013-09-01




تست 1
تست 2
تست 40





2003-10-01




تست 10
تست 22
تست 140

p30online
یک شنبه 03 شهریور 1392, 20:20 عصر
سعی کن یک فیلد تاریخ داخل بانک اطلاعاتی تعریف کنی و برای نمایش دادن آن بر اساس order by که دارای دو مقدار ASC و DESC است نمایش بدی (صعودی و نزولی) .




SELECT * FROM home ORDER BY date DESC

Tarragon
یک شنبه 03 شهریور 1392, 21:52 عصر
با سلام
دوست عزیزمون پی30آنلاین در مورد sql راهنمایی کردند.
بهترین کار اینه که با time() ذخیره کنید بعدش asort کنید بعدش 86400 ثانیه یا هر چیز دیگه ای که صلاح می دونید جدا کنید بعدش اون رو نمایش بدید.
اگر هم در دیتابیس ذخیره کنید خیلی بهتره.

Jason.Bourne
یک شنبه 03 شهریور 1392, 22:55 عصر
ظاهرا نتونستم منظورم را درست انتقال دهم.
مشکل من sort کردن نیست. منظورم این هست که اخبار بر اساس تاریخ (روز) دسته بندی شوند و نمایش داده شوند. (اخبار هر روز در یک گروه قرار بگیرد)

چیزی شبیه به لینک زیر:

http://links.p30download.com

AliRezaPro
دوشنبه 04 شهریور 1392, 00:09 صبح
ظاهرا نتونستم منظورم را درست انتقال دهم.
مشکل من sort کردن نیست. منظورم این هست که اخبار بر اساس تاریخ (روز) دسته بندی شوند و نمایش داده شوند. (اخبار هر روز در یک گروه قرار بگیرد)

چیزی شبیه به لینک زیر:

http://links.p30download.com

به همراه اطلاعاتی که وارد بانک اطلاعاتی میکنید فیلد تاریخ تعریف کردید ؟

مشکل من sort کردن نیست. منظورم این هست که اخبار بر اساس تاریخ (روز) دسته بندی شوند و نمایش داده شوند. (اخبار هر روز در یک گروه قرار بگیرد)

شما اگر هنگام وارد کردن اطلاعات تاریخ را هم ثبت کنید به راحتی این کار قابل انجام شدن است , برای هر روز دسته بندی ایجاد میکنید و تاریخ ها را از بانک اطلاعاتی با هم مقایسه میکنید و هر کدام را در یک دسته بندی قرار میدید. مثلا برای امروز یک دسته بندی ایجاد میکنید , امروز 3 پست ایجاد کردید که به همراه آن تاریخ هم ثبت شده, بنابراین تاریخی که ثبت کردید و تاریخی که برای دسته بندی ایجاد کردید را با هم مقایسه و سپس در همان دسته بندی قرار میدید
1001 روش است که من فقط نمیدونم از کجا شروع کنم
اولین روش
یک جدول دسته بندی ایجاد کنید , برای هر روز تاریخ را در آن ثبت کنید , پست هایی که ایجاد میکنید به همراه آن id دسته بندی که همان تاریخ است را هم ثبت میکنید , بنابراین هنگام نشان دادن کاملا پست ها قابل تفکیک هستند

Jason.Bourne
دوشنبه 04 شهریور 1392, 15:55 عصر
جالب بود :لبخندساده: و شاید تنها ایرادش این باشه که برای هر روز باید یک رکورد در جدول تاریخ ها داشته باشیم!
میشه از اون 1001 روش به 2 روش دیگه هم اشاره کنید؟ ( برای باز شدن ذهنم در خصوص مسایل این چنین عرض کردم. یک وقت سوء تفاهم نشه).
متشکرم

saeed-71
دوشنبه 04 شهریور 1392, 16:50 عصر
سعی کن یک فیلد تاریخ داخل بانک اطلاعاتی تعریف کنی و برای نمایش دادن آن بر اساس order by که دارای دو مقدار ASC و DESC است نمایش بدی (صعودی و نزولی) .




SELECT * FROM home ORDER BY date DESC


سلام.
من این کار رو انجام دادم اما این ارور رو میده
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\mashinbekhar\index.php on line 21

Jason.Bourne
دوشنبه 04 شهریور 1392, 17:02 عصر
سلام.
من این کار رو انجام دادم اما این ارور رو میده
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\mashinbekhar\index.php on line 21

مقداری را که به تابع mysql_fetch_assoc پاس دادین، معتبر نیست.
لطفا ساختار جدولتون و کدی که نوشتید را در ایجا قرار بدین.

saeed-71
دوشنبه 04 شهریور 1392, 17:22 عصر
مقداری را که به تابع mysql_fetch_assoc پاس دادین، معتبر نیست.
لطفا ساختار جدولتون و کدی که نوشتید را در ایجا قرار بدین.
این کد خواندن و چاپ اطلاعات دیتابیس من هستش.

<?php
include('config.php');
include_once('jdf.php');
mysql_query("set names utf8");

$result=mysql_query("select * from tblcarinfo where flag=1 ");
while($rows=mysql_fetch_assoc($result))
{

echo'<div class="contant_box">';
echo'<img src="http://localhost/mashinbekhar/user/'.$rows["img1"].'" />';
echo'<div class="head_contan_box">برند : '.$rows["berand"]. ' | مدل : '.$rows["model"].'| سال ساخت : '.$rows["tsakht"].'</div>';
echo'<div class="data_contant_box">تاریخ ثبت آگهی : '.jdate("Y/n/j",strtotime($rows["tarikhsabt"])).'</div>';
echo'<div class="tozihat_contant_box">توضیحات ماشین:'.$rows["tozih"].'</div>';
echo'<div class="price_contant_box">'.$rows["gheymat"].'تومان</div>';
echo'<div class="more_contant_box"><a href="more.php?id='.$rows["id"].'">جزئیات بیشتر</a></div>';
echo'</div>';
}
?>
حالا چی بهش اضاف کنم تا بر اساس تاریخ از بالا به پایین مرتب بشن.
فیلد tarikhsabt تو دیتابیس تاریخ میلادی هستش که اینجا تبدیل به شمسی میشه.
میخوام بر اساس همین تاریخ مرتب بشه.
ممنون.

saeed-71
دوشنبه 04 شهریور 1392, 19:09 عصر
کسیاز دوستان نمیدونه؟:متفکر:

AliRezaPro
دوشنبه 04 شهریور 1392, 22:12 عصر
همانطور که دوستان در پست های ابتدایی اشاره کردند شما ابتدا جوری سلکت بزنید که با تاریخ ابتدا sort کنه و بعد آن را نمایش دهید

Jason.Bourne
سه شنبه 05 شهریور 1392, 02:52 صبح
همانطور که دوستان در پست های ابتدایی اشاره کردند شما ابتدا جوری سلکت بزنید که با تاریخ ابتدا sort کنه و بعد آن را نمایش دهید


جالب بود :لبخندساده: و شاید تنها ایرادش این باشه که برای هر روز باید یک رکورد در جدول تاریخ ها داشته باشیم!
میشه از اون 1001 روش به 2 روش دیگه هم اشاره کنید؟ ( برای باز شدن ذهنم در خصوص مسایل این چنین عرض کردم. یک وقت سوء تفاهم نشه).
متشکرم

AliRezaPro
سه شنبه 05 شهریور 1392, 07:25 صبح
برای اینکه این اتفاق نیوفته همون بهتره که به همراه اطلاعاتی که ثبت میکنید تاریخ هم ثبت کنید و طبق اون دسته بندی کنید

saeed-71
سه شنبه 05 شهریور 1392, 08:37 صبح
همانطور که دوستان در پست های ابتدایی اشاره کردند شما ابتدا جوری سلکت بزنید که با تاریخ ابتدا sort کنه و بعد آن را نمایش دهید
چجوری باید sort کرد؟؟؟؟؟

saeed-71
سه شنبه 05 شهریور 1392, 08:38 صبح
برای اینکه این اتفاق نیوفته همون بهتره که به همراه اطلاعاتی که ثبت میکنید تاریخ هم ثبت کنید و طبق اون دسته بندی کنید

خوب منم تاریخ رو همزمان ثبت میکنم.اما نمیدونم چجوری باید بر اساس اون مرتبشون کرد!!!

Jason.Bourne
سه شنبه 05 شهریور 1392, 10:16 صبح
خوب منم تاریخ رو همزمان ثبت میکنم.اما نمیدونم چجوری باید بر اساس اون مرتبشون کرد!!!
عاقب مطرح کردن چند سوال مشابه در یک تاپیک همین میشه دیگه.
فکر می کنم آقای AliRezaPro (http://barnamenevis.org/member.php?46852-AliRezaPro) پاسخ سوال من را دادند و شما بد برداشت کردید.


چجوری باید sort کرد؟؟؟؟؟

برای Sort در سمت پایگاه داده باید از Order BY در query خودتون استفاده کنید.


select * from tblcarinfo where flag=1 order by tarikhsabt asc

یا


select * from tblcarinfo where flag=1 order by tarikhsabt desc

توجه کنید که asc و desc مشخص کننده نوع صعودی یا نذولی بودن Sort می باشد.