Необходимо вывести с mysql статьи так, чтобы они чередовались по блокам. Чтобы через каждые 2 статьи - следующие 2 оборачивались блоком <div class="row"></div>
Вот картинка, как должно быть:
Сейчас у меня код такой:
$query = "SELECT * FROM articles limit 10";
$result = mysql_query($query);
while($r = mysql_fetch_array($result)){
echo '<div class="col-lg-6">'.$r['title'].'</div>'
}
Выводит подряд <div class="col-lg-6">Заголовок</div>, а нужно как на картинке каждые 2 статьи в блоке <div class="row"></div>.
чисто в целях обучения:
$i = 0;
echo '<div class="row">';
while ($r = mysql_fetch_array($result)) {
if ($i % 2 == 0 && $i != 0) {
echo '</div><div class="row">';
}
echo '<div class="col-lg-6">' . $r['title'] . '</div>';
$i++;
}
echo '</div>';
Очевидно, что MySQL тут не при чём. Вам надо сгруппировать данные из списка в списки по N элементов. Если вы освоите этот навык, то сможете применить его не только к этой задаче.
Допустим есть список от 1 до 10. Как его разбить на списки по 2? Может быть что-то есть в документации php? Может быть среди функций для работы с массвами (всегда полезно заглянуть в документацию, не стесняйтесь делать это).
Ого, array_chunk! Попробуем?
Наберите в консоли php -a (это интерактивный режим, где вы можете писать php-код и он будет сразу выполняться) и введите такие строки:
$list = range(1, 10);
$chunkedList = array_chunk($list, 2);
var_dump($chunkedList);
Бах! То что надо! (чтобы выйти из интерактивного режима нажмите ctrl+c или введите exit нажмите enter)
Теперь как это вывести в HTML? Очень просто -- два цикла:
<?php foreach ($chunkedList as $chunk): ?>
<div>
<?php foreach ($chunk as $item): ?>
<div><?= $item ?></div>
<?php endforeach ?>
</div>
<?php endforeach ?>
Примечание
Список строк можно получить так:
$rows = [];
while ($row = mysql_fetch_array($result)) {
$rows[] = $row;
}
Гляньте ещё про то, как генерировать html в php. Надеюсь будет полезно.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости