Архив на категорию ‘Строительные кирпичики для сайта’

Строительные кирпичики для сайта

Суббота, Март 15th, 2008

Сергей Лосев
Домашний Компьютер
info@compulenta.ru

Вы сделали домашнюю страничку и месяц, квартал или год любовались ею на каком-нибудь бесплатном хостинге. За это время она стала удобной, нарядной, число хостов выросло до нескольких сот человек в неделю, а то и в день, — настала пора задуматься о чем-то более серьезном. Посетители требуют чаще обновлять страничку, открыть новые форумы и создать некое подобие «живых журналов», — а может, вы сами видите во всем этом необходимость. Выход очень простой: воспользоваться языком веб-программирования PHP и СУБД MySQL, с помощью которых можно все. Или почти все…

Новая жизнь сайта

Бесплатный хостинг, на котором до недавнего времени размещался ваш сайт, — это, как говорится, очень сердито. Обязательные к показу банеры портят внешний вид веб-странички, а небольшой объем доступного места не дает вам возможности реализовать все свои мечты. Средства для администрирования обычно минимальны. Так что первый шаг — переезд. Качественный и недорогой хостинг на 50–200 Мбайт найти сегодня нетрудно. Стоит это удовольствие $5–20 в месяц, причем сюда уже включена поддержка PHP и MySQL — пожалуй, главных инструментов, позволяющих добиться всего того, о чем говорилось выше. Регистрация же нового домена в зоне ru, как мы уже писали, — $20, а с учетом скидок у хостеров может доходить и до нуля.

Но! Смена хостинга — это далеко не все. Вам, возможно, придется изменить внутреннюю структуру сайта и упростить его администрирование. На эту нелегкую работенку вы потратите день, два, неделю, месяц, но зато потом… потом ваш веб-ресурс станет сказкой. Его проще поддерживать: текст и изображения будут обновляться несколькими щелчками мышки, появятся дополнительные сервисы, а вы сможете быстро подключать и отключать их. Сайт станет дружественнее не только для посетителей, но и для его хозяев. Так, для получения информации — от банальной статистики посещений до сводной информации о вкусах посетителей сайта — потребуется всего пара щелчков мышки.
Как добиться всех этих результатов? Надо, повторюсь, воспользоваться PHP и MySQL!

Первое знакомство

Как и в любом другом языке программирования, в PHP есть полный набор средств — можно вычислять значения, сравнивать величины между собой, циклически выполнять команды и т.д., — позволяющий реализовать любой алгоритм, к примеру, из знаменитого многотомного труда Д. Кнута «Искусство программирования для ЭВМ».

Хранить текстовые и числовые значения можно в переменных — каждая переменная начинается со значка $, после которого следует английские буквы, цифры и некоторые спецсимволы (например, подчеркивание «_»). Первый символ после значка $ — это буква или символ подчеркивания «_». Так, неверным считается идентификатор $1text, но правильными $_1text, $text1, $text_1. Идентификаторы (иначе имена переменных, функций) PHP чувствительны к регистру, и переменные $myvar и $myVar будут различными.

Переменными являются и передаваемые через адресную строку браузера параметры. Гуляя по Сети, обратите внимание на ссылки вида http://<сайт>/index.php?<переменная>=<значение>, с помощью которых файлу index.php передается соответствующее значение. Несколько параметров объединяются символом & (логическая операция «И»): index.php?action=view&id=10. Этот прием пригодится и при создании вашего сайта (например, о кино), так что возьмите его на вооружение.

Одними переменными, впрочем, сыт не будешь, не менее важны и другие конструкции языка. Так, оператор if (<условие>) {<часть-then>} else {<часть-else>} выполняет блоки команд в зависимости от условия. Цикл while(<условие>) {<блок команд>} исполняется, пока заданное условие истинно, — с его помощью можно перебирать записи таблицы. Для вывода значений на страничке есть инструкция print, с ее помощью выводятся значения переменных и текстовые строки (в кавычках). Пригодится и знание самого HTML — не удивляйтесь. PHP так тесно интегрирован с HTML, что вы можете чередовать теги и команды языка. Громоздкие конструкции, подобные print “
Столбец 1

$sgenre

”, будут встречаться вам довольно часто.

Постигая PHP

PHP — относительно простой, Си-подобный язык, с его помощью можно проводить вычисления, обрабатывать строки, даты и массивы, создавать, открывать и изменять файлы, обмениваться информацией с веб-формами, управлять базами данных и т.д. Доступны в нем и другие небезынтересные средства: сеансы, переменные Cookie, шифрование, безопасность и пр. Кроме того, PHP — легкорасширяемый язык. Существуют специальные модули, позволяющие работать с графическими изображениями, PDF-файлами, Flash-роликами и т.д.

Программы на PHP располагаются в файлах с расширением .php, .php3 или .phtml (использовать можно любое — какое больше понравится; что, впрочем, зависит от настроек веб-сервера). Каждый такой файл — это обыкновенный HTML-документ с «вкраплениями» PHP-команд.

Структура HTML-документа (лучше говорить — программы), надеюсь, вам хорошо известна: в начале находится заголовок , в нем описываются мета-теги, стили и JavaScript-сценарии, затем в — основной контент. PHP-код заключается в специальные теги . Так, вывести в заголовке странички текущую дату позволяет следующий код: .

Каждая инструкция PHP завершается точкой с запятой, а блоки команд помещаются в фигурные скобки {}.

Поиск в Сети можно начать с легко-запоминающейся ссылкой www.php.net. Это официальный сайт разработчиков PHP, на котором находится документация по командам и функциям языка. Многие темы сопровождаются полезными комментариями и советами посетителей сайта. Кроме того, из раздела links легко добраться и до других веб-ресурсов, посвященных PHP, MySQL и вообще программированию в Сети.

На www.alt-php-faq.org расположен огромный сборник вопросов и ответов. Там вы узнаете, как устанавливать и настраивать PHP и MySQL, как обрабатывать данные форм, как использовать стандартные и дополнительные средства языка и т.д.. Англоязычный веб-ресурс codewalkers.com рассчитан на опытных PHP-разработчиков. Хотя раздел Tutorials этого сайта с материалами о поиске, проверке вводимых данных и создании специальных модулей, к примеру для crontab (исполнение программы по расписанию), будет полезен и начинающим.

В русскоязычной части Сети число сайтов, посвященных PHP, невелико. Стоит обратить внимание на сайты www.phpru.net и www.phpclub. net, где есть множество примеров, статей и готовых программ. Впрочем, несмотря на обилие документации в Сети, вопросов о веб-программировании не становится меньше. На некоторые из них вы, возможно, найдете ответы в этой статье, но начнем мы знакомство с PHP с того необходимого минимума, что понадобится нам для создания программ.

БД — это просто

Настала пора поговорить о базах данных. Вместе с положенными мегабайтами на платном хостинге вы получаете в свое распоряжение и БД. Ее имя обычно совпадает с именем домена, и если сайт называется mycoolsite.ru, то база данных — mycoolsite. Некоторые хостеры, впрочем, позволяют менять это имя или создавать несколько баз данных, но обо всех этих тонкостях лучше узнать из раздела техподдержки.

База данных состоит из нескольких таблиц, где хранится вся информация: текст, числа, даты, строки и двоичные данные. Однако что такое таблицы? Работая с документами Microsoft Office, вы, думаю, не раз сталкивались с таблицами Excel, а возможно, и с таблицами Access. Таблицы MySQL — почти то же самое: те же строки (записи), те же столбцы (поля). Но если Excel допускает вольности при вводе данных (в первую строку первой колонки можно ввести текстовое значение, во вторую — дату, в третью — графическое изображение), то подобные «шалости» с MySQL недопустимы. Типы и форматы значений, которые можно хранить в каждом столбце (поле), задаются при создании таблицы. И если вы описали текстовое поле длиной 64 символа, то даже и не пытайтесь сохранить в него 200-символьную строку — часть данных будет утеряна.

Создаем таблицы

Теперь вы имеете представление о том, что такое PHP и как подключаться к БД. Хотя пока еще не созданы таблицы, каковых, например, для сайта о кино потребуется три штуки.

В таблице films находится каталог фильмов с указанием названия, режиссера, жанра, ссылки на графическое изображение обложки диска и краткой аннотации. Связанная с ней служебная таблица genres содержит список жанров. В третьей таблице — reviews — тексты рецензий с указанием автора и даты публикации.

Всю информацию (несмотря на то, что пока не введено ни одного символа!) мы «раскидали» по трем таблицам.

Какие бывают запросы?

Что можно делать с таблицами? Да все, что угодно. К примеру, отбирать, сортировать и группировать записи, изменять, удалять или добавлять табличные данные.

Начнем с выборки — команды select. В самом простом ее варианте через запятую указываются необходимые поля. Значок «*» (звездочка) означает, что в итоговую выборку попадают все поля.

Оператор where ограничивает выборку определенными условиями, которые задаются, в общем-то, по тем же правилам, что и условия в команде if: поля можно сравнивать, а в сложных запросах непременно присутствует операции and (И), or (ИЛИ). Так, чтобы получить список фильмов Спилберга из коллекции, надо выполнить запрос select * from films where director=”Спилберг”. Для сортировки по названию фильма (поле title) к запросу добавляется инструкция order: select * from films where director = “Спилберг” order by title. Сортировать строки таблицы в обратном порядке позволяет опция desc: select * from films where director = “Спилберг” order by title desc. Замечу, при расстановке табличных строк в обратном порядке опцию desc надо задавать для каждого поля в отдельности:

…order by pdate desc, title desc, duration desc.

В завершении небольшой совет: стремитесь к простоте и компактности кода. Разделяйте PHP-файлы на модули, объединяя их командой include. Каждый такой модуль отвечает за свою задачу: вывод банеров, меню, новостей, списка фильмов, списка рецензий и т.п. Если нужно что-то изменить, скажем, количество отображаемых новостей или последовательность «блоков» на главной странице, достаточно внести изменения в один-два файла. В общем, делайте все, чтобы упростить себе работу и снизить шанс на ошибку.

За «общение» PHP с MySQL отвечают несколько функций, позволяющих установить соединение, выбрать базу данных, исполнить SQL-запрос (SQL — язык структурированных запросов) и получить результат. Хотя прежде нужно инициализировать переменные $host (хост-узел), $dbname(имя базы данных), $user (имя пользователя или логин) и $password (пароль доступа). Замечу, эту информацию предоставляет вам хостинг-провайдер.
$result = mysql_connect($host, $user, $password) or die(“Could not connect : “ . mysql_error());
$result = mysql_select_db($dbname) or die(“Could not select database”);
// создаем запрос и передаем его MySQL
$query = “select * from mytable”;
$result = mysql_query($query) or die(“Query failed : “ . mysql_error());
// теперь анализируем результаты…
// …число записей в таблице
$numrows = mysql_num_rows($result);
// …строка таблицы
$line = mysql_fetch_array($result, MYSQL_ASSOC);
Обратившись к конкретному полю по имени или порядковому номеру конструкцией $line[title], можно узнать значение поля. PHP не бьет тревогу, если соответствующего поля в таблице нет, — возвращается пустая строка.