Создаем раздел «Новости»

В этой статье я хочу рассказать вам как создать на php и базе данных MySQL создать раздел «Новости» для своего сайта. В написании раздела Новостей нет ничего сложного – тут главное, как и в любом другом проекте написать ТЗ.

 

Итак: определимся с тем, что мы хотим от раздела Новостей.

 

Раздел «Новости» должен находиться в папке «/news/» относительно корневого каталога сайта

Новости должны характеризоваться следующими полями: «Дата», «Тема», «Краткое содержание», «Новость», «Автористочник»

Новости должны иметь клиентскую часть. Клиентская часть должна выводить новости в порядке обратном их добавлению (последний-первый) и разбивать их на страницы по 20 новостей на страницу со ссылкой на предыдущую страницу, следующую страницу и 10 страниц вперед. При клике на конкретную новость должна выводиться новость полностью. В случае, если к новости была добавлена фотография, то при просмотре новости должна выводиться фотография. Фотография должна в случае необходимости подгоняться под ширину 400 пикселей (если она большей ширины).

У Новостей должен быть модуль администрирования – модуль администрирования должен позволять администратору авторизоваться в системе вводя логин и пароль администратора. Так же раздел администрирования должен предоставлять возможность администратору добавлять новости либо изменятьудалять уже имеющиеся. Должна быть возможность добавлять к новости фотографию. Должно быть разбитие имеющихся новостей на страницы в соответствии с датой их добавления (последний-первый).

В общих чертах мы определились с техническим заданием. Теперь давайте спроектируем архитектуру модуля. Предлагаю слудующую:

 

/inc/vars.php – файл в котором объявлены основные переменные (константы) – они общие для всего сайта

/inc/template.inc – шаблонизатор

/news/photos/ - папка с фотографиями новостей

/news/template/template.html – дизайн шаблон

/news/install.php – файл инсталлирующий базу данных 

/news/index.php – клиентская часть модуля новостей

/news/administrating.php – «админская» часть модуля новостей

 

Думаю эта модель оптимально подходит под определение «модульность» сайта. К каждому модулю «инклюдятся» базовые файлы /inc/vars.php и /inc/template.inc. Шаблонизатор тут я не выкладываю – так как вы можете использовать любой шаблонизатор. Дизайн-шаблон так же не описывается – так как это может быть просто пустой файл, в котором присутствует код {MAIN} – контент и {TITLE} – заголовок страницы.

 

Приступим к написанию модуля. Для этого определим базовые переменные

 

Файл базовых переменных и функций /inc/vars.php

 

<?

 

// переменные базы данных

 

$DBAdress = "127.0.0.1";

$userName = "user";

$userPass = "pass";

$DBName = "my_db";

 

// логин, пароль администратора

 

$LOGIN = "admin";

$PASSWD = "111";

 

 

/**********************************************************

* AUTH functions – функции авторизации (для модуля администрирования)

* открывает сессию и помещает ее ИД в куку

* приравнивает переменной $auth значение «1» и помещает ее в сессию

**********************************************************/

 

function setAuth(){

 

$auth = 1;

 

@session_start();

session_register("auth");

 

global $HTTP_SESSION_VARS;

 

$HTTP_SESSION_VARS["auth"] = 1;

 

$PHPSESSID = session_id();

@setcookie("PHPSESSID" , "$PHPSESSID" , time() + 3600*24*3);

if(session_is_registered("auth")){

return $auth;

}

return 0;

 

}

 

/*

function testAuth() – проверяет была ли произведена авторизация в системе и возвращает булевы значения

*/

 

function testAuth(){

 

@session_start();

global $HTTP_SESSION_VARS;

 

if (session_is_registered("authPrice")){

$auth = $HTTP_SESSION_VARS["auth"];

return 1;

}else{

session_destroy(); 

return 0;

}

}

 

/*

function destroyAuth() – уничтожает авторизацию пользователя

*/

 

function destroyAuth(){

 

session_start();

session_destroy();

 

@setcookie("PHPSESSID" , "1" , time() - 60*60*24);

 

}

 

 

/********************************************************************************************************

* Function importVars(); - полезная функция, она объединяет переменыне переданные

* методами POST, GET в один массив 

*********************************************************************************************************/

 

function importVars(){

 

global $HTTP_GET_VARS;

global $HTTP_POST_VARS;

 

$EXT_VARS[0] = 0;

 

while(list($key , $value) = each($HTTP_GET_VARS)){

$EXT_VARS[$key] = $value;

}

reset($HTTP_GET_VARS);

 

while(list($key , $value) = each($HTTP_POST_VARS)){

$EXT_VARS[$key] = $value;

}

reset($HTTP_POST_VARS);

 

return $EXT_VARS;

 

}

 

?>

 

 

Что ж, базовые переменные и функции, которые к слову нам пригодятся и для других модулей нашего сайта мы определили. Теперь напишем инсталляционный скрипт (который уже будет использовать наш «файл переменных»).

 

Инсталляционный файл /news/install.php

 

Этот файл создает в базе данных нужную нам таблицу. Файл крайне прост, поэтому не будем останавливаться на его описании подробно – в нем всего лишь присоединяется файл переменных, затем осуществляется установка соединения с базой данных, затем создается нужная нам таблица, и потом закрывается соединение с БД – вот и все:

 

<?

 

/**************************************************

* Include files

**************************************************/

 

include "../inc/vars.php";

 

 

/**************************************************

* MySQL connect

**************************************************/

 

$pdb = mysql_connect($DBAdress , $userName , $userPass);

mysql_select_db($DBName , $pdb) or die("Can't select DB");

if(!$pdb){

echo "connect is not sucsesfull!n";

}

 

 

/**************************************************

* Create Table tblNews

**************************************************/

 

$result = mysql_query("CREATE TABLE tblNews

( id integer PRIMARY KEY AUTO_INCREMENT,

date char(15),

subject char(255),

shortCont TEXT,

news TEXT,

photo char(255),

author char(255)

);");

 

mysql_close($pdb);

 

?>

 

Администрирование модуля Новостей /news/administrating.php

 

В разделе администратора должна быть проверка логина и пароля администратора (авторизация) а так же возможность добавлять, исправлять или удалять новости и добавлять к ним фотографии. Рассмотрим это модуль:

 

adm.zip - размер административного файла более 700 строк кода, поэтому я вынес его в отдельный файл - скачав его, Вы сможете легко во всем разобраться, так как в файле присутствуют все необходимые коментарии!

 

С самым сложным, мы разобрались – мы создали модуль администрирования новостей для нашего сайта. Теперь добавим парочку тройку новостей и перейдем к написанию клиентской части!

 

Клиентская часть /news/index.php

 

Наша клиентская часть должна выводить список всех новостей, разбивая его на страницы, в соответствии с датой новости, а так же в случае выбора конкретной новости – показывать ее целиком с фотографией. Что ж, приступим:

 

inxex.zip - размер клиентской чайсти более 400 строк кода, поэтому я вынес его в отдельный файл - скачав его, Вы сможете легко во всем разобраться, так как в файле присутствуют все необходимые коментарии!

 

Заключение

 

Вот собственно и все! Полторы тысячи строк РНР-кода и профессиональный раздел новостей готов! Почему я называю его профессиональным? Последние 7 лет мое основное занятие – разработка и создание сайтов в Новосибирске, этот модуль новостей был создан 5 лет назад и установлен за это время более чем на 50 сайтов – жалоб не было!




Рекомендуем почитать


Комментарии

Николай

12.05.2017 - 16:58:44

и где эти файлы?

Маруан

23.12.2018 - 11:28:20

В Караганде!

Милана

04.01.2019 - 15:57:25

У меня тоже вопрос. Где скачать файлы?

Добавить комментарий


Ваше имя:


Комментарий:


Введите: Картинка