Привет, вывод статей из базы данных происходит с помощью одного файла article.php Вопрос: Как мне задать уникальное содержимое мета-тэгов, таких как keywords, description, а также тэга title - для каждой новой статьи ? Ведь это потребуется для поисковиков. Файл то один, и на всех страницах статей будет отображаться одинаковое содержимое этих тэгов. Я новичок, и всё писал по обучалкам, повторяя за учителем. Код: PHP: <!DOCTYPE html> <html lang="en"> <head> <title>тест</title> <meta charset="UTF-8"> <meta name="description" content="Короткое описание"/> <meta name="keywords" content="Ключевые слова" /> <!-- Google Fonts --> <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet"> <!-- Custom --> <link rel="stylesheet" type="text/css" href="/media/css/style.css"> <link rel="stylesheet" type="text/css" href="/media/css/ino/vipadayushiy_spisok_2.css"> </head> <body> <div id="wrapper"> <!-- HEADER - главное меню --> <?php include "/includes/header.php"; ?> <?php include "includes/navigator.php"; ?> <?php $article = mysqli_query($connection, "SELECT * FROM `articles` WHERE `id` = " . (int) $_GET['id']); if( mysqli_num_rows($article) <= 0 ) { ?> <div id="content"> <div class="container"> <div class="row"> <section class="content__left col-md-8"> <div class="block"> <h3>Статья не найдена</h3> <div class="block__content"> <div class="full-text"> Запрашиваемая статья не найдена! </div> </div> </div> </section> <section class="content__right col-md-4"> <?php include "/includes/sidebar.php"; ?> </section> </div> </div> </div> <?php } else { $art = mysqli_fetch_assoc($article); mysqli_query($connection, "UPDATE `articles` SET `views` = `views` + 1 WHERE `id` = " . (int) $art['id']); ?> <div id="content"> <div class="container"> <div class="row"> <section class="content__left col-md-8"> <div class="block"> <h3 style="font-size:20px;"><?echo $art ['title']; ?></h3> <div class="block__content"> <img src="/static/images/<?php echo $art ['image']; ?>" class="articles_image"> <br><br> <div class="full-text"> <?echo $art ['text']; ?> </div> </div> </div> <div class="block"> <a href="#comment-add-form">Добавить свой</a> <h3>Комментарии</h3> <div class="block__content"> <div class="articles articles__vertical"> <?php $comments = mysqli_query($connection, "SELECT * FROM `comments` WHERE `articles_id` = " . (int) $art['id'] . " ORDER BY `id` DESC"); if(mysqli_num_rows($comments) <= 0 ) { echo "Нет комментариев"; } while ( $comment = mysqli_fetch_assoc($comments) ) { ?> <article class="article"> <div class="article__image" style="background-image: url(https://www.gravatar.com/avatar/<?php echo md5($comment['email']); ?>?s=125);"></div> <div class="article__info"> <a href="/article.php?id=<?php echo $comment['articles_id']; ?>"><?php echo $comment['author']; ?></a> <div class="article__info__meta"></div> <div class="article__info__preview"><?php echo $comment['text']; ?></div> </div> </article> <?php } ?> </div> </div> </div> <div id="comment-add-form" class="block"> <h3>Добавить комментарий</h3> <div class="block__content"> <form class="form" method="POST" action="/article.php?id=<?php echo $art['id']; ?> #comment-add-form"> <?php if( isset($_POST['do_post']) ) { $errors = array(); if( $_POST['name'] == '' ) { $errors[] = 'Введите имя!'; } if( $_POST['nickname'] == '' ) { $errors[] = 'Введите ваш никнейм!'; } if( $_POST['email'] == '' ) { $errors[] = 'Введите Email!'; } if( $_POST['text'] == '' ) { $errors[] = 'Введите текст комментария!'; } if( empty ($errors) ) { // Добавить комментарий mysqli_query($connection, " INSERT INTO `comments` (`author`,`nickname`,`email`,`text`,`pubdate`,`articles_id`) VALUES ('".$_POST['name']."', '".$_POST['nickname']."', '".$_POST['email']."', '".$_POST['text']."', NOW(), '".$art['id']."' )"); echo '<span style="color:green; font-weight:bold; margin-bottom:10px; display:block;">Комментарий успешно добавлен!</span>'; } else { // Вывести ошибку echo '<span style="color:red; font-weight:bold; margin-bottom:10px; display:block;">'.$errors ['0'] .'</span>'; } } ?> <div class="form__group"> <div class="row"> <div class="col-md-4"> <input type="text" name="name" class="form__control" placeholder="Имя" value="<?php echo $_POST['name']; ?>"> </div> <div class="col-md-4"> <input type="text" name="nickname" class="form__control" placeholder="Никнейм" value="<?php echo $_POST['nickname']; ?>"> </div> <div class="col-md-4"> <input type="text" name="email" class="form__control" placeholder="Email (не будет показан)" value="<?php echo $_POST['email']; ?>"> </div> </div> </div> <div class="form__group"> <textarea class="form__control" name="text" placeholder="Текст комментария ..."><?php echo $_POST['text']; ?></textarea> </div> <div class="form__group"> <input type="submit" name="do_post" value="Добавить комментарий" class="form__control"> </div> </form> </div> </div> </section> <section class="content__right col-md-4"> <?php include "/includes/sidebar.php"; ?> </section> </div> </div> </div> <?php } ?> <?php include "/includes/footer.php"; ?> </div> </body> </html>
Шедевр. Провернка на равно нулю - это я ещё понимаю, но как количество строк, которые вернулись из базы, может быть отрицательным - я не догоняю
@Анатолий1944 Добавьте в базу столбцы для метатегов, как советует @denis01 Поместите запрос статьи из базы данных выше, чем html код (не обязательно в отдельный файл, можно просто в том же файле, но выше, будет зрительное хотя бы разделение запроса в БД и html). Вообще, старайтесь не мешать html с запросами к базе (я говорю не о MVC и прочих паттернах, а именно о том, чтобы просто сначала получить всё, что нужно, потом формировать html)