0

IDに応じて製品を表示するクエリとループがあります。この場合のサブカテゴリ ID。コードは次のとおりです。

<div id="categoryproducts">

  <?php
    $productsGet = mssql_query("SELECT * FROM Products WHERE SubCatID = ".$_GET['scid']."");
    while ($echoProds = mssql_fetch_array($productsGet)) {
                            ?>
    <div class="productbox">
       <div class="productboximg">
         <a href="product.php?pid=<?php echo $echoProds['ProductID']; ?>&cid=<?php echo $_GET['cid']; ?>"><img src="<?php echo $echoProds['ProdThumb']; ?>" height="58" width="70" alt="" /></a>
       </div>
    <div class="productboxdtl">
       <h3><a href="product.php?pid=<?php echo $echoProds['ProductID']; ?>&cid=<?php echo $_GET['cid']; ?>"><?php echo $echoProds['Title']; ?></a></h3>
       <p><?php echo $echoProds['Synopsis']; ?></p>
    </div>
      <div class="productboxprc">
        Price &nbsp; <strong>&pound;<?php echo $echoProds['Price']; ?></strong>
      </div>
    <div class="productboxmore">
       <a href="product.php?pid=<?php echo $echoProds['ProductID']; ?>&cid=<?php echo $_GET['cid']; ?>"></a>
    </div>
   </div>
   <?php
    }
   ?>
   <div id="shoplistpagesbot" class="shoplistpages">
    Results Pages: 1 <a href="productlist.php">2</a> [<a href="productlist.php?scid=<?php echo $_GET['scid']; ?>&cid=<?php echo $_GET['cid']; ?>" class="a1">Next &raquo;</a>]
   </div>

ページごとに特定の数の製品を表示する方法がわかりません。ページ間で変更するためのメカニズムがあることが示されているため、特定の数の製品、たとえば 5 の後に残りが次のページに表示されるようにコーディングする必要があります。ページ。

誰でもこれを行う方法を提案できますか? または、どの機能を調べる必要があるかについて、正しい方向に私を向けてください。

あまり明確でない場合は申し訳ありませんが、私はPHPが初めてです。使用しているDBはMySQLではなくMS SQLです

4

2 に答える 2

0

使用している MSSQL のバージョンによって異なります。

私は MSSQL のユーザーではありませんが、SQL Server 2000 はこのTOPコマンドを使用し、SQL Server 2005 はこのBETWEENコマンドを使用しているようです。Google 検索では、それぞれについていくつかのチュートリアルが提供されるはずですが、ここでは 2005 バージョンを使用していると仮定します。

ページ番号 のアイテムを返す$page_number一般的なアルゴリズムは次のとおりです。

// The most common way to specify which page to display is a GET variable. There
// are others ways and if you'd prefer them, just set $page_number to get the
// number from there instead. Don't forget to filter all data from the GET array
// as a user may try to insert harmful data, such as XSS attacks.
$page_number = $_GET['page'];
$scid = $_GET['scid'];
// Calculate the range of items to display.
$min = $page_number * $items_per_page;
$max = $min + $items_per_page;
$sql = "SELECT * FROM Products WHERE SubCatID = \"{$scid}\" BETWEEN {$min} AND {$max}";

アイテムの残りの数を取得するには、アイテムの総数を返す別のデータベース クエリが必要です。

$sql = "SELECT COUNT(*) FROM Products WHERE SubCatID = \"{$scid}\"";
// Using the same $max as before as it is the number of items on the page plus
// total items on previous pages, but we'll redefine it here just in case.
$max = ($page_number * $items_per_page) + $items_per_page;
// Assume that $total_rows is the number returned from executing the count query.
$remaining_items = $total_rows - $max;

次に、他のすべてのページへのリンクを生成します。

$current_page = $_GET['page'];
$total_pages = $total_rows / $items_per_page;
if($current_page != 1) {
    $previous = $current_page - 1;
    echo "<a href=\"example.com/your/script.php?page={$previous}\" title=\"Previous Page\">Previous</a>";
}
for($i = 1; $i <= $total_pages; $i++) {
    echo "<a href=\"example.com/your/script.php?page={$i}\" title=\"Page {$i}\">{$i}</a>";
}
if($current_page != $total_pages) {
    $next = $current_page + 1;
    echo "<a href=\"example.com/your/script.php?page={$next}\" title=\"Next Page\">Next</a>";
}
于 2012-11-28T12:27:57.310 に答える
0
$pagenumber = $_GET['pagenumber'];
$recordsperpage = 30;
$first = ($pagenumber*$recordperpage)-$recordperpage;
$last = $pagenumber*$recordsperpage;
$productsGet = mysql_query("SELECT * FROM Products WHERE SubCatID = '".$_GET['scid']."' LIMIT $first,$last");

これをページの上部に配置し、リンクに GET パラメータを渡します。たとえば、browse.php?pagenumber=1;

レコードセット内の合計行を $recordsperpage 変数で割ることにより、ページ数を計算できます。

次に、単純な for ループを使用してナビゲーション リンクを出力します。

for($i = 1; $i <= $totalpages; $i++) {
echo "<a href='browse.php?pagenumber=$i'>$i</a>";
}

$totalpages は、レコードセット内の合計行を $recordsperpage 変数で割った結果です。

お役に立てれば

MS SQL の場合は次のとおりです。

SELECT TOP 10 *
FROM (SELECT TOP 20 * FROM products ORDER BY ID) as T
ORDER BY ID DESC

ここでは基本的に上位 20 レコードから上位 10 レコードを逆順に選択しています。したがって、レコードセットの 2 番目の 10 を取得します。

10 をページあたりのレコード数に置き換え、20 を上記の $last 変数に置き換えます。

これで解決することを願っています

于 2012-11-28T12:16:57.043 に答える