0

データベース内の製品の数を取得し、それに応じてページにリストするコードをPHPで書いています。これが私がこれまでに持っているコードです:

            <?php 
                $numProds=10;
                if($numProds%9 == 0) {
                    $numPages = $numProds/9;
                } elseif ($numProds%9 != 0) { // true
                    $numPages = floor($numProds/9) + 1; // $numPages = 2;
                }
                for ($i = 1; $i < $numPages+1; $i++) {
            ?>
                <li id="page<?php echo $i; ?>">
                    <?php if($numProds <= 9) {
                            for ($i = 1; $i < $numProds+1; $i++) { ?>
                                <div class="product" id="prodId<?php echo $i; ?>">
                                    <div class="productImage"><img class="image" src="images/sampleImg.png" /></div>
                                    <div class="prodInfo">
                                        <h2><a href="#">Red Strawberry Keyring blabla bla bla</a></h2>
                                        <b>Price: $2.50 |</b> <a href="#">Add to cart</a>
                                    </div>
                                </div>
                    <?php
                            }
                        } else {
                            $numProds-=9;
                            for ($i = 1; $i < 10; $i++) {  ?>
                                <div class="product" id="prodId<?php echo $i; ?>">
                                    <div class="productImage"><img class="image" src="images/sampleImg.png" /></div>
                                    <div class="prodInfo">
                                        <h2><a href="#">Red Strawberry Keyring blabla bla bla</a></h2>
                                        <b>Price: $2.50 |</b> <a href="#">Add to cart</a>
                                    </div>
                                </div>
                    <?php   }
                        }?>
                </li>
                <?php } ?>

テスト値を 10 に設定し、すべてのページに 9 つの製品を含めたいと考えています。
つまり、2 ページ必要です。1 つのページには 9 つの製品があり、別のページには 1 つの製品しかありません。
まず、必要なページ数を計算し、ページを作成します (AKA the li's)。
次に、各ページに 2 つの if ステートメントがあります
。1) numProds が 9 以下の場合、ループを使用して正確な数の製品を作成します。
2) numProds が 9 より大きい (つまり 10) 場合、9 個の製品を作成し、numProds から 9 個を削除して、$numProds が 1 になるようにします。これは、2 ページ目に作成する必要がある製品の数だけです。

このコードの問題は、numProds に関係なくすべてのページに 9 個の製品が含まれているため、何かが間違っていることです。
コードを数回調べましたが、何も見つかりませんでした。

もう 1 つの問題は、各ページで<li id="page<?php echo $i; ?>">パーツが再び 0 から始まることです。
ループが原因であることはわかっていますが、私の質問は、前のループから何らかの方法でループを継続する方法はあり$iますか?

4

3 に答える 3

1

これを必要以上に複雑にしていると思います。毎回 numProds を 9 ずつ減らす代わりに、ページ間で値を渡し、それをオフセットとして使用して、既に見た製品をスキップします。

結果の最初のページでは 0 になるので、最初の 9 つの製品を表示できます。2 ページ目では 9 であるため、最初の 9 製品をスキップして次の 9 を表示します。3 ページ目では 18 などです。

于 2012-06-18T15:11:29.827 に答える