بازیابی رکورد بعدی و قبلی

amirepsilon

Active Member
سلام
دوستان چطور میشه رکورد بعدی یا قبیل رو واکشسی کرد ؟
میخوام |خبر قبلی| و |خبر بعدی| درست کنم.
در ضمن خبرهای من بر اساس date مرتب شدن.
ممنون
 

felix

Member
سلام
دوستان چطور میشه رکورد بعدی یا قبیل رو واکشسی کرد ؟
میخوام |خبر قبلی| و |خبر بعدی| درست کنم.
در ضمن خبرهای من بر اساس date مرتب شدن.
ممنون

شما باید یه فیلد مثلا آیدی داشته باشید بعد موقعی که خبر رو دارید توی صفحه echo میکنید اون آیدی رو هم در قسمت لینک ' بعدی و قبلی' هم بزارید
PHP:
<a href ="?id=<?php echo $id;?>" >next</a>
حالا مثلا کاربر روی این که کلیلک کنه پارامتر آیدی برای ما ارسال میشه ما اون رو میگیریم عددش میکنیم یکی بهش اضافه میکنیم بعد خبری با اون آیدی رو از بانک میخونیم
:rose:
 

amirepsilon

Active Member
مساله اینجاست که چطور id خبر قبلی یا بعدی رو بدست بیاریم ؟!!! (شاید Autoincrement نباشد!)
 

Domanjiri

Well-Known Member
سلام

قبل از هر چیز یه index روی فیلد مربوط به زمان میسازیم.

بعد، برای لینک «قبلی» پرسش زیر رو اجرا می کنیم:
PHP:
SELECT id, post_date
  FROM my_table 
 WHERE id = (   
  SELECT max(id) AS id
    FROM my_table 
   WHERE post_date < this_post_date
)

و بطور مشابه برای لینک «بعدی» پرسش ..

(پیشنهاد من، autoincrement رو دریاب! :green:)

موفق باشی
 

amirepsilon

Active Member
مساله اینجاست که حتی اگه از autoincrement هم استفاده کنیم، ممکنه یه رکورد اون وسط حذف بشه و در نتیجه جواب نمیشه بگی +1 یا -1
 

Domanjiri

Well-Known Member
روش ساخت این لینک ها وقتی که فیلد آیدی خود نِمو = autoincrement (اینو الان ساختم:green:) هست، اینطور نیست که به سادگی بیایم +1 و -1 کنیم..

مثلن برای لینک «بعدی» باید پرسش زیر رو اجرا کنید:
PHP:
SELECT min(id) AS id FROM my_table WHERE id > this_post_id

شاد باشی!
 
آخرین ویرایش:

felix

Member
روش ساخت این لینک ها وقتی که فیلد آیدی خود نمو (اینو الان ساختم:green:) هست، اینطور نیست که به سادگی بیایم +1 و -1 کنیم..

مثلن برای لینک «بعدی» باید پرسش زیر رو اجرا کنید:
PHP:
SELECT min(id) AS id FROM my_table WHERE id > this_post_id
شاد باشی!

سلام میشه یه مثال برای کوئریتون بزنید با یه جدول فرضی:rose:
 

Domanjiri

Well-Known Member
درود بر شما
سلام میشه یه مثال برای کوئریتون بزنید با یه جدول فرضی
والا خود همین سوال مثالیه برای این کوئری دیگه:)

فرض یه جدول به این شکل داریم (عجب جدول خسته ای!):

id........|.......text
________________
1........|.....salam
8........|......hello
13.......|.....hamin

حالا مثلن با یه لینک مثل این: example.com/index.php?id=8 مطلب مورد نظر (hello) نمایش داده میشه. اگه برای لینک های «بعدی» و «قبلی» بخواین آیدی همین مطلب رو +1 و -1 کنید، میشه مطالبی با آیدی 9 و 7 که وجود نداره!

حالا اگه کوئری پایین رو توی همین صفحه ای که hello رو نمایش میده اجرا کنید، عدد 13 رو بر می گردونه که همون آیدی مطلب بعدی هست و الخ...
این کوئری:
PHP:
SELECT min(id) AS id FROM my_table WHERE id > 8

خوب توضیح دادم؟!:green:

پیروز باشید
 
آخرین ویرایش:

felix

Member
مرسی خیلی خوب بود توضیحاتتون
آخه من داشتم فکر میکردم فرق کوئری شما با این کوئری چیه ؟
PHP:
select * from table where id>8 order by id
 

Domanjiri

Well-Known Member
آخه من داشتم فکر میکردم فرق کوئری شما با این کوئری چیه ؟
پرسش شما همه ی فیلد های جدول رو برای همه سطرهای بعدی برمیگردونه که ما به این همه داده نیازی نداریم و فقط آیدی سطر بعدی رو می خوایم. میشه این پرسش رو اینطور هم اجرا کرد:
PHP:
SELECT id FROM table WHERE  id>8  ORDER BY  id  LIMIT 1

موفق باشی
 

felix

Member
پرسش شما همه ی فیلد های جدول رو برای همه سطرهای بعدی برمیگردونه که ما به این همه داده نیازی نداریم و فقط آیدی سطر بعدی رو می خوایم. میشه این پرسش رو اینطور هم اجرا کرد:
PHP:
SELECT id FROM table WHERE  id>8  ORDER BY  id  LIMIT 1
موفق باشی


بله ممنون منظور من هم همین بود :rose:
 

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

بالا