PDA

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



marmooz.exe
پنج شنبه 10 شهریور 1390, 02:34 صبح
با سلام میخواستم بدونم من چطور میتونم اطلاعات دیتابیسم رو که نشون میدم جوری مشخص کنم که از آخر به اول باشه؟ (

dll1024
پنج شنبه 10 شهریور 1390, 02:48 صبح
SELECT column_name(s)
FROM table_name
ORDER BY column_name(s) ASC|DESC


یا به لینک زیر مراجعه کنید:
http://www.w3schools.com/sql/sql_orderby.asp

rash44
پنج شنبه 10 شهریور 1390, 10:16 صبح
SELECT * FROM `tabel` ORDER BY `id` DESC

marmooz.exe
پنج شنبه 10 شهریور 1390, 12:25 عصر
من تو دیتابیسم آیدی ندارم باید حتما یه ستونم واسه آیدی ها بزنم؟

amin1softco
پنج شنبه 10 شهریور 1390, 13:59 عصر
خوب یک روش دیگه اینه اول تعداد کل رکورد ها رو بدست بیار mysql_num_rows بعد با یک حلقه با دستور mysql_result برعکس داده ها رو بخون

MMSHFE
پنج شنبه 10 شهریور 1390, 18:15 عصر
نیاز نیست حتماً id داشته باشین. هر فیلدی که الآن اطلاعات بر اساس اون مرتب شدن (معمولاً کلید اصلی جدولتون) رو میتونید بعد از ORDER BY بنویسید. حالا اگه بعد از اسم فیلد، کلمه DESC رو اضافه کنید، اطلاعات بر اساس اون فیلد بصورت نزولی مرتب خواهند شد. موفق باشید.

mohsen6500
پنج شنبه 10 شهریور 1390, 19:48 عصر
با سلام به دوستان
من یه سوالی داشتم
بنده میخوام که عنوان مطالبی را که به فرض مثال با موضوع اطلاعیه هستند رو از جول پست هام دریافت کنم
و به صورت جدیدترین پست تا قدیمی ترین پست درج کنم

$querys = "select * from post where pcat=('$cat') limit 0,10";
$results = mysql_query($querys);
با این کد میتونم نمایش بدم اما بدیش اینه که این جوری از اولین پست نشون میده و من اینو نمیخوام
و میخوام که از آخرین مطلب یعنی جدیدترین مطلب شروع کنه نه از اولیش
یه مشکل دیگه اینکه نمیتونم همزمان هم از order by هم از where استفاده کنم
یعنی خطا میگیره!
پس حالا باید چیکار کنم؟
که هم بر اساس موضوع دلخواه باشند و هم به ترتیب از آخرین پست به اولین پست

MMSHFE
پنج شنبه 10 شهریور 1390, 20:36 عصر
با سلام، به این نکته دقت کنید که همیشه WHERE قبل از ORDER BY و LIMIT و... ذکر میشه. احتمالاً خطا بخاطر رعایت نکردن این قاعده بوده. ضمناً اینطور که فهمیدم، شما میخواین 10 رکورد آخر رو نمایش بدین، اون هم بصورت نزولی. برای اینکار، اینطور بنویسید:


$query = "SELECT * FROM `table` WHERE (`pcat`='{$cat}') ORDER BY `id` DESC LIMIT 10";

اگر هم خواستین 10 رکورد آخر رو بصورت صعودی نشون بدین، اینطوری بنویسید:


$query = "SELECT * FROM (SELECT * FROM `table` WHERE (`pcat`='{$cat}') ORDER BY `id` DESC LIMIT 10) AS `temp` ORDER BY `id`";

یعنی اول جدول رو برحسب id بصورت نزولی مرتب کنید و 10 رکورد اول (که درحقیقت 10 رکورد آخر هستن) رو استخراج کنید و بعنوان یک جدول موقت به اسم temp نگه دارین و بعد، از این جدول موقت، همه رکوردها رو استخراج کنید، منتها به نحوی که برحسب id بصورت صعودی مرتب شدن.
موفق باشید.