Работа с базами данных
Первое, что нужно для создания сайта - база данных, где будет храниться вся информация. Хотите иметь возможность просматривать содержимое таблиц баз данных, делать выборки, добавлять или обновлять данные? Все это можно делать с помощью встроенных функций в РНР для работы с базами данных.
Для начала работы у нас должна быть установлена база PostgreSQL или MySQL. Я рекомендую последнюю, так как она работает под Unix и Windows, более стабильна, быстра и ошибкоустойчива. Еще раз сформулируем нашу задачу: освоить присоединение к серверу базы данных, создание и исполнение SQL запросов, а также работу с ошибками. Без знания этих действий мы вряд ли сможем без проблем управляться с базой данных.
Итак, приступим. Кстати, далее по тексту я буду использовать MySQL в виду изложенных выше причин (хотя с PostgreSQL все действия похожи, надо лишь поменять префикс mysql_ на pg_).
Создадим базу данных телефонных номеров сотрудников вашей фирмы для наших тестов:
shell> mysql -u root mysql> create database basa; Query OK, 1 row affected (0.00 sec) mysql> use basa; Database changed mysql> CREATE TABLE phone ( -> id int(10) NOT NULL auto_increment, -> name varchar(32) NOT NULL, -> phone varchar(32) NOT NULL, -> PRIMARY KEY (id) -> ); Query OK, 0 rows affected (0.00 sec) mysql> exit Bye
Или используйте файл из архива (в конце статьи) basa.sql, поместите его в каталог MySQL и сделайте так:
shell> mysql -u root < basa.sql
А сейчас напишем скрипт view.php, который будет показывать данные из базы данных.
/* Замените нижеследующие переменные на свои */ $host = "localhost"; // MySQL server $user_db = "root"; // MySQL пользователь $pass_db = ""; // MySQL пароль $dbase = "basa"; // MySQL база данных $dtable = "phone"; // Таблица в базе данных
/* Соединение с сервером базы данных */ mysql_connect ($host, $user_db, $pass_db); /* Выбор базы данных */ mysql_select_db($dbase); /* Создание SQL запроса */ $sql = "SELECT id, name, phone FROM $dtable"; /* Исполнение SQL запроса */ $result = mysql_query($sql); /* Проверка количества вернувшихся строчек в результате*/ $rows = mysql_num_rows($result); /* Если нет результата или результат меньше 1, то предупредить нас об этом или вывести результат*/ if ((!$rows) || ($rows < 1)) {echo "Результатов НЕТ!!!";} else { echo 'IDИмяТелефон'; while(list($id, $name, $phone) = mysql_fetch_row($result)) { echo "30">$id166">$name98">$phone\n"; } } print "\n"; ?>
При запуске этого скрипта мы получим страничку с текстом "Результатов НЕТ!!!", так как в базе данных эти самые данные отсутствуют. Что делать? Перейти к следующему разделу и научиться добавлять данные из форм!
Передача данных из формы в базу данных
Создадим одну страничку под названием forma.html с HTML формой и скрипт add.php, который будет обрабатывать данные из этой формы.
forma.html
Добавление данных в базу данных
Имя
Телефон
add.php
/* Замените нижеследующие переменные на свои */ $host = "localhost"; // MySQL server $user_db = "root"; // MySQL пользователь $pass_db = ""; // MySQL пароль $dbase = "basa"; // MySQL база данных $dtable = "phone"; // Таблица в базе данных
/* Соединение с сервером базы данных */ mysql_connect ($host, $user_db, $pass_db); /* Выбор базы данных */ mysql_select_db($dbase);
$name = $_POST["name"]; $phone = $_POST["phone"];
// Основные действия скрипта // Создание SQL запроса $sql = "INSERT INTO $dtable (name, phone) VALUES ('$name', '$phone')";
/* Исполнение SQL запроса */ $result = mysql_query($sql); // Проверка исполнения операции if(!$result) { echo "
Ошибка!
\n"; echo mysql_errno().": ".mysql_error()."
"; } else { print ''; print "Запись $name - $phone создана!"; //echo phpinfo(); } ?>
Как видите, данные из формы (поля name и phone) РНР понимает как переменные. И эти переменные очень легко можно добавить в базу данных. Теперь при просмотре странички view.phtml Вы увидите то, что собственноручно внесли.
Данные можно обрабатывать скриптом, а также как часть URL, если заменить $_POST на $_GET в теле скрипта. Например: http://localhost/add.php?name=SomeName&phone=268-3962 добавит в базу данных имя SomeName с телефоном 268-3962. Кстати, это вовсе не номер телефона моей девушки - можете не звонить!!!
Дерзайте! А в следующей статье (очень скоро!) мы продолжим наши "разборки" с РНР. |