dbからデータを取得するループを作成する必要があります...そしてデータを出力しますが、<li>
5つごとli
にul
...
どうすればこのループを実行できますか?
あなたはとでそれを行うことができNoRewindIterator
ますLimitIterator
。結果セットを表すデータベースクライアントライブラリから取得したイテレータをにラップするだけで、イテレータ全体が無効になるまで、NoRewindIterator
それぞれ5回の反復を実行できます。LimitIterator
$it = new NoRewindIterator($result);
$it->getInnerIterator()->rewind(); # Rewind once
while ($it->valid())
{
echo '<ul>';
foreach (new LimitIterator($it, 0, 5) as $row)
{
echo '<li>', .... , '</li>' ;
}
echo '</ul>';
}
編集:自動的に巻き戻されない一部のイテレーターにデフォルトで必要なため、操作を追加しましたrewind()
。すべての詳細については、私が作成した参照質問を参照してください:NoRewindIteratorはいつ内側のイテレーターを巻き戻しますか?
modulo
演算子を使ってみませんか?
$counter = 0;
echo '<ul>';
while ($row = fetchRow())
{
$counter++;
if ($counter % 5 == 0) echo '</ul><ul>';
echo '<li>' . $row['field'] . '</li>';
}
echo '</ul>';
別のカウンターを使用します。
$counter=0;
echo '<ul>';
while($record_in_database=fetch_it_somehow){
if($counter==5){
$counter=0;
echo '</ul><ul>'; // *
}
echo '<li>'.$record_in_database->retrieve_data_somehow().'</li>';
++$counter;
} // end while
echo '</ul>'; // you must close it as you've opened in * marked line