Непонятный foreach

Рейтинг: -1Ответов: 1Опубликовано: 20.02.2015

Есть код.

$query = 'запрос к инфе в бд';

foreach($query as $row) {
     тут html код
}

Так вот, если в базе по запросу есть инфа, то все выводит как нужно. А если нет, то не выводит код html, который внутри цикла. Изначально инфы никакой нет в бд. А выводить html должен, потому как там поля для добавления. Если в бд инфа есть, то в поля foreach выводит данные. Что делать?

Ответы

▲ 1
<header>
...
</hedaer>

<content>
<?php
if (!$query) {
   echo 'Данные отсутствуют';
} else {
  foreach($query as $row) {
     тут html код
  }
}
?>
</content>
<footer>
...
</footer>

А вообще, мешать бизнес-логику с вёрсткой является дурным тоном.

Необходимо понимание принципа MVC. Почитайте моё краткое изложение (начиная с UPDATE #2) этого паттерна.

Обновление

Тогда бы у Вас не должно было возникнуть данного вопроса. На уровне контроллера/экшена отслеживается отсутствие данных и выдаются шаблон-заглушка. Либо вариант, который я указал выше. В случае с option, то:

<select>
    <option selected>Выберите город...</option>
    <?php if ($rows): ?>
       <?php foreach($rows as $row): ?>
          <option value="<?=$row['id']?>"><?=$row['name']?></option>
       <?php endforeach; ?>
    <?php endif ?>
</select>

Данные, которые попадают в вёрстку, желательно экранировать/приводить к соответствующему типу (санитизировать). По умолчанию нужно никому не верить, даже своей БД или любому другому хранилищу данных. Подобной задачей как раз таки занимается шаблонизатор.