2015-03-14 2 views
1

Я хотел бы добавить разбивку на страницы следующим образом, но не знаю, как это сделать. В том смысле, что этот запрос ниже возвращает список элементов в базе данных, а список довольно длинный, где было бы ограничить его 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

Так что вы хотите сделать, это использовать 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> 
+0

большое спасибо за ваше предложение. Я очень благодарен. Мне просто сложно интегрировать ваше предложение с моим предыдущим кодом. – John

+1

С чем вы столкнулись? Раздел html - это всего лишь пример того, как он может работать. Вам придется изменить эхо, которое вы делаете в своей функции. – slik

+0

в том смысле, что я хотел бы эхо html-часть с помощью php так же, как и в предыдущем коде – John

Смежные вопросы