نمایش چند صفحه ای اطلاعات

http://www.iranphp.net

1

عنوان مقاله

: نمایش چند صفحه ای اطلاعات

نگارنده

: آرش میکائیلی

arash@iranphp.net

تاریخ نگارش

: آدرس پست الکترونیک: …….…………

http://www.iranphp.net

2

نمایش چند صفحه ای اطلاعات

:

تصمیم

استفاده شده اما این روش را

بکار برد

DataBase با توجه به مطالب مطرح شده در انجمن این سایت و جالب بودن بحث صفحه به صفحه نمایش دادن اطلاعات نتیجه شده از جستجو درMySQL گرفتم که مقاله ای در این خصوص تهیه کنم و امیدوارم که این مطالب مورد استفاده دوستان قرار بگیرد.در این مقاله از. DataBase می توان با هر

:

LIMIT جزء

را در

خود داشته باشیم

DataBase کلید حل مشکل ماست ، به وسیله این جزء است که ما می توانیم سطرهای مورد نظر خود از Select در عبارت LIMIT جزء. Query

با یک آرگومان استفاده شود تعداد جواب به آن

LIMIT به دو شکل به کار می رود با یک آرگومان و یا با دو آرگومان ،این آرگومانها عدد هستند ، اگر LIMIT

عدد محدود می شود

:

SELECT

* FROM table LIMIT 5

با دو آرگومان استفاده شود آرگومان اول مشخص کننده

سطرها از

LIMIT را در جواب بر می گرداند ،اما اگر Table در این حالت ٥ سطر اول Select عبارتSQL سطر آغازین است و آرگومان دوم تعداد سطرهایی را که باید برگردانده شوند را مشخص می کند ، البته باید به این نکته توجه کرد که در

.(

صفر ( ٠) شروع می شوند نه از یک ( ١

SELECT

* FROM table LIMIT 5, 5

را برمی گرداند

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

. DataBase سطرهای ٦ تا ١٠ از SQL این عبارت. LIMIT کار با جزء

:

$start گام اول متغیر

استفاده استفاده کنیم

. اما سوال این است که چگونه متوجه DataBase در اینجا می دانیم که از چه چیزی باید برای بدست آوردن سطرهای مورد نظر خود از

$start

استفده می کنیم و این متغیر را از صفحه ای به صفحه دیگر می فرستیم

کنیم یا به عبارت دیگر از کدام سطر باید شروع کنیم ؟ پاسخ خیلی روشن است ما از یک متغیر به نام LIMIT می شویم که از کجا باید.

می کنیم

: PHP حال که روش کار مشخص شده شروع به نوشتن کد در

<?

$query

?>

php= "SELECT * FROM table LIMIT " . $start . ", 10";

می کند

می نویسیم و یا با شرطی چک می کنیم که

اگر قبلا مقداری به آن داده نشده ما مقدار آن را صفر می کنیم لازم است برای این کار از کدی شبیه به کد زیر استفاده می کنیم

. اما برای مشخص select باشد را start را از جایی که مساوی مقدار table سطر از query ماست و این 10 query این شکلURL دو راه وجود دارد(در هنگامی که اولین ١٠ سطر را بازیافت می کنیم ) یا آن را در start کردن مقدار:

<?

php

if

?>

(!isset($start)) $start = 0;

به صورت خودکار صفر خواهد شد

$start حالا وقتی کسی صفحه ما را مشاهده کند مقدار

:

Previous و Next های Link ساختن

http://www.iranphp.net

3

داریم که به ما می گوید از کجا شروع کنیم و از طرفی

start خیلی ساده است اگر آنچه را که تا اینجا انجام داده ایم مرور کنید می بینید که ما متغیری به نام

Next

هست یا نه

سطر باشد و ما در صفحه پنجم از

است و ما سطرهای ٥٠ تا ٦٠ را در جواب داریم پس صفحه قبل باید سطرهای ۴۰ تا ٥٠ را نشان دهد یعنی

می دانیم که در هر مرحله چند سطر را در جواب بر می گردانیم با توجه به این اطلاعات در هر مرحله می توانیم مشخص کنیم که آیا نیازی به. Previous وLIMIT) مان دریافت می کنیم (بدون استفاده از 63 query برای مثال فرض کنید که کل سطرهایی که ما در جواب از$stat= جواب باشیم در این حالت 50

نیز صادق است

.

Next نیاز داریم همین مطلب برای Previous برای صفحه قبل بزرگتر از صفر می شود پس به $start است .چون $stat=40

این کار را با تکه کد زیر انجام می دهیم

<?

php

if

($start > 0)

echo

"<a href=" . $PHP_SELF . "?start=" . ($start - 10) .">Previous</a><BR>n";

if

($numrows > ($start + 10))

echo

?>

"<a href=" . $PHP_SELF . "?start=" . ($start + 10) .">Next</a><BR>n";

حال ما تمام قسمتهایی را که نیاز داشتیم ایجاد کردیم و وقت آن رسیده که تمام این قسمتها را در کنار هم قرار دهیم

:

<?

php

if

(!isset($start)) $start = 0;

$query

= "SELECT * FROM table LIMIT " . $start . ", 10";

//do database connection

$result

//display data

//this code was wrong, I did not have the second query.

// need another query to get the total amount of rows in our table

= mysql_query($query); //you should do error checking

$query

= "SELECT count(*) as count FROM table";

$result

= mysql_query($query);

$row

= mysql_fetch_array($result);

$numrows

= $row['count'];

if

($start > 0)

echo

"<a href=" . $PHP_SELF . "?start=" . ($start - 10) . ">Previous</a><BR>n";

if

($numrows > ($start + 10))

echo

?>

"<a href=" . $PHP_SELF . "?start=" . ($start + 10) . ">Next</a><BR>n";

امیدوارم که این تو

ضیحات ایده کلی را به شما برای این کار داده باشد ، و بتوانید این مطالب را برای کارهای خود استفاده کنید.