Вход Регистрация
Файл: backUP/php_lsn/php9.html
Строк: 81
<?php

<html>                                                                              
<
head>
<
title>PHPШаг за шагом.</title>
<
meta content="text/html; charset=Windows-1251" http-equiv=Content-Type>
</
head>
<
body text=black bgcolor=white link=blue vlink=blue alink=red>
<
font color=red><h2 align=center>Шаг 9. Первый проект началоMySQL.</h2></font>
Очень надеюсьчто обзор возможностей был не слишком утомителен.
<
p>Я думаюсейчас самое время перейти от слов к делу сделать первый небольшой скриптВозьмем для примера следующую задачуНужно сделать базу с книгамикоторые появились или скоро появятся в продажеи которые вызывают интерес.
<
p>Для этого нам понадобятсябаза (таблицы сделаем в <b>MySQL</b>), форма вводапроцедура загрузки из текстового файла (на тот случайесли ранее список книг лежал в файле у меня дело именно так и обстоит), страница для вывода с сортировкой по критериям икак дополнительный прибамбас (его сделаем в самую последнюю очередь), загрузка новостей с сайтов издательств с занесением выбранных позиций в базу.
<
p>Цель проекта простаНе упустить интересующее чтиво.
<
p>Структура таблиц будет такойТаблица описания книг <b>BOOKS</b>: 
<
dl>
<
dt><b>id int(5)</b> - уникальный <b>id autoincrement primary key</b> - сначала хотел сделать автора и название ключемрешилчто это будет неудобноесли решим добавлять ссылочные таблицы)
<
dt><b>author char(60)</b> - автор
<dt><b>namebook text(100)</b> - название книги
<dt><b>series int(2)</b> - <b>id</bсерии (если книга принадлежит серии) - для серий отдельная таблица
<dt><b>edition int(2)</b> - издание
<dt><b>year int(4)</b> - год издания
<dt><b>isbn char(20)</b> - <b>ISBN</b> (интересно20 символов хватит?)
<
dt><b>pages int(4)</b> - объем книги
<dt><b>when_create int(2)</b> - номер квартала (за точку отсчета возьмем I квартал 2000)
<
dt><b>how int(4)</b> - предположительная цена
<dt><b>status int(1)</b> - <b>id</bстатусаобязательно заказатьпосмотреть подробнее и т.п.
</
dl>
Для начала хватитПотом добавим серии книгстатусытаблицу оглавлений и обложек (в <b>blob</b>-ах), комментарии к книгам и список интернет-магазиновв которых книга была обнаружена.
<
p>Для создания таблицы нам понадобится создать базу данных в <b>MySQL</b> (назовем ее тоже <b>BOOKS</b>) и в ней уже саму таблицуНо сначала об установке <b>MySQL</b>. Я опишу установку под <b>WinNT</b> (под <b>*nix</b>-ы его надо собирать я пока это проделывать не пробовал).
<
p>Процедура эта довольно простаНадо забрать дистрибутив с <a href=http://www.mysql.com target=_blank>http://www.mysql.com</a>, раскрыть <b>zip</b>, запустить <b>setup.exe</b>. После окончания установки в каталоге <b>MySQL</b>-я будет лежать файл <b>my-example.cnf</b>. Предполагается, что его надо будет скопировать в каталог <b>c:</b> под именем <b>my.cnf</b>. Я этого не делал. Вместо этого, следуя <b>Readme</b>-файлу, я запустил <b>winmysqladmin.exe</b>, выбрал закладку "<b>my.ini Setup</b>", указал директорию, в которой живут поддиректории <b>MySQL</b>-я (у меня это <b>C:/usr/local/mysql</b>), выбрал радиобаттон в секции "<b>mysqld file</b>" <b>mysqld-nt</b> (запуск <b>MySQL</b>-сервера как службы в <b>NT</b>) и нажал на "<b>Save Modification</b>". После чего в <b>WINNT</b>-каталоге обнаружил файл <b>my.ini</b>. Все. Осталось убедиться, что в списке служб появилась служба "<b>mysql</b>", и выставить ей атрибут запуска (руками/автоматом).
<p>Итакзаходим в каталог (если выконечноне внесли эту директорию в <b>path</b>-окружение)
<
b>c:mysqlbin</b> (или тудакуды вы установили <b>MySQL</b>; далее будем полагатьчто <b>mysql</bустановлен в <b>c:mysql</b>) и запускаем <b>mysqladmin</bс параметром (краткую справку по параметрам <b>mysqladmin</b>-а я приведу в следующем шаге).
<
pre>    create &lt;имя база&gt;.</pre>
В нашем случае <pre>    create books.</pre> <b>mysqladmin</bникакой мессагой нас не порадовал,
нозайдя в <b>c:mysqldata</b> (там по умолчанию <b>mysql</bхранит базы данныхесли не 
задано противное в конфигурации сервера
), можно с чувством глубокого удовлетворения обнаружить
директорию 
<b>books</b>. Это и есть наша базаПравдадиректория пуста мы ведь не создали в базе еще
ни одной таблицы
. (Кстатиесли вы решите удалить базу пудем удаления директории -
лучше откажитесь от этой затеи. <b>Mysql</bхранит у себя информацию о существующих базах.
Для корректного удаления базы есть параметр у <b>mysqladmin</b>-а:
<
pre>
    
drop &lt;имя базы&gt;.
</
pre>
Создаем таблицуМожно зайти в <b>mysql.exe</bи создать тама можно скормить тектовый файл с командами для <b>mysql</b>-я на вход <b>exe</b>-шнику. (При заходе с локальной машины <b>mysql</bсчитаетчто пришел <b>root</bсо всеми полномочиями о пользователях и полномочиях в <b>mysql</b>-е поговорим позднее).
<
p>Итаклибозайдя в <b>mysql</b>, введите нижеследующую последовательность команд,
либо сохраните их в файле (например, <b>books.sql</b>) и скажите
<pre>
    
mysql books.sql
</pre>
А вот содержимое <b>books.sql</b>:
<
pre>
connect books;
create table books (
    
id int(5not null primary key auto_increment,
    
author char(60),
    
namebook varchar(100),
    
series int(2),
    
edition int(2),
    
year int(4),
    
isbn char(20),
    
pages int(4),
    
when_create int(2),
    
how int(4),
    
status int(1)
    );
</
pre>
Зайдя теперь в каталог <b>c:mysqldatabooks</b>, вы обнаружите целых три файла: <b>books.frm</b> (структура таблицы), <b>books.myd</b> (данныесейчас он нулевой длины - <b>insert</b>-ов ведь не было!) и <b>books.myi</b> (данные о ключах).

<
p>На последок небольшое пояснение по первой строке (полюв <b>insert</b>-еПо идеепараметр "<b>not null</b>" не нуженраз "<b>primary key</b>" говоримНо есть мнениечто лучше все же его указать (я не готов это утверждение как-либо комментировать). <b>Auto_increment</b>, соответственноприсваивает одноименный атрибут полюпозволяя при <b>insert</b>-е автоматически генерить цифру на единицу большуючем в предыдущем <b>insert</b>-е.
<
hr>
<
center><font size=2><a href=php8.html>Предыдущий Шаг</a> | <a href=php10.html>Следующий Шаг</a></font></center>
<
hr><center><font size=2>By <a href="mailto:kgp@nm.ru?SUBJECT=FromPHPByStep">Konstantin Platonov</a>.</center>
</
body>
</
html>
?>
Онлайн: 2
Реклама