За последние 24 часа нас посетили 110312 программистов и 7710 роботов. Сейчас ищут 1682 программиста ...

Вывести анонсы разных тем на одной странице.

Тема в разделе "PHP для новичков", создана пользователем iiwanc, 6 сен 2023.

Метки:
  1. iiwanc

    iiwanc Новичок

    С нами с:
    20 май 2022
    Сообщения:
    16
    Симпатии:
    0
    Здравствуйте!
    Простите, если не сюда пишу.

    Пишу на локальном сервере для себя. Начиналось все с простого HTML. Теперь понемногу изучаю PHP, стараюсь сделать что-то вроде простого движка для своего сайта.
    Имеется роутер, отдельный файл с маршрутами вида:
    Код (Text):
    1. 'news/pogoda' => 'pogoda/index',
    Также есть модули типа:
    PHP:
    1. <?php
    2. class News
    3. {
    4.         //полный текст статьи
    5.         public static function getNewsItemById ($ssylka)
    6.         {
    7.             $ssylka = strval($ssylka);
    8.             if ($ssylka) {
    9.             $db = Db::getConnection();
    10.             $result = $db->query("SELECT * FROM news WHERE ssylka='". $ssylka ."'");
    11.             $result ->setFetchMode(PDO::FETCH_ASSOC);
    12. $newsItem = $result->fetch();
    13.             return $newsItem;
    14.             }
    15.         }
    16.                 public static function getNewsCItemById ($category)
    17.         {
    18.                         $category = strval($category);
    19.                     if ($category) {
    20.             $db = Db::getConnection();
    21.             $result = $db->query("SELECT * FROM category WHERE category='". $category ."'");
    22.             $result ->setFetchMode(PDO::FETCH_ASSOC);
    23. $newsItem = $result->fetch();
    24.             return $newsItem;
    25.             }
    26.         }
    27.         //список всех новостей
    28.         public static function getNewsList ()
    29.         {
    30.             $db = Db::getConnection();
    31.             $newsList = array();
    32.             $result = $db->query('SELECT ssylka, title, data, short_content, anonse, genre '
    33.                 . 'FROM news '
    34.                 . 'ORDER BY data DESC '
    35.                 . 'LIMIT 6 ');
    36.             while($row = $result->fetch()) {
    37.                 $newsList[] = $row;
    38.             }
    39.             return $newsList;
    40.         }
    41. }
    Не берусь судить про свой код в кашерном ключе :)
    Для меня сейчас важно понять, как это работает.
    Поставил перед собой задачу вывести анонсы новостей на двух страницах сайта.
    На каждой странице свой дизайн.
    Как вывести анонсы на двух страницах? Например на:
    /views/news/pogoda/index.php
    /views/news/index.php

    /views/news/index.php - это основная страница сайта, где будут выводиться по 3 статьи каждой темы.
    /views/news/pogoda/index.php - это раздел сайта с определенной темой.
    Сейчас в разделах сайта выводятся анонсы, но на /views/news/index.php почему-то выводятся анонсы только одной темы.

    В базе создал две таблицы, но понимаю, что здесь что-то не так. Однако не понимаю, как вывести статьи по темам в разделах сайта.
    Вывожу анонсы в /views/news/index.php:
    PHP:
    1.     <?php
    2. $i = 0;
    3. foreach ($newsList as $newsItem) :?>
    4.     <?php $i++;
    5.         if($i > 2) {
    6.             break;
    7.     }
    8.     ?>
    9.     <article class="card"><img src="../images/blue.png" alt="thumbnail" class="thumbnail">
    10.         <div class="cat-links"><a href="<?= $base_url ?>news/pogoda">Москва</a></div>
    11.         <div class="preview" id="box1">
    12.         <h2 class = "zaganon" itemprop="headline"><a href="<?= $base_url ?>news/pogoda/<?php echo $newsItem['ssylka'];?>" itemprop="mainEntityOfPage"><?php echo $newsItem['title'];?></a></h2>
    13.             <p itemprop="description"><?php echo $newsItem['anonse'];?></p>
    14.             <a href="<?= $base_url ?>news/pogoda/<?php echo $newsItem['ssylka'];?>" id="rm">продолжение</a>
    15. <meta itemprop="datePublished" datetime="<?=date("Y-m-d",strtotime($newsItem['data']))?>" content="<?=date("Y-m-d",strtotime($newsItem['data']))?>">
    16. <meta itemprop="dateModified" content="<?=date("Y-m-d",strtotime($newsItem['data']))?>">
    17.     </div>
    18.     </article>
    19. <?php endforeach;?>
    Так вывожу в разделах сайта:
    PHP:
    1. <?php foreach ($pogodaList as $pogodaItem):?>
    2. <div class = "anonsestat">
    3.     <div class = "nazvaniestata">
    4. <h2 itemprop="headline"><a href="<?= $base_url ?>news/pogoda/<?= $pogodaItem['ssylka'];?>" itemprop="mainEntityOfPage"><?= $pogodaItem['title'];?></a></h2>
    5. <p datetime="<?=date("Y-m-d",strtotime($pogodaItem['data']))?>" itemprop="datePublished"><?=date("Y-m-d",strtotime($pogodaItem['data']))?></p>
    6.     </div>
    7.     <div class = "textanonsestat">
    8. <p itemprop="description"><?= $pogodaItem['anonse'];?></p>
    9.     </div>
    10. </div>
    11. <?php endforeach;?>
    Если нужно еще что-то, то предоставлю.
    Буду благодарен советам.
    Уже неделю сижу над этим, но понять не могу :)