Новостная лента на PHP [Часть 2]

01.03.2008 от WindOfHeart

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

Итак, приступим к выполнению второй части нашего проекта!

1. Добавим новое поле и назовем его date, сделать это можно при помощи все того же phpMyAdmin.

Листинг:

ALTER TABLE `news` ADD `date` DATETIME NOT NULL ;

Данный код написан на языке SQL. Каждый PHP программист должен хотя бы немного знать его, чтобы писать свои скрипты. В интернете вы сможете найти множество учебников по этой теме.

Здесь мы добавляем в конец таблицы аоле date типа DATETIME.

2. Модернизируем наш шаблон

Листинг template.php:

<table width=”400″ border=”0″ cellpadding=”0″ cellspacing=”1″ bgcolor=”#CCCCCC”>

<tr>

<td bgcolor=”#FFFFFF”><b>.: <?php echo”$f[title]”; ?></b></td>

<td bgcolor=”#FFFFFF”><?php echo”$f[date]”; ?></td>

</tr>

<tr>

<td bgcolor=”#FFFFFF”><?php echo”$f[text]”; ?></td>

</tr>

</table>

Запустим наш скрипт. Теперь на том месте, где должна быть дата и время публикации высвечивается 0000-00-00 00:00:00, это потому, что раньше, при публикации новости мы не указывали ни даты, ни времени. Настало время это исправить!

3. Отредактируем файл add.php

Нам нужно получить настоящую дату и время. Делаем это при помощи функции date. В скобках указывается формат.

$date=date(”Y-m-d H:i:s”);

В строке формата распознаются следующие символы:

  • a - “am” или “pm”
  • A - “AM” или “PM”
  • B - время Swatch Internet
  • d - день (число) месяца, 2 цифры с ведущим нулём, если необходимо; т. е. от “01″ до “31″
  • D - день недели, буквенный, 3 буквы; например, “Fri”
  • F - месяц, буквенный, long; например, “January”
  • g - час, 12-часовой формат без ведущих нулей; т.е. от “1″ до “12″
  • G - час, 24-часовой формат без ведущих нулей; т.е. от “0″ до “23″
  • h - час, 12-часовой формат; т.е. от “01″ до “12″
  • H - час, 24-часовой формат; т.е. от “00″ до “23″
  • i - минуты; т.е. от “00″ до “59″
  • I (заглавная i) - “1″, если Daylight Savings Time, “0″ - в противном случае.
  • j - день (число) месяца без ведущих нулей; т.е. от “1″ до “31″
  • l (’L’ в нижнем регистре) - день недели, буквенный, long; например, “Friday”
  • L - boolean, указывающее, високосный ли год; т.е. “0″ или “1″
  • m - месяц; т.е. от “01″ до “12″
  • M - месяц, буквенный, 3 буквы; например, “Jan”
  • n - месяц без ведущих нулей; т.е. от “1″ до “12″
  • O - Разница с временем по Гринвичу, в часах; например, “+0200″
  • r - RFC 822 формат даты; например, “Thu, 21 Dec 2000 16:01:07 +0200″ (введён в PHP 4.0.4)
  • s - секунды; т.е. от “00″ до “59″
  • S - простой английский суффикс для дня (числа) месяца, 2 символа; т.е. “st”, “nd”, “rd” или “th”
  • t - количество дней в данном месяце; т.е. от “28″ до “31″
  • T - установка Timezone/Часовой пояс на данной машине; например, “EST” или “MDT”
  • U - секунды эпохи Unix Epoch (начиная с January 1 1970 00:00:00 GMT)
  • w - день недели, числовой, т.е. от “0″ (Sunday) до “6″ (Saturday)
  • W - ISO-8601 номер недели в году, недели начинаются с понедельника/Monday (введено в PHP 4.1.0)
  • Y - год, 4 цифры; например, “1999″
  • y - год, 2 цифры; например, “99″
  • z - день года; т.е. от “0″ до “365″
  • Z - смещение часового пояса, в секундах (т.е. от “-43200″ до “43200″). Смещение часовых поясов к западу от UTC всегда отрицательное, а для поясов в востоку от UTC - всегда положительное.

Теперь отредактируем запрос на добавление новости в базу данных.

$query=mysql_query (”

INSERT INTO `news` (`id`, `title`, `text`,`date`) VALUES (”, ‘$title’, ‘$text’,'$date’);

“);

Листинг файла add.php:

<form name=”form1″ method=”post” action=”add.php”>

<label>

<input name=”title” type=”text” id=”title”>

</label>

<p>

<label>

<textarea name=”text” id=”text”></textarea>

</label>

</p>

<p>

<label>

<input type=”submit” name=”Submit” value=”Submit”>

</label>

</p>

</form>

<?php

include ‘config.php’; //Подключаем конфигурационный файл

if(!mysql_connect($mysql_server, $mysql_user, $mysql_pass))

{

echo “<h1>MySQL server error: CAN’T CONNECT TO SERVER</h1>”;

exit;

}

mysql_select_db($dbname) or die (”Can’t select database”);

if ((!empty($title)) and (!empty($text))) {

$date=date(”Y-m-d H:i:s”);

$query=mysql_query (”

INSERT INTO `news` (`id`, `title`, `text`,`date`) VALUES (”, ‘$title’, ‘$text’,'$date’);

“);

echo mysql_error();

if (mysql_errno()==0) echo “Новость успешно добавлена! “;

}

?>

Давайте добавим очередную новость и посмотрим, как все работает!

У некоторых может возникнуть следующая проблема:

newslent_2_1.gif

Длинный заголовок обрезается, и вместо “Канал Discovery будет доступен на мобильных телефонах“, скрипт выводит “Канал Discovery будет доступен на мобильных телеф&#“. Вы скажете, почему тогда текст выводится полностью?

Потому, что к полю title мы указали тип varchar(255). Но, скажете вы, данный заголовок и близко не превышает заданую длинну, и что это еще за странные символы на конце?

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

Чтобы каждый раз не менять кодировку, давайте дополним наш файл add.php тегами HTML, BODY, HEAD и укажем правильную кодировку. С этим, я думаю, вы справитесь сами! А у меня получилось вот так:

newslent_2_2.gif

В следующих выпусках мы опять продолжим совершенствовать наш скрипт! Удачи в изучении PHP!

Рубрики: PHP, Начинающим |

Оставить комментарий

Заметьте: Включена проверка комментариев. Нет смысла повторно отправлять комментарий.