2012-09-06 27 views
0

我已經設法通過使用PDO的sqlite數據庫進行分頁,但對數據庫是新手我想知道是否有更好或有效的方式做到這一點?這裏是代碼:用PDO sqlql分頁

<?php 
try 
{ 
$db = new PDO('sqlite:comments.s3db'); 
$per_page = '3'; 
$result = $db->query("SELECT id FROM com "); 
$rows = $result ->fetchAll(); 
$total_records = count($rows); 
$pages = ceil($total_records/$per_page); 
$page = (isset ($_GET['page'])) ? (int) $_GET['page'] : 1 ; 
$start = ($page - 1) * $per_page; 
$query = $db->query("SELECT * FROM com LIMIT $start , $per_page"); 
while($row = $query->fetch(PDO::FETCH_ASSOC)){ 
echo '<br>' . $row['id'] . '<br>' . $row['name'] . '<br>' . $row['email'] . '<br>'; 
} ?> 
<br><br> 
<?php 
if ($pages >= 1 && $page <= $pages){ 
//if ($page>1 && $page <= $pages){$previous=($page -1); echo '<a href="?page=' .$previous. '">Previous</a>';} 
for($x=1; $x<=$pages; $x++){ echo ($x == $page) ? ' <strong><a href="?page='.$x.'">'.$x.'</a></strong> ' : ' <a href="?page='.$x.'">'.$x.'</a> ';} 
//if ($page>1 && $page <= $pages){ $next=($page+1) ; echo '<a href="?page=' .$next. '">Next</a>';} 
} 
####################### Close Database ####################### 
$db = NULL; 
} 
catch(PDOException $e) 
{ 
print 'Exception : '.$e->getMessage(); 
} 
?> 
+0

使用PEAR的尋呼機類。 – ceejayoz

回答

0

首先不要在第一個查詢中選擇'id'的所有記錄。輕鬆選擇COUNT(id)。在結果獲得日子會把你總行數:

SELECT COUNT(id FROM) com 


第二次通知 - 格式化你的代碼。使其更具可讀性。