Как правильно вывести записи из бд с оформлением?

Привет ребята, подскажите как правильно выводить данные из бд с оформлением, а именно:
Есть код:
while ($row = mysqli_fetch_assoc($result)) 
{

      echo        "<div class='panel panel-default'>";
      echo          "<div class='panel-heading'><h4>" . $row['title'] . "</h4></div>";
      echo           "<div class='panel-body story'>";
      echo            $content[0];    
      echo             "<div class='clearfix'></div>";
      echo             "<hr>";
                                    
      echo             "<div class='row'>";
      echo             "<p class='col-xs-6 text-left'><a href='post.php?id=". $row['id'] ."'>Прочитать</a></p>";
      echo         "<p class='col-xs-6 text-right'>";
      echo		"<span class='glyphicon glyphicon-comment'> ". $row['countcomments'] ."</span>";
      echo			"</p>";
      echo			"</div>";
                                                                      
      echo           "</div>";
      echo        "</div>";
 }


Я прекрасно понимаю, что данное написание полное ***....

Думаю создать отдельный файл для этого и после этого его подключать:

while ($row = mysqli_fetch_assoc($result)) 
{
     include("Тут файл с html в котором данные подставляются");
 }


Если есть ещё варианты как это всё оформить подскажите пожалуйста
  • Вопрос задан
  • 2653 просмотра
Пригласить эксперта
Ответы на вопрос 4
0neS
@0neS
По-хорошему: использовать шаблонизаторы типа twig или smarty.
Ответ написан
reffy
@reffy
Я молодец.
<?php while ($row = mysqli_fetch_assoc($result)): ?>
    <div class='panel panel-default'>
        <div class='panel-heading'><h4><?=$row['title']?></h4></div>
        <div class='panel-body story'>
            <?=$content[0]?>
            <div class='clearfix'></div>
            <hr>
            <div class='row'>
                <p class='col-xs-6 text-left'>
                      <a href='post.php?id=<?=$row['id']?>'>Прочитать</a>
                </p>
                <p class='col-xs-6 text-right'>
                      <span class='glyphicon glyphicon-comment'><?=$row['countcomments']?></span>
                </p>
            </div>
        </div>
    </div>
<?php endwhile; ?>
Ответ написан
Комментировать
t-alexashka
@t-alexashka
Сразу пишу legacy код
А если я учусь и всё ручками пишу ?

Никто вас не ограничивает в обучении :) Ничто вам не мешает использовать профессиональный шаблонизатор (twig к примеру) и писать самому. Можете учиться прямо на нем, дописывать, дополнять, переписывать и так далее, авось когда и переплюнете его и сделаете что-то круче, но на данном этапе он вам сэкономит кучу времени. огромную кучу времени на обучение. Заодно посмотрите как он работает изнутри, и возможно какие-то идеи возьмете для своего детища.

Хорошего кодинга.
Ответ написан
Могу предложить такой вариант: у вас будет код, который будет обрабатывать данные (грубо говоря - контроллер) и шаблон, который будет вставлять готовые данные в html (это называется view).

Функция рендера такого шаблона может выглядеть так:
function render($templateName, $templateData)
{
        extract($templateData,EXTR_SKIP);
        ob_start();
        require($templateName);
        return ob_get_clean();
}


В этой функции мы с помощью extract все ключи ассоциативного массива $templateData превращаем в переменные текущей области видимости (они попадут в шаблон). Первый параметр - путь к шаблону.

Вызываться в контроллере она будет примерно так:
$templateVars = array();
$templateVars['data'] = array();
$templateVars['content'] = array(); // итд
while ($templateVars['data'][] = mysqli_fetch_assoc($result));
$html = render('templates/templ1.php',$templateVars);
echo $html;


А код шаблона будет выглядеть примерно так (тот самый файл templates/templ1.php, который мы использовали выше):
<?php for($i = 0; $i != count($data); ++$i) { $row = $data[$i]; ?>
    <div class='panel panel-default'>
        <div class='panel-heading'><h4><?=$row['title']?></h4></div>
        <div class='panel-body story'>
            <?=$content[0]?>
            <div class='clearfix'></div>
            <hr>
            <div class='row'>
                <p class='col-xs-6 text-left'>
                      <a href='post.php?id=<?=$row['id']?>'>Прочитать</a>
                </p>
                <p class='col-xs-6 text-right'>
                      <span class='glyphicon glyphicon-comment'><?=$row['countcomments']?></span>
                </p>
            </div>
        </div>
    </div>
<?php } ?>


Очень желательно ничего с данными в шаблоне не делать.
Ответ написан
Ваш ответ на вопрос

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

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