PDA

View Full Version : سوال: قرار دادن pagination برای سایت



7asemoon
سه شنبه 02 تیر 1394, 09:38 صبح
من در قسمت سایتم بخشی دارم که وقتی روی موضوع خاصی کلیک میشه تموم پست ها مرتبط با اون نمایش داده میشه
حالا من میخام با ایجاد pagination فقط 5 خبر نمایش داده بشه و مابقی به صفحات بعدی ارسال بشه
برای این کار چه تغییراتی باید در کدم اعمال کنم
کد:


<?php
if(isset($_GET["id"]))
{
$id = CheckNum($_GET["id"]);
$sql = "SELECT * FROM `$tbl_posts` WHERE `cat_id`=? ORDER BY `id` DESC";
$result = $connect->prepare($sql);
$result->bindValue(1,$id);
$result->execute();
}
while($rows = $result->fetch(PDO::FETCH_ASSOC)){
?>
<div class="post-news">
<div class="image_review_wrapper">
<a href="more.php?id=<?=$rows["id"];?>">
<img style="opacity: 1;" src="<?=$rows["pic_url"];?>">
</a>
</div>
<div class="post_title">
<h3><a class="title" href="more.php?id=<?=$rows["id"];?>"><?=$rows["post_title"];?></a></h3>
<p class="post-meta">
<span class="date updated" dir="ltr"><?=$rows["date_show"];?> <i class="icon-calendar"></i></span>
</p>
<?php echo substr($rows["post_content"],0,200);?>
<div class="more-link">
<a href="more.php?id=<?=$rows["id"];?>" class="read-more">ادامه مطلب</a>
</div>
</div>
<div class="clear"></div>
</div>

<div class="brack_space"></div>
<?php
}
?>

fatima-php
سه شنبه 02 تیر 1394, 10:53 صبح
این کد رو امتحان کنین:

<?php
if(isset($_GET["id"]))
{
$id = CheckNum($_GET['id']);
$sql = "SELECT COUNT(*) FROM `?` WHERE (`cat_id`=?)";
$result = $connect->prepare($sql);
$result->bindValue(1, $tbl_posts);
$result->bindValue(2, $id);
$result->execute();
$totalRows = $result->fetchColumn();
$page = (isset($_GET['page']) ? max(1, intval($_GET['page'])) : 1);
$limit = 5;
$offset = ($page - 1) * $limit;
$pages = ceil($totalRows / $limit);
$sql = "SELECT * FROM `?` WHERE (`cat_id`=?) ORDER BY `id` DESC LIMIT '?,?'";
$result = $connect->prepare($sql);
$result->bindValue(1, $tbl_posts);
$result->bindValue(2, $id);
$result->bindValue(3, $offset);
$result->bindValue(4, $limit);
$result->execute();
}
?>
<?php while($rows = $result->fetch(PDO::FETCH_ASSOC)) : ?>
<div class="post-news">
<div class="image_review_wrapper">
<a href="more.php?id=<?=$rows["id"];?>">
<img style="opacity: 1;" src="<?=$rows["pic_url"];?>">
</a>
</div>
<div class="post_title">
<h3><a class="title" href="more.php?id=<?=$rows["id"];?>"><?=$rows["post_title"];?></a></h3>
<p class="post-meta">
<span class="date updated" dir="ltr"><?=$rows["date_show"];?> <i class="icon-calendar"></i></span>
</p>
<?php echo substr($rows["post_content"],0,200);?>
<div class="more-link">
<a href="more.php?id=<?=$rows["id"];?>" class="read-more">ادامه مطلب</a>
</div>
</div>
<div class="clear"></div>
</div>

<div class="brack_space"></div>
<?php endwhile(); ?>
<?php for($i = 1; $i <= $pages; $i++) : ?>
<?php echo "<a href=\"?id={$_GET['id']}&page={$_GET['page']}\">{$i}</a>&nbsp;"; ?>
<?php endif; ?>

همینجوری سریع نوشتم تست نکردم ولی فکر نکنم مشکل داشته باشه. اگه مشکلی بود خودتون اصلاح کنید. سعی کردم مفهوم رو برسونم.

7asemoon
سه شنبه 02 تیر 1394, 16:53 عصر
این کد رو امتحان کنین:

<?php
if(isset($_GET["id"]))
{
$id = CheckNum($_GET['id']);
$sql = "SELECT COUNT(*) FROM `?` WHERE (`cat_id`=?)";
$result = $connect->prepare($sql);
$result->bindValue(1, $tbl_posts);
$result->bindValue(2, $id);
$result->execute();
$totalRows = $result->fetchColumn();
$page = (isset($_GET['page']) ? max(1, intval($_GET['page'])) : 1);
$limit = 5;
$offset = ($page - 1) * $limit;
$pages = ceil($totalRows / $limit);
$sql = "SELECT * FROM `?` WHERE (`cat_id`=?) ORDER BY `id` DESC LIMIT '?,?'";
$result = $connect->prepare($sql);
$result->bindValue(1, $tbl_posts);
$result->bindValue(2, $id);
$result->bindValue(3, $offset);
$result->bindValue(4, $limit);
$result->execute();
}
?>
<?php while($rows = $result->fetch(PDO::FETCH_ASSOC)) : ?>
<div class="post-news">
<div class="image_review_wrapper">
<a href="more.php?id=<?=$rows["id"];?>">
<img style="opacity: 1;" src="<?=$rows["pic_url"];?>">
</a>
</div>
<div class="post_title">
<h3><a class="title" href="more.php?id=<?=$rows["id"];?>"><?=$rows["post_title"];?></a></h3>
<p class="post-meta">
<span class="date updated" dir="ltr"><?=$rows["date_show"];?> <i class="icon-calendar"></i></span>
</p>
<?php echo substr($rows["post_content"],0,200);?>
<div class="more-link">
<a href="more.php?id=<?=$rows["id"];?>" class="read-more">ادامه مطلب</a>
</div>
</div>
<div class="clear"></div>
</div>

<div class="brack_space"></div>
<?php endwhile(); ?>
<?php for($i = 1; $i <= $pages; $i++) : ?>
<?php echo "<a href=\"?id={$_GET['id']}&page={$_GET['page']}\">{$i}</a>&nbsp;"; ?>
<?php endif; ?>

همینجوری سریع نوشتم تست نکردم ولی فکر نکنم مشکل داشته باشه. اگه مشکلی بود خودتون اصلاح کنید. سعی کردم مفهوم رو برسونم.

تماما با خطا مواجه شد
قسمت نمایش مطالب به خاطر اون limit چیزی نشون نمیده و خطا میده و
این بخش هم
<?php echo "<a href=\"?id={$_GET['id']}&page={$_GET['page']}\">{$i}</a>&nbsp;"; ?>
خطای Undefined index میده

H:Shojaei
سه شنبه 02 تیر 1394, 21:22 عصر
این لینک رو ببینید (http://barnamenevis.org/showthread.php?459346-%D8%B5%D9%81%D8%AD%D9%87-%D8%A8%D9%86%D8%AF%DB%8C-%DB%8C%D8%A7-pagination)

7asemoon
سه شنبه 02 تیر 1394, 22:05 عصر
این لینک رو ببینید (http://barnamenevis.org/showthread.php?459346-%D8%B5%D9%81%D8%AD%D9%87-%D8%A8%D9%86%D8%AF%DB%8C-%DB%8C%D8%A7-pagination)

دست تون درد نکنه