Маркетер
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
YouTube 150 Подписчики
Telegram 241 Подписчики
VK 0 Подписчиков
Маркетер
Маркетер
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
  • PHP

Система «Совет дня». Часть 1

  • 12.11.2001

Автор статьи: Головин Андрей

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

При реализации использованы: PHP v3.14 и mySQL v3.21.29.

Для реализации этой идеи нам необходима только одна таблица, которая содержит следующие поля:

Поле Тип Описание
startdate date Дата «выхода в свет»
title varchar(50) Название
text text Текст совета

Проиндексировать данную таблицу лучше всего по полю startdate, так как все выборки будут происходить именно по этому полю. Индексирование позволяет оптимизировать работу базы данных при выборках по индексному полю.

Данная таблица создается следующими инструкциями SQL:

CONNECT; # соединение с mysql на localhost
USE TEST; # выбор базы данных
# далее создание таблицы в базе TEST
CREATE TABLE tipoad (
startdate date DEFAULT '0000-00-00' NOT NULL,
title varchar(50) NOT NULL,
text text NOT NULL,
KEY startdate (startdate),
UNIQUE startdate_2 (startdate)
);

Команды эти можно ввести в утилите mysql.exe, входящей в состав дистрибутива mySQL, но я рекомендую использовать для администрирования базы mySQL пакет phpMyAdmin, который позволяет управлять базами из окна браузера в удобной форме.

Для того, чтобы начать работать с таблицей из PHP необходимо установить соединение с базой. Делается это с помощью функции mysql_connect(string [hostname] [:port] , string [username] , string [password] ). Все параметры являются необязательными. Обычно, значение параметра hostname указывает на «localhost», а имя пользователя и пароль выдаются администратором сервера. Кроме того администратор может выделить вам отдельную базу. Ее название нам понадобиться, так как следующим шагом мы должны выбрать эту базу для работы командой mysql_select_db(string database_name, int [link_identifier]). Функция mysql_connect() в случае успешного соединения возвращает целое число, которое является идентификатором соединения. именно его можно подставить в функцию mysql_select_db() в качестве параметра link_identifier. Если вы используете только одну базу на одном хосте, то вам, абсолютно не обязательно использовать этот параметр. его можно опустить.

Предположим, что вам выделена база с именем test (она, практически, всегда присутствует и не требует задания имени пользователя и пароля, но использовать ее для работы не рекомендуется). Имя пользователя: john, пароль: dark. Тогда код инициализации работы с базой данных будет выглядеть так:

if (mysql_connect("loclhost", "john", "dark")) {
if (!mysql_select_db("test")) {
echo "<B>Error selecting db!!!</B>";
exit();
}
} else {
echo "<B>Error connecting!!!</B>";
exit();
}

Здесь приведен код с использованием проверок на правильность соединения и выбора базы. Обе рассмотренные функции возвращают false в случае какой-либо ошибки. Более подробную информацию об ошибке можно получить из функции mysql_error().

Далее предположим, что у нас в таблице уже имеются какие-либо данные. Занести их можно, воспользовавшись упомянутым выше пакетом phpMyAdmin.

Работа с SQL-базами данных строится на понятии SQL-запрос (далее «запрос»). Например, чтобы получить все данные из таблицы tipoad, используется запрос SELECT * FROM tipoad. Если вы введете этот запрос в командной строке программы mysql.exe, то должны увидеть нечто похожее на:

+------------+----------------------------------+------+
| startdate | title | text |
+------------+----------------------------------+------+
| 2000-01-27 | -ЄШыш Є¤ур <PRE> т NN. | |
| 2000-01-28 | +ЄъЁ_ЄИх фюъєьхэЄр т эютюь юъэх. | |
| 2000-01-29 | -хё°ютэ_х ЇШы№ЄЁ_. | |
| 2000-01-30 | +тхЄ Їюэр т Netscape | |
| 2000-01-31 | -рьър эр ёё_ыърї т IE. | |
+------------+----------------------------------+------+
5 rows in set (0.00 sec)

Здесь я специально опустил значения поля text, так как они занимают много места. А «каша» из символов в поле title вызвана тем, что данные хранятся в кодировке Windows 1251, а вывод их происходит в программе, работающей в 866 кодовой таблице.

Для того, чтобы в скрипте получить данные, выдаваемые запросом используется две функции: mysql_query() и mysql_fetch_array(). В первую необходимо передать два параметра string query, int [link_identifier]. Второй параметр в нашем случае можно опустить, так как у нас всего одно соединение. Эта функция возвращает переменную целого типа. Эту переменную можно использовать, как индикатор об ошибке. Например так:

$result = mysql_query("SELECT * FROM tipoad");
if ($result) {
...
} else {
echo "<B>Error: ".mysql_error();
exit();
}

Далее мы должны получить данные в массиве. Это делается функцией mysql_fetch_array(). Здесь ограничимся одним параметром $result, заданным при вызове функции mysql_query():

$tip = mysql_fetch_array($result);

Этот код «достает» строку из результатов выполнения запроса и помещает данные в ассоциативный массив $tip. Т.е. для того, чтобы обратиться к полю title, можно использовать код $tip[«title»]. После этого внутренний указатель в переменной $result сдвигается на следующую строку. Если обработана последняя строка, то $tip принимает значение false. Т.е. для того, чтобы обработать все строки результата, мы можем использовать слудующий код:

while ($tip = mysql_fetch_array($result)) {
echo $tip["title"]."<BR>";
}

Но нам необходимо получить только один ряд данных. Для этого мы модифицируем запрос таким образом: SELECT * FROM tipoad WHERE startdate = NOW(). Проще всего понять это можно, переведя дословно на русский язык: выбрать значения всех полей (*) из таблицы tipoad, у которых значение startdate равно значению функции NOW(). Функция NOW() соответствует текущей дате, установленной в системе.

Теперь соберем весь код вместе:

if (mysql_connect("loclhost", "john", "dark")) {
if (!mysql_select_db("test")) {
echo "<B>Error selecting db!!!</B>";
exit();
}
} else {
echo "<B>Error connecting!!!</B>";
exit();
}
$sql = "SELECT * FROM tipoad WHERE startdate = NOW()";
$result = mysql_query(sql);
if ($result) {
...
} else {
echo "<B>Error: ".mysql_error();
exit();
}
$tip = mysql_fetch_array($result);

Теперь в массиве $tip мы имеем все поля, соответствующие совету текущего дня. И мы можем использовать их для вывода в документ. Например, так:

<H1><?php echo $tip["title"]; ?></H1>
<P><?php echo $tip["text"]; ?></P>

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

Алексей Волков

Предыдущий материал
  • Все о Photoshop

Создание скругленных углов. Способ 1.

  • 12.11.2001
  • alexvolkov
Read More
Следующий материал
  • Новости

Система «Совет дня». Часть 3.

  • 12.11.2001
  • Алексей Волков
Read More
Вас также может заинтересовать
Read More
  • Codeigniter

Создание собственного обработчика 404 ошибок в CodeIgniter

  • jokar
  • 07.10.2012
Read More
  • PHP
  • Готовые скрипты

Загрузка нескольких файлов одним браузером

  • jokar
  • 14.06.2010
Read More
  • PHP

Переход на шаблонный дизайн

  • Алексей Волков
  • 10.02.2006
Read More
  • PHP

Экстремальный стиль для PHP

  • Алексей Волков
  • 29.12.2005
Read More
  • PHP

Секреты PHP-функций для работы с массивами. Обработка данных и сортиров

  • Алексей Волков
  • 15.11.2005
Read More
  • PHP

Секреты PHP-функций для работы с массивами. Создание массивов

  • Алексей Волков
  • 31.08.2005
Read More
  • PHP

PHP: секреты файла php.ini. Часть 4

  • Алексей Волков
  • 04.08.2005
Read More
  • PHP

PHP: секреты файла php.ini. Часть 3

  • Алексей Волков
  • 29.07.2005

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

Для отправки комментария вам необходимо авторизоваться.

Свежие посты
  • Дайджест постов Сергея Людкевича
    • 12.09.24
  • Как юристы тормозят бизнес
    • 30.08.24
  • Продвижение оптовых кампаний в Яндекс Директ
    • 06.03.24
  • Cарафанное радио
    • 13.01.24
  • 5-55: История компании
    • 01.03.23
Маркетер
  • О проекте
  • Информационное спонсорство
  • Рекламным агентствам
  • Ссылки
(с) ООО "Маркетер". Официальный сайт. Маркетер: Статьи про рекламу, маркетинг, public relations, интернет

Введите ключевые слова для поиска и нажмите Enter