Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
 

  Раздел: Компьютерная документация -> Интернет технологии -> PHP

 

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

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

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

  1. Раздел «Новости» должен находиться в папке «/news/» относительно корневого каталога сайта
  2. Новости должны характеризоваться следующими полями: «Дата», «Тема», «Краткое содержание», «Новость», «Автор\источник»
  3. Новости должны иметь клиентскую часть. Клиентская часть должна выводить новости в порядке обратном их добавлению (последний-первый) и разбивать их на страницы по 20 новостей на страницу со ссылкой на предыдущую страницу, следующую страницу и 10 страниц вперед. При клике на конкретную новость должна выводиться новость полностью. В случае, если к новости была добавлена фотография, то при просмотре новости должна выводиться фотография. Фотография должна в случае необходимости подгоняться под ширину 400 пикселей (если она большей ширины).
  4. У Новостей должен быть модуль администрирования – модуль администрирования должен позволять администратору авторизоваться в системе вводя логин и пароль администратора. Так же раздел администрирования должен предоставлять возможность администратору добавлять новости либо изменять\удалять уже имеющиеся. Должна быть возможность добавлять к новости фотографию. Должно быть разбитие имеющихся новостей на страницы в соответствии с датой их добавления (последний-первый).

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

/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 сайтов – жалоб не было!

Автор: Дмитрий Астраков
Источник: www.webscript.ru/



  Добавить закладку на материал: 


Ссылки по теме
Внутренние функции
Обработка строк в РНР
PHP и всё такое...
Пишем PHP код, устойчивый к ошибкам
Полезные скрипты на PHP
Почтовые функции в РНР
Полезные функции для работы с файловой системой

Вся документация PHP

 

Компьютерная документация от А до Я - Главная

 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
Реклама на сайте. Размещая рекламу у нас, вы получите новых посетителей, которые могут стать вашими клиентами.
 
Это интересно
 

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.
 
Rambler's Top100