32.9. Практическая реализация
Рассмотрим работу изученных функций на примере. Сначала создадим базу и внесем туда определенные данные, необходимые для дальнейшей работы. Для этого входим в командную строку MySQL и выполняем команды:
mysql> CREATE DATABASE mydatebase;
mysql> CREATE TABLE students
( id tinyint(4) DEFAULT '0' NOT NULL AUTO_INCREMENT,
first varchar (20), last varchar(20), address varchar(255),
position varchar (50), PRIMARY KEY (id), UNIQUE id (id) );
INSERT INTO students VALUES
(1,'Александр','Пушкин','ул Петербургская', 'Писатель');
INSERT INTO students VALUES
(2,'Игорь','Полещук','ул. Пушкина','Профорг');
INSERT INTO students VALUES
(3, 'Виталий','Ивончик','ул. Высокая','Гений группы');
В результате будет создана база данных mydatebase с таблицей students, в которую будут вставлены три записи с данными о студентах.
Теперь выведем эти данные из базы данных. Для этого создадим файл РНР, который будет содержать следующий скрипт:
<html>
<body>
<?php
$date = mysql_connect("localhost", "root"); mysql_select_db("mydatebase", $date);
$my_result = mysql_query("SELECT * FROM students", $date);
printf("Имя: %s<br>n", mysql_result($my_result, 0, "first"));
printf("Фамилия: %s<br>n", mysql_result($my_result, 0, "last"));
printf("Улица: %s<br>n", mysql_result($my_result, 0, "address"));
printf("Должность: %s<br>n", mysql_result($my_result, 0, "position"));
mysql_close($date);
?>
</body>
</html>
Данный скрипт позволяет получать данные, содержащиеся вбазе. Рассмотрим последовательность операций, выполняемых в скрипте. Прежде чем получить доступ к базе данных, необходимо произвести соединение с указанными параметрами. Для этого используется функция mysql_connect(), которая создает связь с сервером баз данных MySQL. В качестве параметров указано имя узла localhost, на котором находится база данных, имя пользователя — root, под которым мы будем с ней работать. Очень часто в качестве третьего параметра функции mysql_connect() задают пароль соединения. В нашем случае он не был указан.
В результате выполнения данной функции получим некое значение, которое будет присвоено переменной $date. Эту переменную называют идентификатором соединения. С учетом полученного значения можно сделать вывод о результате соединения с сервером MySQL.
Функция mysql_select_dbl() позволяет выбирать базу данных, с которой необходимо осуществить работу, в частности получить данные и вывести в браузер. В качестве параметров указываем само имя необходимой базы данных и идентификатор соединения, установленный при помощи предыдущей функции.
В результате выполнения функции mysql_select_db() получаем значение true или false. Если соединение с базой данных прошло успешно — true, если нет — false. Чтобы наша программа-страница работала лучше, можно проанализировать возвращаемое значение, и если оно будет false, вывести сообщение об ошибке.
После того как все необходимые операции соединения с базой данных выполнены, можно получить необходимые данные. Для этого служит функция mysql_query(). В качестве первого параметра передаем текст запроса, а в качестве второго — идентификатор, полученный от выполнения функции mysql_connect().
Результаты выполнения функции mysql_query() — записи, удовлетворяющие нашему запросу — помещаем в переменную $my_result.
И наконец, с помощью функции mysql_result() извлекаем из результатов выполнения нашего запроса (т. е. переменной Smy_result), первый ряд-запись (который имеет порядковый номер 0), и значение определенного поля (по его имени). Перебирая друг задругом записи от 0 до 2, извлечем все записи, которые хранятся в нашей маленькой базе данных.
Вот так легко можно работать с базой данных в РНР.
После того как мы научились извлекать данные из базы, попробуем осуществить противоположную операцию, т. е. внести данные в имеющуюся базу данных. Решая эту задачу в РНР, у вас не возникнет ни малейшей проблемы. Для этого создадим простую форму:
<html>
<body>
<form method="post" action="<?php echo $PHP_SELF?>">
Имя: <input type = "Text" name = "first"><br>
Фамилия: <input type = "Text" name = "last"><br>
Улица: <input type = "Text" name = "address"><br>
Должность: cinput type ="Text" name = "position"><br>
<input type = "Submit" name = "submit" value="Ввод информации">
</form>
<body>
<html>
Обратите внимание, мы опять используем переменную SPHP_SELF. Как уже говорилось, PHP-код можно как угодно включать в обычный HTML. Также обратите
внимание, что название каждого элемента формй совпадает с названием поля в базе данных. Это не обязательно, но очень удобно, чтобы в дальнейшем не запутаться в том, какая переменная какому полю в базе данных соответствует.
Помимо этого мы присвоили имя кнопке «Submit». Это сделано, чтобы в коде затем проверить, есть ли переменная $suhmit. Таким образом, когда страница будет вызываться, можно узнать, вызывается ли она в первый или во второй раз.
Следует еще раз отметить, что вовсе не обязательно писать код так, чтобы страница снова и снова вызывала саму себя. Программу можно разделить на две, три и более страниц, если угодно. Но чаще бывает удобнее, когда вся программа находится в одном файле.
Теперь введем данным в базу:
<html>
<body>
if (submit) {
$date = mysql_connect ("localhost", "root");
mysql_select_db("mydatebase", $date);
$sql = "INSERT INTO students (first, last, address, position) VALUES
('$first', '$last', '$address', '$position')";
$result = mysql_query($sql);
echo "Спасибо! Ваша информация введенаn";
}
else {
?>
<form method="post" action="<?php echo $PHP_SELF?>">
Имя: <input type = "Text" name = "first"><br>
Фамилия: <input type = "Text" name = "last"><br>
Улица: <input type = "Text" name = "address"><br>
Должность: <input type = "Text" name = "position"><br>
<input type = "Submit" name = "submit" value = "Ввод информации">
</form>
<?php
}
?>
</body>
</html>