Новостная лента на 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 “Новость успешно добавлена! “;
}
?>
Давайте добавим очередную новость и посмотрим, как все работает!
У некоторых может возникнуть следующая проблема:

Длинный заголовок обрезается, и вместо “Канал Discovery будет доступен на мобильных телефонах“, скрипт выводит “Канал Discovery будет доступен на мобильных телеф&#“. Вы скажете, почему тогда текст выводится полностью?
Потому, что к полю title мы указали тип varchar(255). Но, скажете вы, данный заголовок и близко не превышает заданую длинну, и что это еще за странные символы на конце?
Все дело в кодировке. Т.к. мы изначально не указали её, браузер устанавливает стандартную. Получается, что мы добавляем текст в кириллице, а в базу данных он добавляется в западной!
Чтобы каждый раз не менять кодировку, давайте дополним наш файл add.php тегами HTML, BODY, HEAD и укажем правильную кодировку. С этим, я думаю, вы справитесь сами! А у меня получилось вот так:

В следующих выпусках мы опять продолжим совершенствовать наш скрипт! Удачи в изучении PHP!
Рубрики: PHP, Начинающим |
Оставить комментарий