Вывод на страницу значений через ооп
Всех с наступающим ! Пробую себя в ООП и столкнулся с проблемой.Не получается вывести значения из массива на главную страницу.Выводятся значения в один и тот же див. Не знаю что не так делаю,быть может есть решение для этого? Я догадываюсь что нужно обернуть html разметку в цикл,но не додумываюсь как это сделать в данном случае
class TopicViewModel extends DbhClass
{
public function veiewTopic()
{
$con = $this->connect()->prepare("SELECT * FROM topics");
$con->execute();
$topicsView = $con->fetchAll(PDO::FETCH_ASSOC);
foreach ($topicsView as $key => $value) {
$valId = $value['id'];
$name_topic = $value['name_topic'];
echo "<p class='text-title'>"."$name_topic"."</p>";
}
}
}
И на главной
<a class="popup-with-zoom-anim" href="#small-dialog">
<div class="portfolio logo1" data-cat="logo">
<div class="portfolio-wrapper">
<img src="images/pic1.jpg" alt="Image 2" />
<div class="label">
<div class="label-text">
<?php
$viewTopic = new TopicViewModel();
$viewTopic->veiewTopic();
?>
<!-- <p class="text-title">Bird Document</p>-->
<span class="text-category">Logo</span>
</div>
<div class="label-bg"></div>
</div>
</div>
</div>
</a>
Ответы (1 шт):
Так проблема решается циклом не внутри div, а выводом div внутри цикла. В качестве дополнения можно исправить следующим образом вашу Модель Topic. Но лучше почитать про MVC, если вы хотите правильно выстроить логику получения и вывода данных.
class TopicViewModel extends DbhClass
{
public function getTopics()
{
$con = $this->connect()->prepare("SELECT * FROM topics");
$con->execute();
$topics = $con->fetchAll(PDO::FETCH_ASSOC);
return $topics ?? [];
}
}
И вывод исправится таким образом. Из вопроса не понятно в какой div вам выводить новый topic, так что пусть будет этот:
<?php
$topicModel = new TopicViewModel();
$topics = $topicModel->getTopics();
?>
<a class="popup-with-zoom-anim" href="#small-dialog">
<div class="portfolio logo1" data-cat="logo">
<?php foreach($topics as $topic): ?>
<div class="portfolio-wrapper">
<img src="images/pic1.jpg" alt="Image 2" />
<div class="label">
<div class="label-text">
<p class='text-title'><?= $topic['name_topic']; ?></p>
<span class="text-category">Logo</span>
</div>
<div class="label-bg"></div>
</div>
</div>
<?php endforeach; ?>
</div>
</a>