ورود

نسخه کامل مشاهده نسخه کامل : آموزش شماره گذاری صفحات برنامه



eimanpaladin
04-10-2011, 23:37
با سلام و خسته نباشید :
من یه cms کوچیکی طراحی کردم و حالا می خوام در صفحه اخبار مثلا 5 خبر که گذاشته شد صفحه دوم ساخته بشه تو وب چیزی درباره آموزش شمارش صفحات پیدا نکردم

ممنون میشم راهنمایی کنید و یک مثال در صورت امکان بزنید .

یکی از دوستان در انجمن دیگر ایکد رو لطف کردند گزاشتند اما نمی دونم چجوری باید بزارمش تو صفحات برنامم

ممنون میشم اگه توضیح بدید

<?php

include('config.php'); // فایل حاوی تنظیمات اتصال به پایگاه داده

$tbl_name='tableName'; //نام جدول پایگاه داده


$adjacents = 3; //تعداد صفحاتی که بعد از شماره ی صفحه نمایش می دهد

$query = 'SELECT COUNT(*) as `num` FROM $tbl_name'; // کوئری دریافت تعداد صفحات قابل نمایش
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages['num'];

$targetpage = 'pageName'; //اسم این فایل که کدها را در آن قرار می دهید

$limit = 5; //تعداد پست هایی که در هر صفحه نشان داده می شود
$page = $_GET['page'];
if($page)
$start = ($page - 1) * $limit; //اولین گزینه گزینه ای که در صفحه نمایش داده می شود
else
$start = 0;

/* دریافت اطلاعات
column_name نام ستون یا ستونهایی می باشد که از جدول می خوانید
*/
$sql = 'SELECT column_name FROM $tbl_name LIMIT $start, $limit';
$result = mysql_query($sql);

if ($page == 0) $page = 1;
$prev = $page - 1;
$next = $page + 1;
$lastpage = ceil($total_pages/$limit);
$lpm1 = $lastpage - 1;

$pagination = '';
if($lastpage > 1)
{
$pagination .= '<div class=\'pagination\'>';
//کلید قبلی
if ($page > 1)
$pagination.= '<a href=\'$targetpage?page=$prev\'>« previous</a>';
else
$pagination.= '<span class=\'disabled\'>« previous</span>';

//صفحات
if ($lastpage < 7 + ($adjacents * 2))
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= '<span class=\'current\'>$counter</span>';
else
$pagination.= '<a href=\'$targetpage?page=$counter\'>$counter</a>';
}
}
elseif($lastpage > 5 + ($adjacents * 2))
{

if($page < 1 + ($adjacents * 2))
{
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
{
if ($counter == $page)
$pagination.= '<span class=\'current\'>$counter</span>';
else
$pagination.= '<a href=\'$targetpage?page=$counter\'>$counter</a>';
}
$pagination.= '...';
$pagination.= '<a href=\'$targetpage?page=$lpm1\'>$lpm1</a>';
$pagination.= '<a href=\'$targetpage?page=$lastpage\'>$lastpage</a>';
}

elseif($lastpage - ($adjacents * 2) > $page &amp;amp;&amp;amp; $page > ($adjacents * 2))
{
$pagination.= '<a href=\'$targetpage?page=1\'>1</a>';
$pagination.= '<a href=\'$targetpage?page=2\'>2</a>';
$pagination.= '...';
for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
{
if ($counter == $page)
$pagination.= '<span class=\'current\'>$counter</span>';
else
$pagination.= '<a href=\'$targetpage?page=$counter\'>$counter</a>';
}
$pagination.= '...';
$pagination.= '<a href=\'$targetpage?page=$lpm1\'>$lpm1</a>';
$pagination.= '<a href=\'$targetpage?page=$lastpage\'>$lastpage</a>';
}

else
{
$pagination.= '<a href=\'$targetpage?page=1\'>1</a>';
$pagination.= '<a href=\'$targetpage?page=2\'>2</a>';
$pagination.= '...';
for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= '<span class=\'current\'>$counter</span>';
else
$pagination.= '<a href=\'$targetpage?page=$counter\'>$counter</a>';
}
}
}

//کلید بعدی
if ($page < $counter - 1)
$pagination.= '<a href=\'$targetpage?page=$next\'>next »</a>';
else
$pagination.= '<span class=\'disabled\'>next »</span>';
$pagination.= '</div>\n';
}
?>

<?php
while($row = mysql_fetch_assoc($result))
{

/*
کدهای تکرار شما
برای مثال:

echo $row['name'].'<br>';

*/

}
?>

<?php echo $pagination; ?>

m.m.m5651
05-10-2011, 00:23
نخست: همه ی داده ها ی درون پایگاه رو اندازه گیری (count) کنید و بر تعداد مطالب در هر برگ تقسیم کنید.
سپس: برای هر یک از شماره های صفحات یک فرم با متد "گِت"، ایجاد کنید.
سپس: با استفاده از if isset تغییر پذیر گت (بهتره محتواش شامل شماره ی برگ باشه) و limit در کوئری ها، مطالب رو به روی صفحه بندازید. مثلا با یک for و if "گت" == i ، بگید که مثلا سپس، کوئری زیر رو انجام بده:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
البته اگر صفحه مساوی با صفحه ی اول نبود!

eimanpaladin
05-10-2011, 07:33
با تشکر دوست عزیزخوب متوجه نشدم میشه یکم توضیح بدید

شرمنده

moein_ak
05-10-2011, 09:24
نخست: همه ی داده ها ی درون پایگاه رو اندازه گیری (count) کنید و بر تعداد مطالب در هر برگ تقسیم کنید.
سپس: برای هر یک از شماره های صفحات یک فرم با متد "گِت"، ایجاد کنید.
سپس: با استفاده از if isset تغییر پذیر گت (بهتره محتواش شامل شماره ی برگ باشه) و limit در کوئری ها، مطالب رو به روی صفحه بندازید. مثلا با یک for و if "گت" == i ، بگید که مثلا سپس، کوئری زیر رو انجام بده:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
البته اگر صفحه مساوی با صفحه ی اول نبود!

واسه هر صفحه یه فرم:18:
با یه لینک ساده میشه این کارو انجام داد
فرم فقط مال موقعیه که اطلاعاتو کاربر وارد میکنه نه وقتی که همه پارامترو مشخصن

ebse
05-10-2011, 12:05
سلام
من از پی اچ پی چیزی نمیدونم ولی این توضیحات شاید به دردت بخوره
اول با یه دستوره ( که من نمیدونم چطوری ) رکورد ها رو بخون و بریز تو یه آرایه مثلا $items
بعدش مثلا اگه می خوای در هر صفحه x تا رکورد قرار بگیره این جوری بنویس ( شماره صفحه ات رو مثلا گذاشتی تو متغیر $page)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
نکته : متغیر $page فقط می تواند اعداد صحیح بزرگتر یا مساوی یک ( اعداد طبیعی ) را بگیرد و لا غیر

موفق باشید

ebse
05-10-2011, 12:15
تکراری شد.......

m.m.m5651
05-10-2011, 22:32
واسه هر صفحه یه فرم:18:
حق با شماست سوتی دادم :دی
این شکلی:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
-------------------
-------------------

با تشکر دوست عزیزخوب متوجه نشدم میشه یکم توضیح بدید

شرمنده
خواهش می کنم :46:
کدوم قسمت رو متوجه نشدید؟