2015-10-07 32 views
3

我有一个无限的滚动scipt拉数据和显示它就好了。但是,我发现当您向下滚动数据时,会从头开始重新开始。现在我有8行用于在数据库中进行测试,以方便使用。我的控制权获得下一个数据集似乎没有工作,否则会转到下一组结果?无限滚动数据拉

//item per page 
    $limit = 5; 
    $page =(int)(!isset($_GET['p']))?1: $_GET['p']; 

    // sql query 
    $sqlContent="SELECT make, model, year, carid FROM cars"; 

    //Query start point 
    $start =($page * $limit)- $limit; 

    $resContent=$DB_con->query($sqlContent); 
     $rows_returned= $resContent->rowCount();//->fetchColumn(); 

    // query for page navigation 
    if($rows_returned > ($page * $limit)){ 
     $next =++$page; 

    } 


    $sqlContent = $sqlContent ." LIMIT $start, $limit"; 
    $finalContent = $DB_con->query($sqlContent); 
    if($finalContent === false) { 
     trigger_error('Error: ' . $DB_con->error, E_USER_ERROR); 
    } else { 

      $rows_returned= $finalContent->rowCount();//->fetchColumn(); 
    } 
?> 

然后显示结果:

<?php while($rowContent = $finalContent->fetch()) { 
    $year = $rowContent['year']; 
    $make = $rowContent['make']; 
    $model = $rowContent['model']; 
    ?> 
    <div class="row"> 
     <div class="ride"><?php echo "$year $make $model"; ?></div> 
     </div> 
    <?php } ?> 
    </div> 
     </div> 
    <!--page navigation--> 
    <?php if(isset($next)):?> 
     <div class="nav"> 
      <a href='index.php?p=<?php echo $next?>'>Next</a> 
     </div> 
    <?php endif ?> 
    </div> 
+0

你能否提供JS代码? – mloureiro

回答

1

这是索姆作为一名经典的asp程序员,我改编自PHP的日子。

它提供了一个不错的柜台,随着第一,最后,下一个&上一个环节。

首先是您的sql查询,其中包含两条select语句,具体取决于您希望显示的每页记录数和总记录数。 (如果要显示的数字实际上大于db中的记录数)。

<?php 
require'connections/conn.php'; 

$maxRows_rsList = 10; // the number of records you want to show per page 
$pageNum_rsList = 0; 
if (isset($_GET['pageNum_rsList'])) { 
    $pageNum_rsList = $_GET['pageNum_rsList']; 
} 
$startRow_rsList = $pageNum_rsList * $maxRows_rsList; 

$query_rsList = $conn->prepare("SELECT make, model, year, carid FROM cars"); 
$query_limit_rsList = $conn->prepare("SELECT make, model, year, carid FROM cars LIMIT $startRow_rsList, $maxRows_rsList"); 
$query_limit_rsList->execute(); 
$row_rsList = $query_limit_rsList->fetch(PDO::FETCH_ASSOC); 

if (isset($_GET['totalRows_rsList'])) { 
    $totalRows_rsList = $_GET['totalRows_rsList']; 
} else { 
    $all_rsList = $query_rsList->execute(); 
    $totalRows_rsList = $query_rsList->rowCount(); 
} 
$totalPages_rsList = ceil($totalRows_rsList/$maxRows_rsList)-1; 

$queryString_rsList = ""; 
if (!empty($_SERVER['QUERY_STRING'])) { 
    $params = explode("&", $_SERVER['QUERY_STRING']); 
    $newParams = array(); 
    foreach ($params as $param) { 
    if (stristr($param, "pageNum_rsList") == false && 
     stristr($param, "totalRows_rsList") == false) { 
     array_push($newParams, $param); 
    } 
    } 
    if (count($newParams) != 0) { 
    $queryString_rsList = "&" . htmlentities(implode("&", $newParams)); 
    } 
} 
$queryString_rsList = sprintf("&totalRows_rsList=%d%s", $totalRows_rsList, $queryString_rsList); 

$currentPage = $_SERVER["PHP_SELF"]; // so we stay on the same page just changing the recordset data 
?> 

然后我们输出

<table cellpadding="5" cellspacing="0" border="0"> 
      <?php if($totalRows_rsList > $maxRows_rsList) { ?> 
      <tr> 
      <td colspan="2"><?php echo ($startRow_rsList + 1) ?> to <?php echo min($startRow_rsList + $maxRows_rsList, $totalRows_rsList) ?> of <?php echo $totalRows_rsList ?> cars<br /> 
       <table border="0"> 
      <tr> 
      <?php if ($pageNum_rsList > 0) { // Show if not first page ?> 
      <td width="25" nowrap="nowrap"> 
       <a href="<?php printf("%s?pageNum_rsList=%d%s", $currentPage, 0, $queryString_rsList); ?>">First</a>&nbsp; 
      </td> 
      <?php } // Show if not first page ?> 
      <?php if ($pageNum_rsList > 0) { // Show if not first page ?> 
      <td width="25" nowrap="nowrap"> 
       &nbsp;<a href="<?php printf("%s?pageNum_rsList=%d%s", $currentPage, max(0, $pageNum_rsList - 1), $queryString_rsList); ?>">Prev</a>&nbsp; 
      </td> 
      <?php } // Show if not first page ?> 
      <?php if ($pageNum_rsList < $totalPages_rsList) { // Show if not last page ?> 
      <td width="25" nowrap="nowrap"> 
       &nbsp;<a href="<?php printf("%s?pageNum_rsList=%d%s", $currentPage, min($totalPages_rsList, $pageNum_rsList + 1), $queryString_rsList); ?>">Next</a>&nbsp; 
      </td> 
      <?php } // Show if not last page ?> 
      <?php if ($pageNum_rsList < $totalPages_rsList) { // Show if not last page ?> 
      <td width="25" nowrap="nowrap"> 
       &nbsp;<a href="<?php printf("%s?pageNum_rsList=%d%s", $currentPage, $totalPages_rsList, $queryString_rsList); ?>">Last</a> 
      </td> 
      <?php } // Show if not last page ?> 
      </tr> 
     </table></td> 
    </tr> 
      <?php } else if(($totalRows_rsList == $maxRows_rsList) || ($totalRows_rsList < $maxRows_rsList)) { ?> 
      <tr><td colspan="2">&nbsp;</td></tr> 
      <tr><td colspan="2"><?php echo ($startRow_rsList + 1) ?> to <?php echo min($startRow_rsList + $maxRows_rsList, $totalRows_rsList) ?> of <?php echo $totalRows_rsList ?> cars<br /></td></tr> 
      <?php } ?> 
      <tr><td> 
      <?php do { 
       $year = $row_rsList['year']; 
       $make = $row_rsList['make']; 
       $model = $row_rsList['model']; 
     ?> 
<div class="row"> 
    <div class="ride"><?php echo "$year $make $model"; ?></div> 
    </div> 
<?php } while($row_rsList = $query_limit_rsList->fetch(PDO::FETCH_ASSOC)) ?> 
    </div> 
    </div> 
</td></tr> 
</table> 

编码快乐!

+0

这实际上对我有帮助!非常感谢! :) –

1
$page =(int)(!isset($_GET['p']))?1: $_GET['p']; 

实际上应该是

$page =(!isset($_GET['p']))?1: (int)$_GET['p']; 

你正在做什么是铸造isset的布尔结果作为整数

+0

什么都没有发生。问题依然存在。 –

+1

调试$页面时发生了什么?它总是1吗? –

+0

是的,它总是1. –