在搜索结果中添加分页

时间:2015-03-14 04:04:19

标签: php html mysql mysqli pagination

我想为以下内容添加分页,但不知道该怎么做。从某种意义上说,下面的查询检索数据库中的项目列表,并且列表非常冗长,每页限制10个。问题是我不确定如何在下面的函数中集成分页。

// retrieving items based on the categories
     function getCatCrs(){

        if(isset($_GET['cat'])){
            $cat_id = $_GET['cat'];

        global $con;
        $get_cat_crs = "select * from courses where course_cat1='$cat_id'  AND course_date1 >= CURRENT_DATE() ORDER BY course_date1 ASC";
        $run_cat_crs = mysqli_query($con, $get_cat_crs);

        $count_cats = mysqli_num_rows($run_cat_crs);
        echo '<p style="margin-bottom: 8px;margin-top: 8px;font-size:18px;"><b>Number of courses available: </b>' . $count_cats;

        if ($count_cats==0){

            echo "<h2 style='padding:20px;'>No course(s) were found in this category.</h2>";

        }




        while($row_cat_crs=mysqli_fetch_array($run_cat_crs)){
            $crs_id = $row_cat_crs['course_id'];
                    $crs_cat = $row_cat_crs['course_cat1'];

            $crs_provider = $row_cat_crs['course_provider'];

            $crs_title = $row_cat_crs['course_title'];
                    $crs_price = $row_cat_crs['course_price'];
                    $crs_category= $row_cat_crs['course_cat1'];

                    $crs_image = $row_cat_crs['course_image'];

        $crs_date = $row_cat_crs['course_date1'];
                    $crs_city = $row_cat_crs['course_city'];
    $crs_sdesc= $row_cat_crs['course_sdesc'];
    $crs_shortdesc = mb_strimwidth("$crs_sdesc",0,140,"...");
            $provider_image = $row_cat_crs['provider_image'];


                    echo "

                                         <article class='search-result row'><center>
          <div class='col-xs-12 col-sm-12 col-md-3' id='thumbnailContainer'>
            <a href='#' title='Lorem ipsum' class='thumbnail' id='resultThumbnail'><img src='$provider_image' /></a>
        <a href='searchPage.php?crs_price=$crs_price' style='color:black;'>  <button id='resultprice'><span id='resultpriceText'>$ $crs_price</span></button></a>
          </div>
          <div class='col-xs-12 col-sm-12 col-md-2'>
            <ul class='meta-search' id='listDesign'>
            <a href='searchPage.php?crs_date=$crs_date' style='color:white;'>   <li><button id='resultInfo'><i class='fa fa-calendar fa-1x'><span id='iconText'>  $crs_date</span></i></button></li></a>
             <a href='searchPage.php?crs_category=$crs_category' style='color:white;'>   <li><button id='resultInfo'><i class='fa fa fa-tags fa-1x'><span id='iconText'> $crs_category</span></i></button></li></a>
    <a href='searchPage.php?crs_provider=$crs_provider' style='color:white;'><li><button id='resultInfo'><i class='fa fa-graduation-cap fa-1x'><span id='iconText'>  $crs_provider</span></i></button></li></a>
    <a href='searchPage.php?city=$crs_city' style='color:white;'><li><button id='resultInfo'><i class='fa fa-map-marker fa-1x'><span id='iconText'> $crs_city</span></i></button></li></a>
            </ul>
          </div></center>
          <div class='col-xs-12 col-sm-12 col-md-7 excerpet'>
            <h3 id='resultHeading'><a href='coursePage.php?crs_id=$crs_id' id='headingLinking'><b>$crs_title</b></a></h3>

            <div id='courseshortDescription'>
    $crs_shortdesc
            </div>  

          <center>  <a href='coursePage.php?crs_id=$crs_id' style='color:white;'><button class='btn btn-danger' id='findoutBtn'>Find Out More</button></a></center>     


          <span class='clearfix borda'></span>
        </article>


                    ";






        }

    }
    }

非常感谢任何帮助。

更新

错误消息:

Notice: Undefined variable: page in 

Notice: Undefined variable: totalRows in 

Notice: Undefined variable: totalRows in 

Notice: Undefined variable: page in 
function getCatCrs(){

    if(isset($_GET['cat'])){
        $cat_id = $_GET['cat'];

    global $con;

    $limit = 10;
$page = (int) isset($_GET['page']) ? $_GET['page'] : 1;
$offset = ($page) ? ($page - 1) * $limit : 0;
$get_cat_crs = "select * from courses where course_cat1='$cat_id'  AND course_date1 >= CURRENT_DATE() ORDER BY course_date1 ASC LIMIT $offset, $limit";
$sql = "select COUNT(course_title) from courses where course_cat1='$cat_id'  AND course_date1 >= CURRENT_DATE()";

$totalRows = mysqli_num_rows(mysqli_query($con, $sql));
    $run_cat_crs = mysqli_query($con, $get_cat_crs);

    $count_cats = mysqli_num_rows($run_cat_crs);
    echo '<p style="margin-bottom: 8px;margin-top: 8px;font-size:18px;"><b>Number of courses available: </b>' . $count_cats;

    if ($count_cats==0){

        echo "<h2 style='padding:20px;'>No course(s) were found in this category.</h2>";

    }

    echo "
<ul id='pagination'>
            <?php if ($page > 1): ?>
            <li class='previous-off'><a href='<?= '$url?page=' . ($page-1) ?>''>Previous</a></li>
            <?php endif; ?>
            <?php for ($i = 1; $i <= $totalRows; $i++): ?>
            <?php
            $class = ($page == $i) ? '' class=\'active\'' : '';
            $hl = '$url?page=$i';
            $label = ($page != $i) ? '<a href=\'$hl\''>$i</a>'' : $i;
            ?>
            <li><?= $label ?></li>
            <?php endfor; ?>
            <?php if ($page < $totalRows): ?>
            <li class='next'><a href='<?= '$url?page=' . ($page+1) ?>'>Next</a></li>
            <?php endif; ?>
        </ul>
        ";




    while($row_cat_crs=mysqli_fetch_array($run_cat_crs)){
        $crs_id = $row_cat_crs['course_id'];
                $crs_cat = $row_cat_crs['course_cat1'];

        $crs_provider = $row_cat_crs['course_provider'];

        $crs_title = $row_cat_crs['course_title'];
                $crs_price = $row_cat_crs['course_price'];
                $crs_category= $row_cat_crs['course_cat1'];

                $crs_image = $row_cat_crs['course_image'];

    $crs_date = $row_cat_crs['course_date1'];
                $crs_city = $row_cat_crs['course_city'];
$crs_sdesc= $row_cat_crs['course_sdesc'];
$crs_shortdesc = mb_strimwidth("$crs_sdesc",0,140,"...");
        $provider_image = $row_cat_crs['provider_image'];


                echo "

                                     <article class='search-result row'><center>
      <div class='col-xs-12 col-sm-12 col-md-3' id='thumbnailContainer'>
        <a href='#' title='Lorem ipsum' class='thumbnail' id='resultThumbnail'><img src='$provider_image' /></a>
    <a href='searchPage.php?crs_price=$crs_price' style='color:black;'>  <button id='resultprice'><span id='resultpriceText'>$ $crs_price</span></button></a>
      </div>
      <div class='col-xs-12 col-sm-12 col-md-2'>
        <ul class='meta-search' id='listDesign'>
        <a href='searchPage.php?crs_date=$crs_date' style='color:white;'>   <li><button id='resultInfo'><i class='fa fa-calendar fa-1x'><span id='iconText'>  $crs_date</span></i></button></li></a>
         <a href='searchPage.php?crs_category=$crs_category' style='color:white;'>   <li><button id='resultInfo'><i class='fa fa fa-tags fa-1x'><span id='iconText'> $crs_category</span></i></button></li></a>
<a href='searchPage.php?crs_provider=$crs_provider' style='color:white;'><li><button id='resultInfo'><i class='fa fa-graduation-cap fa-1x'><span id='iconText'>  $crs_provider</span></i></button></li></a>
<a href='searchPage.php?city=$crs_city' style='color:white;'><li><button id='resultInfo'><i class='fa fa-map-marker fa-1x'><span id='iconText'> $crs_city</span></i></button></li></a>
        </ul>
      </div></center>
      <div class='col-xs-12 col-sm-12 col-md-7 excerpet'>
        <h3 id='resultHeading'><a href='coursePage.php?crs_id=$crs_id' id='headingLinking'><b>$crs_title</b></a></h3>

        <div id='courseshortDescription'>
$crs_shortdesc
        </div>  

      <center>  <a href='coursePage.php?crs_id=$crs_id' style='color:white;'><button class='btn btn-danger' id='findoutBtn'>Find Out More</button></a></center>     


      <span class='clearfix borda'></span>
    </article>


                ";






    }

}
}

1 个答案:

答案 0 :(得分:1)

所以你想要做的是使用MySQL LIMIT范围

您可以通过传递GET参数来管理您的分页。

$limit = 10;
$page = (int) isset($_GET['page']) ? $_GET['page'] : 1;
$offset = ($page) ? ($page - 1) * $limit : 0;
$get_cat_crs = "select * from courses where course_cat1='$cat_id'  AND course_date1 >= CURRENT_DATE() ORDER BY course_date1 ASC LIMIT $offset, $limit";
$sql = "select COUNT(somefield) from courses where course_cat1='$cat_id'  AND course_date1 >= CURRENT_DATE()";

$totalRows = mysqli_num_rows(mysqli_query($con, $sql););

然后,您需要在视图中实现您的分页

例如......

<ul id="pagination">
            <?php if ($page > 1): ?>
            <li class="previous-off"><a href="<?= "$url?page=" . ($page-1) ?>">Previous</a></li>
            <?php endif; ?>
            <?php for ($i = 1; $i <= $totalRows; $i++): ?>
            <?php
            $class = ($page == $i) ? " class=\"active\"" : '';
            $hl = "$url?page=$i";
            $label = ($page != $i) ? "<a href=\"$hl\">$i</a>" : $i;
            ?>
            <li><?= $label ?></li>
            <?php endfor; ?>
            <?php if ($page < $totalRows): ?>
            <li class="next"><a href="<?= "$url?page=" . ($page+1) ?>">Next</a></li>
            <?php endif; ?>
        </ul>