
- •Хранение и получение данных из файлов и базы данных mysql с помощью языка рнр методические указания
- •Содержание
- •Цель работы
- •1 Общие положения
- •1.1 Сохранение данных с целью дальнейшего использования
- •1.2 Основные операции с файлами
- •Создание файла
- •Resource fopen ( имя_файла, тип_доступа [, use_include_path])
- •Закрытие соединения с файлом
- •Fclose (указатель на файл)
- •Запись данных в файл
- •Int fwrite ( указатель на файл, строка [, длина])
- •Чтение данных из файла
- •Int readfile ( имя_файла [, use_include_path])
- •Array file ( имя_файла [, use_include_path])
- •Проверка существования файла
- •Bool is_readable (имя файла)
- •Удаление файла
- •Bool unlink (имя_файла)
- •1.3 Работа с базой данных MySql
- •1.4 Язык sql
- •Имя_столбца тип [not null] [default значение_по_умолчанию] [auto_increment] [primary key]
- •Drop table имя_таблицы [, имя_таблицы, ...]
- •Insert into имя_таблицы [(имя_столбца,...)] values (выражение,...);
- •Insert into имя_таблицы [(имя_столбца,...)] select . . .
- •1.5 Взаимодействие php и MySql
- •Логическое mysql_select_db (строка database_name)
- •Ресурс mysql_list_fields(строка database_name, строка table_name [,ресурс link_identifier] )
- •Ресурс mysql_query ( строка query [, ресурс link_identifier])
- •2 Задание
- •2.1 Работа с файлами
- •2.2 Работа с массивами
- •2.3 Работа с базой данных MySql
- •3 Требования к отчету
- •4 Контрольные вопросы
2.2 Работа с массивами
Измените файл, позволяющий сотрудникам компании читать этот файл с заказами (vieworders.php) таким образом, чтобы считывание производилось в массив, и полученная информация была доступна для дальнейшего форматирования и обработки:
<html><head>
<title>Книжный магазин – Результаты заказа</title>
</head><body>
<h1> КНИЖНЫЙ МАГАЗИН </h1>
<h2> РЕЗУЛЬТАТЫ ЗАКАЗА </h2>
<?
//Чтение файла. Каждая строка становится элементом массива.
$orders= file("orders.txt");
$number_of_orders = count($orders);// подсчет числа строк в массиве
if ($number_of_orders == 0) {
echo "<p><strong> Заказ не может быть прочитан. "
."Пожалуйста, попробуйте еще раз позже.</strong></p></body></html>";
exit;
}
echo "<table border=1>\n";
echo "<tr><th bgcolor = \"#CCCCFF\">Дата заказа</td>
<th bgcolor = \"#CCCCFF\">Сказки</td>
<th bgcolor = \"#CCCCFF\">Стихи</td>
<th bgcolor = \"#CCCCFF\">Журналы</td>
<th bgcolor = \"#CCCCFF\">Сумма заказа</td>
<th bgcolor = \"#CCCCFF\">Адрес</td>
<tr>";
for ($i=0; $i<$number_of_orders; $i++) {
//азбиение каждой строки
$line = explode( "\t", $orders[$i] );
// сохраняет только числа из первых трех элементов строки
$line[1] = intval( $line[1] );
$line[2] = intval( $line[2] );
$line[3] = intval( $line[3] );
// выводит каждый заказ
echo "<tr><td>$line[0]</td>
<td align = right>$line[1]</td>
<td align = right>$line[2]</td>
<td align = right>$line[3]</td>
<td align = right>$line[4]</td>
<td>$line[5]</td>
</tr>";
}
echo "</table>";
?>
</body> </html>
Подсчитайте в конце заказа общее количество каждого из наименований продукции и общую сумму всех заказов.
2.3 Работа с базой данных MySql
Запустить визуальный интерфейс для работы с СУБД MySQL PhpMyAdmin. Создать базу данных для хранения данных по продажам в магазинах (для книжного магазина назовем БД books). Создадим в этой базе данных следующие таблицы:
Customers(CustomerID, Name, Address, City) – для хранения данных о покупателях с полями:
CcustomerID int unsigned not null auto_increment primary key - номер покупателя,
Name char (30) not null – ФИО покупателя,
Address char(40) not null – адрес покупателя,
City char (20) not null – город доставки.
Orders(OrderID, CustomerlD, Amount, Date, ISBN, Quantity) – для хранения данных о заказах с полями:
ОrderID int unsigned not null auto_increment primary key – номер заказа,
СustomerID int unsigned not null – номер покупателя,
Аmount float(6,2) – сумма заказа,
Date date not null – дата заказа
ISBN char (13) not null - код ISBN книги,
Quantity tinyint unsigned - количество экземпляров.
Books(ISBN, Author, Title, Price) – для хранения данных о книгах с полями:
ISBN char (13) not null primary key – код ISBN книги,
Author char(30) - автор,
Title char(60) – название книги,
Price float(4,2) – цена.
Для ввода новых книг создайте файл, подобный файлу newbook.html:
<html><head>
<title> Книжный магазин – Добавление книг </title>
</head>
<body>
<h1> Книжный магазин – Добавление книг </h1>
<form action="insert_book.php" method="post">
<table border=0>
<tr><td>Код ISBN</td><td><input type=text name=isbn maxlength=13 size=13><br> </td></tr>
<tr><td>Автор</td><td><input type=text name=author maxlength=30 size=30><br> </td> </tr>
<tr><td>Название</td><td> <input type=text name=title maxlength=60 size=30> <br> </td> </tr>
<tr><td>Цена</td><td><input type=text name=price maxlength=7 size=7><br> </td></tr>
<tr><td colspan=2><input type=submit value="Записать"></td></tr>
</table>
</form>
</body>
</html>
Для заполнения таблицы в БД с книгами создайте файл, подобный файлу insert_book.php:
<html><head>
<title> Книжный магазин – Результат добавления книг </title>
</head><body>
<h1> Книжный магазин – Результат добавления книг</h1>
<?
$isbn =$_REQUEST[(isbn];
$ author =$_REQUEST[author];
$ title =$_REQUEST[title];
$ price =$_REQUEST[price];
if (!$isbn || !$author || !$title || !$price) {
echo "Вы внесли не все данные для ввода.<br>"
."Пожалуйста, вернитесь и попробуйте снова.";
exit;
}
$isbn = addslashes($isbn);
$author = addslashes($author);
$title = addslashes($title);
$price = doubleval($price);
@ $db = mysql_pconnect("localhost", "root", "");
if (!$db) {
echo "Ошибка: Не могу соединится с базой данных. Пожалуйста, попробуйте еще раз позже.";
exit;
}
mysql_select_db("books");
$query = "insert into books values ('".$isbn."', '".$author."', '".$title."', '".$price."')";
$result = mysql_query($query);
if ($result)
echo mysql_affected_rows()." книг добавлено в базу.";
?>
</body></html>
Введите не менее 5 записей в таблицу. Создайте форму для запроса книг покупателем по нужной теме:
<html><head>
<title> Книжный магазин – Поисковый каталог </title>
</head><body>
<h1> Книжный магазин – Поисковый каталог </h1>
<form action="results.php" method="post">
Выдерите критерий поиска:<br>
<select name="searchtype">
<option value="author">Автор
<option value="title">Название
<option value="isbn">код ISBN
</select>
<br>
Введите строку поиска:<br>
<input name="searchterm" type=text>
<br>
<input type=submit value="Найти">
</form>
</body></html>
И файл (results.php) для вывода результатов запроса покупателю:
<html><head>
<title> Книжный магазин – Результат поиска </title>
</head>
<body>
<h1> Книжный магазин – Результат поиска </h1>
<?
if (!$searchtype || !$searchterm) {
echo "Вы не ввели условия поиска. Пожалуйста. Попробуйте снова.";
exit;
}
$searchtype = addslashes($searchtype);
$searchterm = addslashes($searchterm);
@ $db = mysql_pconnect("localhost", "root", "");
if (!$db) {
echo " Ошибка: Не могу соединится с базой данных. Пожалуйста, попробуйте еще раз позже.";
exit;
}
mysql_select_db("books");
$query = "select * from books where ".$searchtype." like '%".$searchterm."%'";
$result = mysql_query($query);
$num_results = mysql_num_rows($result);
echo "<p>Число найденных книг: ".$num_results."</p>";
for ($i=0; $i <$num_results; $i++) {
$row = mysql_fetch_array($result);
echo "<p><strong>".($i+1).". Название: ";
echo stripslashes($row["title"]);
echo "</strong><br>Автор: ";
echo stripslashes($row["author"]);
echo "<br>Код ISBN: ";
echo stripslashes($row["isbn"]);
echo "<br>Цена: ";
echo stripslashes($row["price"]);
echo "</p>";
}
?>
</body></html>
Создайте форму для ввода данных о покупателях и файл, заносящий введенные данные в таблицу Customers. Переделайте файл с выводом результата запроса покупателя так, чтобы по нажатию на кнопку «Заказать» происходила запись выбранной книги в таблицу Orders.