В этой статье я хочу рассказать о том, как можно осуществлять вывод новостей.
Начнем, как уже повелось, с постановки задачи: Необходимо создать страницу, на которой будет отображен список разделов новостей, если кликнуть по какому-либо разделу, должна открыться страница со списком новостей нужной категории. В данном списке новостей для каждой новости должно отображаться заголовок, краткое описание, автор, а также ссылка на полный текст новости.
Прежде чем перейти к написанию кода, нужно спроектировать базу данных. В базе данных мы будем хранить новости и категории новостей. Нам потребуется две таблицы, первая – category, для хранения категорий новостей, она будет состоять из двух полей – id и category_name. Тут все понятно, id – первичный ключ, а name будет служить для хранения названия категорий. Вторая таблица будет создана для новостей — news. Таблица news будет состоять из полей:
Id — первичный ключ,
id_category – id категории из таблицы category,
title — заголовок,
small_text – краткое описание,
text – полный текст новости,
author – автор новости.
Поскольку таблица news использует в своем поле id_category id из таблицы category, нам необходимо связать две таблицы ключом.
Для создания этих таблиц Вы можете воспользоваться sql-патчем. Помимо создания таблиц и связей, патч создаст несколько записей.
CREATE TABLE `category` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
CREATE TABLE `news` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`id_category` INT(10) NOT NULL,
`title` VARCHAR(255) NOT NULL,
`small_text` TEXT NOT NULL,
`text` TEXT NOT NULL,
`author` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
ALTER TABLE `news`
ADD CONSTRAINT `FK_news_category` FOREIGN KEY (`id_category`) REFERENCES `category` (`id`);
INSERT INTO `category` (`category_name`) VALUES ('category_1');
INSERT INTO `category` (`category_name`) VALUES ('category_2');
INSERT INTO `news` (`id_category`, `title`, `small_text`, `text`, `author`) VALUES (1, 'title1', 'small_text1', 'text1', 'author1');
INSERT INTO `news` (`id_category`, `title`, `small_text`, `text`, `author`) VALUES (2, 'title2', 'small_text2', 'text2', 'author2');
INSERT INTO `news` (`id_category`, `title`, `small_text`, `text`, `author`) VALUES (2, 'title3', 'small_text3', 'text3', 'author3');
Теперь приступим к написанию кода. Начнем с того что создадим файл db_connection.php. В этом файле будет содержаться код для подключения базы данных. И теперь при необходимости подключить базу данных, вместо нескольких строк кода, мы будем просто подключать один файл. А вот и код этого файла:
<?php
define("HOST", "localhost");
define("USER", "root");
define("PASSWORD", "");
define("DB_NAME", "mydb");
$db_connect = mysql_connect(HOST, USER, PASSWORD, TRUE);
mysql_selectdb(DB_NAME,$db_connect);
mysql_set_charset('utf8');
?>
Теперь давайте создадим страницу, на которой будет отображаться список категорий новостей, за эту страницу бедет отвечать скрипт index.php, а вто и его код:
<?php
include("/db_connection.php"); // подключаемся с бд
// получаем список категори
// и отсортируем по алфавиту
$sql = mysql_query("
SELECT * FROM `category`
ORDER BY `name` ASC;
") or die(mysql_error());
$rows = array();
while($r = mysql_fetch_array($sql, MYSQL_ASSOC)){
$rows[] = $r;
}
/*
* вывод списка категорий
* в списке сразу создаем ссылку на страницу,
* где будет отображаться список статей той или иной категории
*/
foreach($rows as $row){
?>
<a href="/news_list.php?cat_id=<?php echo $row['id']; ?>"><?php echo $row['name']; ?></a>
<br>
<?php }?>
Теперь давайте создадим файл news_list.php – этот файл будет отвечать за список новостей. Ниже приведен его код:
<?php
include("/db_connection.php"); // подключаемся с бд
// получаем id категории, для которой нужно вывести новости
// id передается в урле
// если в урле ни чего не передалось, то выведем новости всех категорий
// Не забадте проверять, то что передаета в запрос.
// Я делаю без проверок, чтобы не усложнять код
if(isset($_GET['cat_id'])){
$sqlQuery = "
SELECT * FROM `news`
WHERE `id_category` = ".$_GET['cat_id'].";
";
}else{
$sqlQuery = "
SELECT * FROM `news`;
";
}
// делаем запрос к бд и получаем новости
$sql = mysql_query($sqlQuery) or die(mysql_error());
$rows = array();
while($r = mysql_fetch_array($sql, MYSQL_ASSOC)){
$rows[] = $r;
}
/*
* вывод списка новостей
* в списке сразу создаем ссылку на страницу,
* где будет отображаться полная новость
*/
foreach($rows as $row){
?>
<h1><?php echo $row['title']; ?></h1>
<p><?php echo $row['small_text']; ?></p>
<h3>Author: <?php echo $row['author']; ?></h3>
<a href="/news.php? id=<?php echo $row['id']; ?>">Read more</a>
<hr/>
<?php }?>
Теперь создадим файл news.php, он будет отвечать за страницу с полным текстом новости. Вот код этого файла:
<?php
include("/db_connection.php"); // подключаемся с бд
// получаем id новости которую будем показывать
// id передается в урле
// если в урле ни чего не передалось,
// то напишем что новость не нашлась
if(isset($_GET['id'])){
$sqlQuery = "
SELECT * FROM `news`
WHERE `id` = ".$_GET['id'].";
";
// делаем запрос к бд и получаем новости
$sql = mysql_query($sqlQuery) or die(mysql_error());
$rows = array();
while($r = mysql_fetch_array($sql, MYSQL_ASSOC)){
$rows[] = $r;
}
foreach($rows as $row){
?>
<h1><?php echo $row['title']; ?></h1>
<p><?php echo $row['text']; ?></p>
<h3>Author: <?php echo $row['author']; ?></h3>
<?php
}
}else{
echo "News not found";
}
?>
Все готово. Исходники можете скачать тут.

Здравствуйте,вы можете применить постраничный вывод к этому скрипту помогие пожалуйста
Большой спасибо за этого урока ! Здорово помогли . Удаче в Вашем работе !