سوال Sql: چطوری به کوئری های دوم به بعد دسترسی داشته باشیم

rudehen

Member
سلام
تیترش عجیب بود یا خوانا؟

دوستان
من می خوام به کوئری های دوم به بعد دیتا بیس دسترسی پیدا کنم
چه کنم؟

منتظر کدهای راهنمایی تون هستم
:wink:
 

rudehen

Member
یعنی اولین ردیف از اطلاعات دیتا بیس - حالا از آخر یا اول فرق نداره - رو ول کنه
دومیه و بعدی رو برای گرفتن اطلاعات پشت سرهم یکی یکی بیاره
 

oxygenws

Active Member
به اونهایی که شما می گی "کوئری" می گن "رکورد"..... کوئری یه چیز دیگست....
در این مورد می تونی از عبارت limit استفاده کنی.
شاید خوندن راهنمای mysql و جستجو در مورد این کلمه در اون راهنما، بیشتر کمکت کنه. :)
 
rudehen گفت:
یعنی اولین ردیف از اطلاعات دیتا بیس - حالا از آخر یا اول فرق نداره - رو ول کنه
دومیه و بعدی رو برای گرفتن اطلاعات پشت سرهم یکی یکی بیاره

PHP:
mysql_query('SELECT * FROM news ORDER by id DESC LIMIT 25,4');
اين كد، نتايج رو شامل 4 نتيجه از رديف 25 به بعد نمايش مي ده
 

rudehen

Member
سيسرا گفت:
PHP:
mysql_query('SELECT * FROM news ORDER by id DESC LIMIT 25,4');
اين كد، نتايج رو شامل 4 نتيجه از رديف 25 به بعد نمايش مي ده

ببخشیدا
اینو بلدم
اما می خوام ببینم خود ای کیو ال که اینقده هوشمنده! دستور خاصی داره که از ردیف دوم به بعد رو بگیره (فتچ کنه؟)

و نکته اینه که من آخرین ردیف رو نمی دونم ای دیش چیه


خودم یه راه بلدم:
اول آخرین ای دی رو ÷یدا کنه
یعد یکی کم کنه و لیمیت کنه
اما می خوام ببینم چیز دیگه که راه بهتری باشه هم داره یا نه

از راهنماییتونم تا اینجا ممنونم
منتظرم دوستان
 

oxygenws

Active Member
کد این بنده خدا رو دقیق نگاه کن، این همون کدی است که شما می خوای. (اگر خودت هم یک کم بگردی بد نیست هااا)

این دستوری هم که می بینی، دستور sql می باشد (منظورم sql استاندارد نیست، sql ای که mysql داره.)
 

hoseinquest

New Member
سلام . بهترنيست يه تاپيك راه بندازيد و اينگونه دستورات خاص رو ياد بدبد . (فقط نگيد اينا خاص نيست)
 

oxygenws

Active Member
سلام . بهترنيست يه تاپيك راه بندازيد و اينگونه دستورات خاص رو ياد بدبد . (فقط نگيد اينا خاص نيست)
این دستورات خاص، همشون به طور کامل توی راهنماهای php و mysql وجود داره، می تونید برید مطالعه کنید :)
 

sunrise

Member
يه راه ديگه هم استفاده از mysql_data_seek مي باشد كه شما مي تونيد بوسيله يك حلقه for يا while اين كار رو انجام بديد و محدوده اطلاعات رو مشخص كنيد. من براي صفحه بندي از اين روش استفاده مي كنم.
 

rudehen

Member
sunrise گفت:
يه راه ديگه هم استفاده از mysql_data_seek مي باشد كه شما مي تونيد بوسيله يك حلقه for يا while اين كار رو انجام بديد و محدوده اطلاعات رو مشخص كنيد. من براي صفحه بندي از اين روش استفاده مي كنم.


میشه بیشتر توضیح بدین؟
 

sunrise

Member
rudehen گفت:
میشه بیشتر توضیح بدین؟
به اين مثال توجه كنيد:
PHP:
<?php
$result = mysql_query("SELECT * FROM ".$tb_prefix."news ORDER BY id DESC");
$num_news = mysql_num_rows($result);
$p = 2;
mysql_data_seek($result,$p);
while ($row = mysql_fetch_array($result) and $i <= 5){
  $id = $row['id'];
  $title = $row['title'];
  echo "<a href=show.php?id=$id>$title</a><br>";
  $i++;
}
?>
با اين كار ما تعيين كرده ايم كه از ركورد دوم به تعداد 5 ركورد خوانده و نمايش داده شود.
 

oxygenws

Active Member
راه حل غروب خورشید عزیز، به دلیل استفاده زیاد از حافظه و کاهش سرعت (به خاطر حلقه) توصیه نمی شه.
 

sunrise

Member
oxygenws گفت:
راه حل غروب خورشید عزیز، به دلیل استفاده زیاد از حافظه و کاهش سرعت (به خاطر حلقه) توصیه نمی شه.
اميد جان شما راه حل بهتري سراغ داري تا كار اين دوستمون راه بيوفته؟ البته اين كدي كه من نوشتم براي صفحه بندي خيلي خوبه و فكر نكنم اون قدرا هم زياد حافظه رو اشغال كنه.
 
آخرین ویرایش:

oxygenws

Active Member
اميد جان شما راه حل بهتري سراغ داري تا كار اين دوستمون راه بيوفته؟ البته اين كدي كه من نوشتم براي صفحه بندي خيلي خوبه و فكر نكنم اون قدرا هم زياد حافظه رو اشغال كنه.
آخه خود mysql همون دستور limit رو داره، دیگه چرا اینقدر خودمون رو تو دردسر بندازیم؟؟

این روش شما، در صورت زیاد بودن رکورد های جدول بانکمون، حافظه زیادی خواهد گرفت. شاید همچین چیزی در یک برنامه خیلی کوچک که روزی حداکثر 100 تا بازدید کننده داشته باشه، با یک سرور خلوت، مشکلی نداشته باشه، اما در یک محصول productive (تولیدی) قطعا به مشکل خواهد خورد.
 

sunrise

Member
oxygenws گفت:
آخه خود mysql همون دستور limit رو داره، دیگه چرا اینقدر خودمون رو تو دردسر بندازیم؟؟

این روش شما، در صورت زیاد بودن رکورد های جدول بانکمون، حافظه زیادی خواهد گرفت. شاید همچین چیزی در یک برنامه خیلی کوچک که روزی حداکثر 100 تا بازدید کننده داشته باشه، با یک سرور خلوت، مشکلی نداشته باشه، اما در یک محصول productive (تولیدی) قطعا به مشکل خواهد خورد.
خب البته معلومه ولي بازم هم براي فراخواني داده ها مجبور ميشيم از while استفاده كنيم.
 
oxygenws گفت:
آخه خود mysql همون دستور limit رو داره، دیگه چرا اینقدر خودمون رو تو دردسر بندازیم؟؟

این روش شما، در صورت زیاد بودن رکورد های جدول بانکمون، حافظه زیادی خواهد گرفت. شاید همچین چیزی در یک برنامه خیلی کوچک که روزی حداکثر 100 تا بازدید کننده داشته باشه، با یک سرور خلوت، مشکلی نداشته باشه، اما در یک محصول productive (تولیدی) قطعا به مشکل خواهد خورد.


كش دادن بحث كلاس داره؟؟؟؟؟؟؟؟؟؟؟؟؟!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

شروع كننده موضوع سؤال رو گنگ ميگه. تازه تو بگرد و بگرد تا بهش جواب بدي بعد بهت ميگه:

rudehen گفت:
ببخشیدا
اینو بلدم

آخرش بايد يا موضوع قفل بشه يا يكي از كوره در بره!
 

sunrise

Member
ببخشيد من يه سؤالي از اميد عزيز داشتم، ميخواستم اين رو بدونم كه آيا مگه راه ديگه اي هم براي نمايش اطلاعات پياپي بدون استفاده از حلقه وجود داره؟
 

oxygenws

Active Member
نه برادر، وجود نداره.....
ولی یک حلقه مثلا 10 تایی، خیلی با یک حلقه N تایی فرق داره :)
دستور limit ضمانت می کنه که این حلقه بیشتر از (مثلا) 10 تا نچرخه.
 

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

بالا