データベース内の製品の数を取得し、それに応じてページにリストするコードを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
ますか?