(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

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

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

В этой статье я хочу рассказать вам как создать на 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 строк кода, поэтому я вынес его в отдельный файл - скачав его, Вы сможете легко во всем разобраться, так как в файле присутствуют все необходимые коментарии!

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 10.08.2012 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft 365 Business Basic (corporate)
Microsoft Office 365 Профессиональный Плюс. Подписка на 1 рабочее место на 1 год
Microsoft Office 365 Бизнес. Подписка на 1 рабочее место на 1 год
Microsoft 365 Business Standard (corporate)
Microsoft 365 Apps for business (corporate)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Вопросы и ответы по MS SQL Server
Corel DRAW - от идеи до реализации
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100