Как правильно использовать цикл?

Доброго времени суток.
Есть товары, они находятся в БД MySql. Так же есть div, которые с разными классами. В них надо класть товары, которые я забираю из бд.
Как мне организовать цикл, чтобы каждый товар попадал в эти div. Вот что примерно имею ввиду:
$result = mysql_query("SELECT * FROM `catalog` WHERE `type`='$_GET[type]' ORDER BY `id` DESC"); 
$res = array();
// знаю, что $_GET нужно обрабатывать, это просто пример

А вот контейнеры в которые нужно поместить данные из массивы $res
<div class="item active">Товар 1</div>
<div class="item active big">Товар 2</div>
<div class="item active">Товар 3</div>
<div class="item active right">Товар 4</div>
<div class="item active margin-top-500">Товар 5</div>


Как правильно написать цикл, чтобы все товары были заполнены и не осталось лишних (пустых) div контейнеров ?
Заранее спасибо.
  • Вопрос задан
  • 149 просмотров
Пригласить эксперта
Ответы на вопрос 3
@MadridianFox
Web-программист, многостаночник
Вы не должны сразу писать энное количество элементов, а потом в них рассовывать результат. Нет.
Вы должны в цикле выводить сразу разметку, в которую вставляете данные. Сколько итераций сделает цикл - ровно столько тэгов будет выедено.
Пример ниже ужасен, но он показывает суть)
$result = mysql_query("SELECT * FROM `catalog` WHERE `type`='$_GET[type]' ORDER BY `id` DESC");
while($row = mysql_fetch_assoc($result)){
    echo "<div class=\"item active\">".$row["name"]."</div>";
}
Ответ написан
zoozag
@zoozag
Opencart
Если эти классы не зависят от данных, используйте лучше вместо них селектор nth-child в css
Ответ написан
Комментировать
rabbit418
@rabbit418
23 yo Designer from Ukraine
Используйте лучше PDO.

<?php
# подключаемся к базе данных  
try {
  $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
  $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}catch(PDOException $e) {
  echo "Хьюстон, у нас проблемы.";
}

# данные, которые мы вставляем  
$data = [
  'type' => $_GET['type']
];

# делаем запрос
$STH = $DBH->prepare("select * from catalog where catalog.type = :type order by catalog.id desc");
$STH->execute($data);

# устанавливаем режим выборки
$STH->setFetchMode(PDO::FETCH_ASSOC);

# выводим результат
while($row = $STH->fetch()) {
  echo "<div class=\"item active\">{$row['name']} - {$row['price']}</div>";
}
?>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы