だから私は出会い系サイトへの贈り物を処理しようとしています。ギフトの最大数は9で、9つのギフトスパンを返す必要があります。9つのギフトを持っているユーザーの場合、9つすべてがデータベースから返されるか、4つがデータベースから返され、残りの5つがforループから返されます。 dbから0、forループからすべて9。mysql dbが照会され、whileループがユーザーのギフトを出力します。一方、forループは、whileループの出力に応じて、合計9つのギフトスパンが返されるようにします(これは現在正しくラップされていません)。
$i=0;
while($row = $user_gifts->fetch(PDO::FETCH_ASSOC)){
$i++;
$gift_name = $row["gift_name"];
if ($i%3==1) {
$gifts_show .= '<div>';
}
$gifts_show .= '<span>'.$gift_name.'</span>';
}
if($i<1){ //0 gifts from db, all 9 no gifts
$i=0;
for ($i = $i; $i < 9; $i++) {
if ($i%3==1) $gifts_show .= '<div>';
$gifts_show .= '<span>No Gift.</span>';
if ($i%3==0) $gifts_show .= '</div>';
}
} else { //1+ gifts from db, mix gifts with no gifts until 9 are reached
for ($i = $i; $i < 9; $i++) {
$gifts_show .= '<span>No Gift.</span>';
if ($i%3==0) $gifts_show .= '</div>';
}
}
3つのギフトごとにdivでラップする必要があります。したがって、3つのdivでラップされた9つのギフトの出力は、次のようになります。
<div>
<span>DB Gift 1</span>
<span>DB Gift 2</span>
<span>DB Gift 3</span>
</div>
<div>
<span>DB Gift 4</span>
<span>No Gift</span>
<span>No Gift</span>
</div>
<div>
<span>No Gift</span>
<span>No Gift</span>
<span>No Gift</span>
</div>
DBから出力されるギフトの数に関係なく、div内の3スパンごとに正しく3回出力してラップする方法はありますか?