Есть две страницы blog.php и comments.php, на странице blog.php заметки, а на странице comments.php комментарии к заметке и должна отображаться сама заметка, если у заметки нет комментария, то вывести об этом сообщение. Я связал две страницы по id, а как записать условие проверки, что комментарий к заметке отсутствует и вывести саму заметку по которой перешел? PHP: <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf8" /> <title>Мой блог</title> </head> <body> <?php require_once 'Connections/mysitedb.php'; include ("menu.html"); $link = mysqli_connect($hostname_mysitedb, $username_mysitedb , $password_mysitedb, $database_mysitedb) or die("Ошибка " . mysqli_error($link)); $link->set_charset("utf8"); $query ="SELECT * FROM notes ORDER BY id DESC"; $result = mysqli_query($link, $query); ?> <h1><center>Добро пожаловать!</center></h1> <?php while ($query = mysqli_fetch_array($result)){ echo $query['id'], "<br>"; ?> <a href="comments.php?query=<?php echo $query['id']; ?>"> <?php echo $query ['article'], "<br>";?></a> <?php echo $query ['created'], "<br>"; echo $query ['title'], "<br>"; } ?> </body> </html> Страница comments.php PHP: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Комментарий</title> </head> <body> <?php $query_id = $_GET['query']; require_once 'Connections/mysitedb.php'; include ("menu.html"); $link = mysqli_connect($hostname_mysitedb, $username_mysitedb , $password_mysitedb, $database_mysitedb) or die("Ошибка " . mysqli_error($link)); $link->set_charset("utf8"); $query ="SELECT * FROM comments WHERE $query_id = art_id"; $result = mysqli_query($link, $query); ?> <h1><center>Комментарии</center></h1> <?php while ($query = mysqli_fetch_array($result)){ echo $query['id'], "<br>"; ?> <a href="comments.php?query=<?php echo $query['id']; ?>"> <?php echo $query ['comment'], "<br>";?></a> <?php echo $query ['created'], "<br>"; echo $query ['author'], "<br>"; } ?> <h1><a href="editnote.php?query=<?php echo $query_id; ?>">Исправить заметку</a> <p><a href="deletenote.php?query=<?php echo $query_id; ?>">Удалить заметку</a> </body> </html>
Не можете простое ветвление состряпать? Если $count (или num_rows), выводим список, иначе «нифига нет». Ну выберите данные заметки отдельным запросом по id и выводите. Многовато косяков. Это реальный сайт? --- Добавлено --- Если реальный, лучше возьмите какой-нибудь каркас. Даже самый простой будет лучше, чем это, например гляньте мою статью Как сделать вывод списка статей? Комменты могут выводиться точно так же. Контент статьи может выбираться автоматом. Точно так же, как «Краткое пояснение к списку» статей.
Сайт реальный, но пока на стадии реализации. Получается вместо while, использовать проверку через if?
Для вывода сообщения, о котором вы спрашивали, да. Но для комментов это вовсе необязательно, поэтому можете ограничиться одним циклом. Если комментов нет, то цикл будет холостым. --- Добавлено --- Главное не дернуть при этом 404-ую и т.п., о чем я писал в этом комменте. Но вам до этого далеко.
И не вместо while, а в дополнение к while, если вы о списке комментов (процитировали всю портянку, поэтому хз, о чем вы). Для отдельной статьи до шаблона статьи вообще дело не должно доходить, если нет данных для вывода, хотя где-то в глубинах кода наверняка должен быть if, причем не один, потому что проверять нужно не только наличие затребованной записи в выборке, но и др. вещи, например результат запроса. Но вам опять-таки до этого далеко.
Проверку на наличие комментария к заметке сделал, но не выводит сообщение, что запись не комментировали... А чтобы вывести заметку на страницу comments.php мы в запросе используем id, который передали со страницы blog.php или я что-то не понимаю? PHP: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Комментарий</title> </head> <body> <?php $query_id = $_GET['query']; require_once 'Connections/mysitedb.php'; include ("menu.html"); $link = mysqli_connect($hostname_mysitedb, $username_mysitedb , $password_mysitedb, $database_mysitedb) or die("Ошибка " . mysqli_error($link)); $link->set_charset("utf8"); $query ="SELECT * FROM comments WHERE $query_id = art_id"; $result = mysqli_query($link, $query); ?> <h1><center>Комментарии</center></h1> <?php if ($result > 0) { while ($query = mysqli_fetch_array($result)){ echo $query['id'], "<br>"; ?> <a href="comments.php?query=<?php echo $query['id']; ?>"> <?php echo $query ['comment'], "<br>";?></a> <?php echo $query ['created'], "<br>"; echo $query ['author'], "<br>"; } }else {echo "Эту запись еще не комментировали";} ?> <h1><a href="editnote.php?query=<?php echo $query_id; ?>">Исправить заметку</a> <p><a href="deletenote.php?query=<?php echo $query_id; ?>">Удалить заметку</a> </body> </html>
Фигово сделали, вот и не выводит. Выше я писал, что обычно проверяют при такой проверке. Откуда берется id, дело десятое. Главное, чтобы он был и корректный. В моем примере числовые id статей в адресах не светятся вообще (вместо них используются слаги). Вам же нужно тщательно проверять id перед его использованием в запросах и т.п. Иначе могут подсунуть хз что. И в результате вместо выборки записи может быть грохнута вся таблица и т.п. Читайте про SQL-инъекции. --- Добавлено --- Демку видели к статье? Используемый каркас позволяет хранить в поле id «таблицы объектов» как числовые id, так и слаги.
P.S. Даже если бы я использовал числовые id в адресе, после выборки идентифицируемой сущности из БД я бы уже использовал поле этой сущности, например $article->id, а не параметр из адреса. Если бы мне понадобилось добавить к коду из статьи комменты, я бы использовал в запросах для их выборки $page['aid'] ($page['id'] занято под слаг).
Вот так работает. PHP: <?php $query_id = $_GET['query']; require_once 'Connections/mysitedb.php'; include ("menu.html"); $link = mysqli_connect($hostname_mysitedb, $username_mysitedb , $password_mysitedb, $database_mysitedb) or die("Ошибка " . mysqli_error($link)); $link->set_charset("utf8"); $query ="SELECT * FROM comments WHERE $query_id = art_id"; $result = mysqli_query($link, $query); ?> <h1><center>Комментарии</center></h1> <?php $row_cnt = mysqli_num_rows($result); if ($row_cnt > 0) { while ($query = mysqli_fetch_array($result)){ echo $query['id'], "<br>"; ?> <a href="comments.php?query=<?php echo $query['id']; ?>"> <?php echo $query ['comment'], "<br>";?></a> <?php echo $query ['created'], "<br>"; echo $query ['author'], "<br>"; } } else {echo "Эту запись еще не комментировали";} ?> <h1><a href="editnote.php?query=<?php echo $query_id; ?>">Исправить заметку</a> <p><a href="deletenote.php?query=<?php echo $query_id; ?>">Удалить заметку</a> </body> </html>
Послушал и получилось, спасибо за помощь! PHP: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Комментарий</title> </head> <body> <?php $query_id = $_GET['query']; require_once 'Connections/mysitedb.php'; include ("menu.html"); $link = mysqli_connect($hostname_mysitedb, $username_mysitedb , $password_mysitedb, $database_mysitedb) or die("Ошибка " . mysqli_error($link)); $link->set_charset("utf8"); $query ="SELECT * FROM comments WHERE $query_id = art_id"; $result = mysqli_query($link, $query); $querynotes = "SELECT * FROM notes WHERE $query_id = id"; $resultnotes = mysqli_query($link, $querynotes); ?> <h1><center>Комментарии</center></h1> <?php while ($querynotes = mysqli_fetch_array($resultnotes)){ echo $querynotes['id'], "<br>"; echo $querynotes['article'], "<br>"; echo $querynotes['created'], "<br>"; echo $querynotes['content'], "<br>"; } ?> <?php $row_cnt = mysqli_num_rows($result); if ($row_cnt > 0) { while ($query = mysqli_fetch_array($result)){ echo $query['id'], "<br>"; ?> <a href="comments.php?query=<?php echo $query['id']; ?>"> <?php echo $query ['comment'], "<br>";?></a> <?php echo $query ['created'], "<br>"; echo $query ['author'], "<br>"; } } else {echo "Эту запись еще не комментировали";} ?> <h1><a href="editnote.php?query=<?php echo $query_id; ?>">Исправить заметку</a> <p><a href="deletenote.php?query=<?php echo $query_id; ?>">Удалить заметку</a> </body> </html>