0

PDO を使用して sqlite データベースでページ分割することができましたが、データベースが初めてなので、これを行うためのより良い方法または効率的な方法があるかどうか疑問に思っています。コードは次のとおりです。

<?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();
} 
?>
4

1 に答える 1

0

まず、最初のクエリで「id」を持つすべてのレコードを選択しないでください。COUNT(id)を選択すると簡単に作成できます。結果として、合計行数が得られます:

SELECT COUNT(id FROM) com


再通知 - コードをフォーマットします。読みやすくします。

于 2012-09-06T15:07:01.223 に答える