0

MySQL データベースを参照するコードがあります。次のようになります。

<div id="pagination">
    <ul class="page">
        <li class="page"><a href="<c:url value='item?${loop.count${item.id}'/>">${loop.count}</a></li>
    </ul>
</div>

for ループは次のようになります。

<c:forEach var="item" items="${itemItems}" begin="0" end="10" varStatus="loop">

これにより、ページネーションに使用する番号のリストが表示されます。私の質問はこれです。行/テーブルの合計アイテムを 10 で割った数
に変更するにはどうすればよいですか? ${loop.count}</a>現在、これはページのループでのみ表示されるアイテムをカウントしています。ループだけでなく、行内のすべてのアイテムをカウントしたいと思います。

4

1 に答える 1

0

MySQL なしで取得する行の量を決定する必要がありLIMITOFFSET

ここで 2 つのオプション:

  1. LIMIT/なしでクエリをもう一度実行します。OFFSET

  2. SQL_CALC_FOUND_ROWSクエリに追加:

    SQL_CALC_FOUND_ROWS を選択 ...

http://dev.mysql.com/doc/refman/5.5/en/information-functions.html#function_found-rows

どちらの場合も、次を使用して合計行数を取得できますSELECT FOUND_ROWS() AS rows_total

どちらのオプションが速いかは、データベースの構造、クエリの複雑さ、および結果データによって異なります。時間を比べてみてください。

ページ、オフセット、制限の計算は単純な計算です

疑似コード

numPages = ceil( totalRows / rowsPerPage )
sqlLimit = rowsPerPage
sqlOffset = (currentPage-1) * rowsPerPage
于 2013-03-15T07:15:30.957 に答える