Загрузка данных из базы данных с разбивкой на страницы в PHP PDO - PullRequest
0 голосов
/ 08 мая 2018

У меня есть сайт, разработанный с использованием программирования PHP PDO. На этом сайте есть одна страница, где информация о праздничных пакетах указана в базе данных вместе с нумерацией страниц. Моя проблема только 6 записей из базы данных загружается на странице, но нумерация страниц показывает более одной страницы. На самом деле я впервые использую PDO и не могу справиться с этой проблемой.

Вот мой код

index.class (все функции базы данных написаны здесь)

<?php
include_once "class/common.php";
class INDEX {
var $doAction;  
var $msg;
var $objScr;
var $objCommonFunc;     // This is common function object.
var $rsltInfo;          // A common result set used by this class in various queries.
var $rsltOp;            // A common result set used by this class in various queries.
var $arrSysVar;         // Array that stores the System Variable those are used in screen.

// Other variables
var $adminEmail;
var $arrMetaContent;    // For storing content and meta information.
var $leftMenuId;        // Recid of 'menugroup' table for managing leftbar.
var $rightMenuId;       // Recid of 'menugroup' table for managing rightbar.
var $menuPos;   

function getHolydays($rgnId,$start_from, $record_per_page){

    $qrySel = "SELECT h.recid recid, h.regionid regionid, h.name name, h.subtitle subtitle, h.txtDays txtDays, h.txtNights txtNights, h.pricingfrom pricingfrom, h.thumb_img thumb_img 
    FROM holydays h";
    if($rgnId!=0){ $qrySel.= " WHERE h.regionid=".$rgnId; }
    $qrySel .=" LIMIT $start_from,$record_per_page";
    $objDbResult = $this->rsltInfo->getResult($qrySel);
    return $objDbResult;
}

function getHolydaysPagntnCount($rgnId){

    $qrySel = "SELECT h.recid recid, h.regionid regionid, h.name name, h.subtitle subtitle, h.txtDays txtDays, h.txtNights txtNights, h.pricingfrom pricingfrom, h.thumb_img thumb_img 
    FROM holydays h";
    if($rgnId!=0){ $qrySel.= " WHERE h.regionid=".$rgnId; }
    //echo $qrySel ;
    $objDbResult = mysql_query($qrySel);
    return $objDbResult;
}
}
$objScr = new INDEX();
?>

международного holidays.php

            <?php $active_menu = 'Holidays'; 
        include_once("index.class.php");
        include_once 'header.php';
        $objScr = new INDEX();

        //$region_name="";
        //if($_REQUEST['mcId'])$mcId=$_REQUEST['mcId'];
        $rgnId=0;
        if($_REQUEST['rgnId'])$rgnId=$_REQUEST['rgnId'];

        if($_REQUEST['pgId'])
        $pgId=$_REQUEST['pgId'];
        $start_from=!empty($_REQUEST['page'])?$_REQUEST['page']:0;
        //echo $start_from;
        $record_per_page=6;



        $rsltrgn = $objScr->getRegionname();
        $rsltsdrgn = $objScr->getRegionname();
        $rsltholyDetails = $objScr->getHolydays($rgnId,$start_from, $record_per_page);
        $holydetailscount = mysql_numrows($objScr->getHolydayscount());

        $holydaycount = mysql_numrows($objScr->getHolydaysPagntnCount($rgnId));
        $total_pages = ceil($holydaycount/$record_per_page);

        $rsltbannerDets= $objScr->getbannerImg($rgnId);
        $rowbannerdts = $rsltbannerDets->fetchAssoc();
        ?>              
        <div class="col-md-8 col-sm-12 col-8">
        <div class="right">
        <div class="pagination-wrp clearfix">
        <nav class="nav-pagination">
        <?php                                //Here is the code for pagination
        if($total_pages>0){?>

        <ul class="pagination">
        <?php if($pgId>1){?>
        <li class="active"> <?php $prvpages=$start_from-6; $prev = ($pgId - 1); ?> 
        <a href="international-holidays-details.php?<?php echo "page=".$prvpages."&rgnId=".$rgnId."&pgId=".$prev; ?>" aria-label="Previous">
        <img src="images/left-arrow.svg" alt=""></a></li>
        <?php }?>
        <?php
        if($pgId!="" && $pgId!=1){ $spage=$pgId-1; }else{ $spage=1; $pgId=1; }
        $maxPages=5;
        $maxDisplayPage = $pgId + $maxPages - 1;

        if($total_pages-$spage<5){ $spage=$total_pages-5; }
        if($spage<=0){ $spage=1; }

        for($i=$spage;$i<=min($maxDisplayPage, $total_pages);$i++){

        if($i==1){ $st=0; }
        else{
        $st = ($i - 1) * $record_per_page;
        }
        ?>
        <li <?php if($i==$pgId){?> class="active" <?php }?>>
        <a href="international-holidays-details.php?<?php echo "page=".$st."&rgnId=".$rgnId."&pgId=".$i; ?>" >
        <?php echo $i; ?></a>
        </li>

        <?php 
        }

        ?>  
        <li class="active"><?php $nextpages=$start_from+6; if($pgId<$total_pages){ $next = ($pgId + 1); ?> 
        <a href="international-holidays-details.php?<?php echo "page=".$nextpages."&rgnId=".$rgnId."&pgId=".$next; ?>" aria-label="Next">
        <img src="images/right-arrow.svg" alt=""> </a></li> 
        <?php }?></ul><?php }?>

        </nav>
        </div>

        <?php
        if($holydetailscount > 0) {
        while($rowhly = $rsltholyDetails->fetchAssoc())
        {
        //$catgryname=str_split("Hello",3);

        ?>
        <div class="col-sm-6 wow fadeInUp">              
                                         //Here the holiday packages as shown in boxes.
        <a href="international-holidays-details.php?holyId=<?php echo $rowhly['recid']; ?>" class="offer-thumb">
        <div class="offer-img"><img src="../sysimages/origimages/<?php echo $rowhly['thumb_img']; ?>" class="w-100" alt=""></div>
        <div class="details clearfix">
        <div class="title"><?php echo $rowhly['name']; ?><span><?php echo $rowhly['subtitle']; ?> </span></div>
        <div class="price"><span>aed <?php echo $rowhly['pricingfrom']; ?></span>
        <?php echo $rowhly['txtDays']; ?> days &nbsp;<?php echo $rowhly['txtNights']; ?> night</div>
        </div>
        </a>
        </div>
        <?php } }?>


        </div>
        </div>

Этот же код отлично работает на другой странице. Дело в том, что нумерация страниц показывает 5 страниц, но когда я нажимаю на любую страницу, например, 2, она не загружает вторую страницу, а показывает саму первую страницу. Я не поняла, что происходит. Этот код был разработан кем-то другим, и моя задача состоит в том, чтобы сделать некоторые обновления по этому вопросу. Может кто-нибудь, пожалуйста, помогите мне .. Мне действительно нужно было сделать это.

1 Ответ

0 голосов
/ 08 мая 2018

А что если вы используете этот плагин? В моем случае это было очень полезно.

https://mottie.github.io/tablesorter/beta-testing/example-pager-custom-controls.html

Или вы можете просто сделать это вручную, используя mysql.

Разбивка на страницы с использованием MySQL LIMIT, OFFSET

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...