2016-11-19 6 views
2

データベース内のすべての注文を表示するページを作成しています。ページあたり10個までに制限されています。クエリの合計結果に基づいてページ数を検出する問題

それはそのために動作しますが、私は以下のコードを使用してページの最大数を取得しようとすると、今の問題は次のとおりです。

$msql = "SELECT * FROM orders"; 
$mresult = $db->query($msql); 
if(is_object($mresult) && $mresult->num_rows > 0) 
{ 
    if($mresult->num_rows > 10) 
    { 
     $maxpage = $mresult->num_rows/10 + 1; 
    } 
    else 
    { 
     $maxpage = 1; 
    } 
} 

これが以外に$のmaxpage変数を設定しません。データベースに20件以上の注文がない限り、1。

現在、データベースには11のテストオーダーがあるため、10で割ると、10を超えるオーダーがあるため、maxページを1、追加ページを+1に設定する必要があります。

私は解決策を探してウェブを精査し、空の手を挙げました。どのような考えや提案ですか?

EDIT:

追加コード表の一番下にある実際の注文は、さらにトラブルシューティングのために表示されます。

<tr> 
    <td colspan="2" align="left"><a href="orders?start=<?php if($page == 1) { echo 0; } else { echo $start - 10; } ?>&page=<?php if($page == 1) { echo 1; } else { echo $page - 1; } ?>">&lt;&lt;&lt;&lt;</a> Prev</td> 
    <td align="center">Page <?php if(isset($_GET['page'])) { echo $_GET['page'] . ' of ' . $maxpage; } else { echo '1 of 1'; } ?></td> 
    <td colspan="2" align="right">Next <a href="orders?start=<?php if($page <= $maxpage) { echo 0; } else { echo $start + 10; } ?>&page=<?php if($page < $maxpage) { echo $page + 1; } else { echo $page; } ?>">&gt;&gt;&gt;&gt;</a></td> 
</tr> 
+0

'(11月10日+ 1)' 'までPHPで2 'であります私の知る限り。私は実際にあなたのロジックに間違ったものは見ません。 –

+0

[[offset + limitを使用してmySQLクエリの結果の合計数を検索]]の可能な複製(http://stackoverflow.com/questions/5928611/find-total-number-of-results-in-mysql-query-with-offsetlimit ) – CBroe

答えて

0

あなたのコードは、罰金、問題はあなたの声明、あなたがしている文です実行されています10で割った値は括弧の中にある必要があります。最初に計算し、コードに1を加え、加算が11回、次に11/11 = 1回です。 あなたはおそらくフロア機能内にそれをラップする必要があります。

if($mresult->num_rows > 10) 
{ 
    $maxpage = (floor($mresult->num_rows/10)) + 1; 
} 
else 
{ 
    $maxpage = 1; 
} 
+0

あなたの答えを試しても、同じ問題が残っています。 注文が実際に掲載されているテーブルの一番下のナビゲーションセクションに問題があると思っています。私はオリジナルの投稿を編集してそのコードを表示しています。 – Bryan

1

以下のコードを使用してください、私はテストしました。

$query = "select * from orders"; 
$history_res = mysql_query($query); 

//count records 
$totrecords = mysql_num_rows($history_res); 
$totpages = ceil($totrecords/10); 
return $totpages; 
0

@Talhaによって提供されるコードを実装し、次の固定問題に私のナビゲーションコントロールを変更:

<tr> 
    <td colspan="2" align="left"><a href="orders?start=<?php if($page == 1) { echo 0; } else { echo $start - 10; } ?>&page=<?php if($page == 1) { echo 1; } else { echo $page - 1; } ?>">&lt;&lt;&lt;&lt;</a> Prev</td> 
    <td align="center">Page <?php echo $page . ' of ' . $maxpage; ?></td> 
    <td colspan="2" align="right">Next <a href="orders?start=<?php if($page < $maxpage) { echo $start + 10; } else { echo $start; } ?>&page=<?php if($page < $maxpage) { echo $page + 1; } else { echo $page; } ?>">&gt;&gt;&gt;&gt;</a></td> 
</tr> 
関連する問題