строка загрузки счетчика циклов php

Я видел много решений здесь, в стеке, но ни одно из них, похоже, не работает для меня, поэтому я пытаюсь написать его, основываясь на том, что делают другие.

Я могу сосчитать столбцы и начать новую строку, но проблема в том, что, поскольку я делаю это в foreach (получая данные из БД), теперь он будет помещать каждую запись из БД 4 раза -> закрывать строку; начать новую строку-> и показать вторую запись из БД 4 раза-> закрыть строку; начать новую строку-> и показывает третью запись из БД 4 раза и так далее … (мой код внизу этого поста)

Итак, прямо сейчас этот код отображает такие элементы, как:

col-md3(item1)  | col-md3(item1)  |  col-md3(item1)  | col-md3(item1)
col-md3(item2)  | col-md3(item2)  |  col-md3(item2)  | col-md3(item2)
....
....

Тем не менее, я хочу, чтобы он отображал как

col-md3(item1)  | col-md3(item2) | col-md3(item3) | col-md3(item4)
col-md3(item5)  | col-md3(item6) | col-md3(item7) | col-md3(item8)
....            |  ...           |  ....          |  ....
....

Мой код прямо сейчас:

foreach($data as $row) {
echo '<div class="row">';
for ($i=0; $i<4;$i++){
if ($i%4 == 0 && $i != 0){
echo '</div><div class="row">';
}
echo '<div class="col-md-3">';
?>
<!-- Ecommerce UI #2 -->
<div class="ecom-ui ecom-ui-two">
<div class="img-container">
<!-- Product Image -->
<a href="#"><img class="img-responsive" src="img/product/<?php echo $row[thumbimage]; ?>" alt="" /></a>
</div>
<!-- product details -->
<div class="product-details">
<!-- product title -->
<h4><a href="#"><?php echo $row[name]; ?></a> <span class="color pull-right">€<?php echo $row[price]; ?></span></h4>
<div class="clearfix"></div>
<p>Lorem Ipsum is simply dummy text of printing the printing industry.</p>
<!-- Price -->
<div>
<span class="cart"><a href="#">Add to cart</a></span>
<!-- Media icon -->
<span class="p-media pull-right">
<a href="#" class="b-tooltip" data-placement="top" title="21"><i class="fa fa-heart red"></i></a>
<a href="#" class="b-tooltip" data-placement="top" title="49"><i class="fa fa-share-alt red"></i></a>
<a href="#" class="b-tooltip" data-placement="top" title="35"><i class="fa fa-thumbs-up red"></i></a>
</span>
<div class="clearfix"></div>
</div>
</div>
</div>
<!-- Ecommerce UI #2 -->
<?php
echo'</div>';
}
echo '</div><br />';
}

0

Решение

В коде печати есть логическая ошибка. Вам нужен только один цикл, а не вложенный.
Измените свой код, как показано ниже:

<?php .....
....
$i=0;
echo '<div class="row">';
foreach($data as $row) {
echo '<div class="col-md-3">';
?>
<!-- Ecommerce UI #2 -->
<div class="ecom-ui ecom-ui-two">
<div class="img-container"><!-- Product Image -->
<a href="#"><img class="img-responsive" src="img/product/<?php echo $row[thumbimage]; ?>" alt="" /></a>
</div>
<!-- product details --><div class="product-details">
<!-- product title -->
<h4><a href="#"><?php echo $row[name]; ?></a><span class="color pull-right">€<?php echo $row[price]; ?></span></h4>
<div class="clearfix"></div>
<p>Lorem Ipsum is simply dummy text of printing the printing industry.</p>
<!-- Price --><div>
<span class="cart"><a href="#">Add to cart</a></span>
<!-- Media icon --><span class="p-media pull-right">
<a href="#" class="b-tooltip" data-placement="top" title="21"><i class="fa fa-heart red"></i></a>
<a href="#" class="b-tooltip" data-placement="top" title="49"><i class="fa fa-share-alt red"></i></a>
<a href="#" class="b-tooltip" data-placement="top" title="35"><i class="fa fa-thumbs-up red"></i></a>
</span>
<div class="clearfix"></div>
</div>
</div>
</div>
<!-- Ecommerce UI #2 -->
</div>
<?php
$i++;
if ($i%4 == 0) echo '</div><div class="row">';
} ?>
</div><br />

Логика: Необходимо перебрать все (все) строки в $data, когда цикл выполняется 4 раза, затем разбить строку (по </div>) и начать новый (по <div class="row">). Чтобы справиться с этим, запустите счетчик $i до цикла с 0 и увеличить его на 1 после каждого цикла. когда $i делится на 4 затем повторить «закрывающий ряд (div) -и-начальный-ряд (div) -код», т.е. </div><div class="row">

7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]