Вывод конкретной новости из базы данных на страницу view.php

126
20 октября 2019, 03:10

Имеются следующие файлы:
config.php (подключение к базе данных);
data.php (выборка данных);
news.php (вывод списка новостей из таблицы news)
views.php (вывод конкретной новости)

Блок с новостью в news.php выглядит следующим образом:

<section class="news-block">
    <span class="news-date"><?=gmdate("d.m.y", $news['idate']);?></span>
    <a href="view.php?id=<?=$news['id'];?>" class="news-title"><?=$news['title'];?></a>
    <p class="news announce"><?=$news['announce'];?></p>
</section>

При клике на .news-title должен осуществляться переход на страницу новости views.php, при этом в ссылку подставляется id новости из базы данных, то есть отображаемая на views.php новость определяется по id.

Как наиболее правильно реализовать вывод новости на views.php?
Заранее спасибо.

Код data.php

<?php
require_once('config.php');
$results_per_page = 5;
$table_rows = $dbConn->query( "SELECT * FROM news");
$result = $table_rows->fetchAll();
$number_of_results = count($result);
$number_of_pages = ceil($number_of_results / $results_per_page);
if (!isset($_GET['page'])) {
    $page = 1;
} else {
    $page = $_GET['page'];
}
$this_page_first_result = ($page - 1) * $results_per_page;
$stmt = $dbConn->query('SELECT * FROM news ORDER BY idate DESC LIMIT '
    . $this_page_first_result . ',' . $results_per_page);
$newsList = $stmt->fetchAll();

Код news.php

<?php require_once('data.php');
header('Content-Type: text/html; charset=utf-8');
;?>
<title>Новости</title>
<link rel='stylesheet' href='style.css'>
<div id='news-panel'>
    <h2>Новости</h2>
    <?php foreach ($newsList as $news): ?>
    <section class="news-block">
        <span class="news-date"><?=gmdate("d.m.y", $news['idate']);?></span>
        <a href="view.php?id=<?=$news['id'];?>" class="news-title"><?=$news['title'];?></a>
        <p class="news announce"><?=$news['announce'];?></p>
    </section>
    <?php endforeach; ?>
    <section class="pages">
        <h3>Страницы:</h3>
        <?php for ($page = 1; $page <= $number_of_pages; $page++): ?>
            <a class="page-number" href="news.php?page=<?=$page;?>"><?=$page;?></a>
        <?php endfor; ?>
    </section>
</div>
Answer 1

В файле view.php необходимо прописать следующее:

<?php
require_once('data.php');
header('Content-Type: text/html; charset=utf-8');
if(isset($_GET['id'])) {
    $newsId = $_GET['id'];
}
$getNews = $dbConn->query('SELECT title, content FROM news WHERE id = ' . $newsId);
$newsCont = $getNews->fetch();
?>
<title></title>
<link rel='stylesheet' href='style.css'>
<div id="news-text">
    <section class="news-full-text">
        <h2><?=$newsCont['title'];?></h2>
        <p class="news-content"><?=$newsCont['content'];?></p>
    </section>
    <div class="back-to-newslist"><a href="news.php?page=1">Все новости >></a></div>
</div>
READ ALSO
Как работать с md5

Как работать с md5

Я хочу сделать защищённый пароль с md5Я сделал шифрование на нём: md5($password)

107
Выведение значение из массива

Выведение значение из массива

Мне нужно вывести только значения из массиваНо в нем присутствуют значения и массивы

106
wp_enqueue_script не подключает js файл

wp_enqueue_script не подключает js файл

В линках показывает подключение, а на деле скрипт не работаетСо стилями все ок

91
password_verify принцип работы

password_verify принцип работы

Файл регистрации, шифрования пароля:

142