2012-08-07 136 views
0

我正在嘗試使用Ajax在我的網站上設置分頁,我已經在以下鏈接繼承了一個腳本並將其付諸實踐 - http://www.testing.arrivaldesign.co.uk/properties使用php和mysql進行Ajax分頁

我已經在一定程度上工作了,但它設置爲顯示前9條記錄,然後從那裏繼續,但它只顯示第一頁上的前9個,但當您點擊下一個時頁面只重複4個現有記錄。

據我所見,這是與我的查詢限制,但我不知道如何得到它的工作?

這是事物的ajax方面的代碼。

<?php 
include('Connections/connection.php'); 

include 'functions.php'; 

// Pagination params 
$basePath  = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF']; 
$qString  = $_REQUEST['qString']; 
$items   = $_REQUEST['items']; 
$loadPage  = $_REQUEST['p']; 
$current  = $_REQUEST['current']; 

$limit = $loadPage*$items; 
$min = ($max-$items)+1; 

mysql_select_db($database, $conn); 
$query_RSproperty = "SELECT properties.*, type.* FROM (properties LEFT JOIN type ON properties.propType=type.typeID) WHERE offline = 'N' ORDER BY propID ASC LIMIT 0, $limit"; 
$RSproperty = mysql_query($query_RSproperty, $conn) or die(mysql_error()); 
$row_RSproperty = mysql_fetch_assoc($RSproperty); 
$totalRows_RSproperty = mysql_num_rows($RSproperty); 

$maxItems  = $totalRows_RSproperty; 

// New pagination 
$pagination = paginator($basePath . $qString, $loadPage, $maxItems, $items); 

// Direction is important for the script to determine which way to animate, left or right. 
$direction = 'left'; 
if ($current < $loadPage) { 
    $direction = 'right'; 
} 
$paginatedStyle = 'style="left:'.($direction == 'left' ? '0' : '-960px').';"'; 


// The paginated content HTML slide 
$page = '<div class="paginated" id="" '.$paginatedStyle.'>'; 

ob_start(); 
do { 
?> 
<div class="grid-1third res-block"> 
<div class="prop-brief-desc"> 
      <div class="grid-140"><a href="/properties/<?php echo $row_RSproperty['propSEO'] . '/' . $row_RSproperty['propID']; ?>" id="new<?php echo $no; ?>" class="thumb"><img src="/prop-images/thumbs/<?php echo $row_RSproperty['propImage1']; ?>" width="140" height="105" alt=""></a></div> 
      <div class="grid-140 fr"> 
       <h2><?php echo $row_RSproperty['propBeds']; ?> Bed <?php echo $row_RSproperty['typeName']; ?></h2> 
       <?php 
       $fulladdress = $row_RSproperty['propAddress1'] . '<br />' . $row_RSproperty['propCity'] . ', ' . $row_RSproperty['propCounty'] . '<br />' . $row_RSproperty['propPostcode']; 
       ?> 
       <p><?php echo $fulladdress; ?></p> 
      </div> 
      </div> 
      <div class="prop-brief-options<?php echo $no == 2 || $no == 3 ? " hide" : ""; ?>" id="newopt<?php echo $no; ?>"> 
      <div class="grid-140"> <a href="/properties/<?php echo $row_RSproperty['propSEO'] . '/' . $row_RSproperty['propID']; ?>" class="green_button">Details</a> <a href="#" class="green_button">Arrange Viewing</a> <a href="#" class="green_button">Place Bid</a> <a href="#" class="green_button">Buy it Now</a> </div> 
      <div class="grid-140 fr"> 
       <dl> 
       <dt>Auction Ending:</dt> 
       <dd><?php 
       if(!function_exists('countdown')) {    
        function countdown($year, $month, $day, $hour, $minute) { 

         $the_countdown_date = mktime($hour, $minute, 0, $month, $day, $year, -1); 
         $current = time(); 

         $difference = $the_countdown_date - $current; 
         if ($difference < 0) $difference = 0; 

         $days = floor($difference/60/60/24); 
         $hours = floor(($difference - $days*60*60*24)/60/60); 
         $minutes = floor(($difference - $days*60*60*24 - $hours*60*60)/60); 

         echo $days."d ".$hours."h ".$minutes."m"; 
        } 
       } 

       $theyear = date("Y",strtotime($row_RSproperty['propEndDate'])); 
       $themonth = date("n",strtotime($row_RSproperty['propEndDate'])); 
       $theday = date("d",strtotime($row_RSproperty['propEndDate'])); 
       $thehour = date("H",strtotime($row_RSproperty['propEndDate'])); 
       $theminute = date("i",strtotime($row_RSproperty['propEndDate'])); 

       countdown($theyear,$themonth,$theday,$thehour,$theminute); 
       ?></dd> 
       <?php if ($row_RSproperty['propCurrBid'] > 0) { ?> 
       <dt>Current bid:</dt> 
       <dd>£<?php echo number_format($row_RSproperty['propCurrBid']); ?></dd> 
       <?php } else { ?> 
       <dt>Starting Price:</dt> 
       <dd>£<?php echo number_format($row_RSproperty['propStartPrice']); ?></dd> 
       <?php } ?> 
       <dt>Buy it now:</dt> 
       <dd><span class="green">£<?php echo number_format($row_RSproperty['propBinPrice']); ?></span></dd> 
       </dl> 
      </div> 
      </div> 
      </div> 
<?php  
    } while ($row_RSproperty = mysql_fetch_array($RSproperty)); 
    /*while ($min <= $max) { 
     $page .= '<li>'.$min.'</li>'; 
     $min++; 
    }*/ 
    $page .= ob_get_contents(); 
    ob_end_clean(); 

$page .= '</div>'; 


// return the JSON 
echo json_encode(array('pagination' => $pagination, 'page' => $page, 'current' => $loadPage)); 
exit; 

?> 

非常感謝

克里斯

回答

1

那是因爲你已經很難在查詢編碼限制爲0

$query_RSproperty = "SELECT properties.*, type.* FROM (properties LEFT JOIN type ON properties.propType=type.typeID) WHERE offline = 'N' ORDER BY propID ASC LIMIT 0, $limit"; 

所以,當你在第二頁上移動時,查詢必須得到生成如下

$query_RSproperty = "SELECT properties.*, type.* FROM (properties LEFT JOIN type ON properties.propType=type.typeID) WHERE offline = 'N' ORDER BY propID ASC LIMIT 0, 4"; 

因此你得到第4條記錄。如果您要檢索的下一組的後續網頁上的記錄,那麼你必須做出0 LIMIT 0, $limit動態,如:

$query_RSproperty = "SELECT properties.*, type.* FROM (properties LEFT JOIN type ON properties.propType=type.typeID) WHERE offline = 'N' ORDER BY propID ASC LIMIT $offset, $limit"; 

你算算$偏移取決於你有多少結果每頁顯示。在第一頁上,偏移量始終爲0.如果每頁顯示10條記錄,則在第二頁上,偏移量將爲11,第三個偏移量爲21,依此類推。

+0

嗨,感謝您的回覆,我明白您的意思,但是因爲它站在數據庫中有12條記錄,並且限制目前在我的鏈接上硬編碼爲10,所以下一頁可以出現。如果它被設置爲$ limit變量,它將是9,然後下一個頁面不會出現。我正在努力做到這一點。 – user1497023 2012-08-07 14:53:14