IZONE - http://www.izcity.com/ - бесплатный софт, вэб-сервисы, ресурсы для раскрутки, свежие номера журнала "Internet Zone".

 IZONE 


Шаблонный стиль работы с MySQL базой данных

by Arsen Kirillov

Тут можно посмотреть файл с примерами

В данной статье описаны готовые решения для работы с базой данных MySQL из php4 программы  на Windows95/98/NT4.0/2000/*nix операционных системах .

Для работы с базами данных в небольших коммерческих структурах существует довольно значительное ограничение - недостаток времени для настройки и отладки программ работающих на основе php . Для решения различного рода бухгалтерских задач и задач документооборота применяются различные интегрированные среды от Microsoft (Access97/2000) , которые дают возможность осуществить полноценную работу с базой данных, однако занимают довольно значительный объем дискового пространства и большой объем памяти, стоят больших денег и при этом не являются достаточно стабильными  . Однако , часто  незаслуженно , забывают про те преимущества , которые несет с собой применения связки из php+MySql в области работы с базами данных. А именно - быстродействие и стабильность работы программ на их основе , возможность удаленной работы с программой по интернет / интранет , небольшой объем управляющих программ , бесплатность софта и т.д.

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

Конечно использование готовых шаблонов не исключает знание php но несколько упрощает задачу управления MySQL базой данных - за счет применения повторно используемого кода.

Итак создадим нашу программу php (файл с расширением php) в коренном каталоге локального сервера (пускай это будет -http://localhost) под именем "testmy.php".

Вот примерный список "шаблонов" , которые "жизненно" необходимы для нормально работы с базой данных :

ПРОСТЕЙШИЕ ШАБЛОНЫ ДЛЯ РАБОТЫ С БАЗОЙ ДАННЫХ MYSQL под PHP

Когда необходимо

где находиться

1. Описание базы данных В любой программе на php , которая работает с базой данных MySQL- Обязательно.  во внешнем файле (tunes.php)
2. Подключения файла описания базы данных

-//-

в программе на php
3. Открытие базы данных

-//-

-//-

4. Подключение к базе данных из php программы 

-//-

-//-

5. Создание таблицы из php программы (возможны варианты управления данным процессом как из командной строки так и из самой программы) При необходимости создать таблицу для тестирования новой программы или при создании новой таблицы для базы данных

-//-

6. аналогично для удаления таблицы

-//-

-//-

7. Вставка записей в таблицу. При необходимости .

-//-

8. Вывод записей из базы данных При необходимости .

-//-

9. Закрытие базы данных Обязательно

-//-

Шаблоны с номерами 6/7 могут также (при модификации) применяться для управления базой данных а шаблон 8 может модифицировать для вывода информации в нужном формате

Для работы с примерами создадим , с помощью mysql.exe- консоли MySQL базы данных,  базу данных под именем 'ME' :

C:\mysql\bin>mysql.exe
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 79 to server version: 3.23.27-beta

Type 'help;' or '\h' for help. Type '\c' to clear the buffer

mysql> CREATE DATABASE ME;
Query OK, 1 row affected (0.05 sec)

mysql>\q
C:\mysql\bin>

Для работы с базой нам необходим шаблон ( стандартный кусок кода , который можно использовать многократно) который бы подключился к базе данных. Для осуществления этой операции удобно применить "подключаемый" файл , в котором описать все переменные необходимые для работы с базой данных.

табл1.Подключения переменных , которые описуют базу данных. (начало файла testmy.php)
<?
//Тут подключается база данных 'ME' см. файл tunes.php
require('tunes.php');
?>

В файле  tunes.php находяться декларации переменных , необходимых для работы с базой данных. Этот файл должен находиться в той же директории что и основная программа в которой мы работаем с базой данных.

табл2.Файл tunes.php
<?
//В этом файле идут параметры подключения к базе данных
define("DBName","ME");
define("HostName","localhost");
define("UserName","root");
define("Password","");
?>

После того как мы создали файл и прописали в него все нужные переменные можно подключиться к базе данных из программы нашей программы. Для этого можно использовать следующий кусок кода (шаблон):

табл3.Подключение к базе данных из php программы (ОБЯЗАТЕЛЕН!!!)
1 <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>test of mysql empty fetch result</title>
<link rel="stylesheet" type="text/css" href="css/me.css">
</head>
<body>
2 <?
if(!$my_link=mysql_connect(HostName,UserName,Password))
{
echo "Ошибка подключения к базе данных".DBName."!<br></body></html>"; exit;
}
3 $query = getenv("QUERY_STRING");
parse_str($query);
?>

часть 1 таблицы 3  содержит стандартный код заголовка HTML страницы и открывающий тег <body> , данная часть необходима для нормальной работы веб страницы.
часть 2 таблицы 3 содержит собственно код подключения к базе данных а именно подключает к базе данных с указанным в файле tunes.php именем , паролем и хостом .В случае ошибки подключения выдает сообщение об ошибке и заканчивает работу скрипта.
часть 3 таблицы 3 содержит транслятор внешних переменных (переданных странице в качестве параметров как например http://localhost/testmy.php?perem1=123 ) и необходима в дальнейшем для управления поведением страницы , не вмешиваясь в ее код.

После того как мы подключились к базе данных , нам может быть необходимо создать таблицу для тестирования работы шаблонов :

 

табл4. Создание таблицы из php программы
<?
// Имя нашей таблицы (которую мы хотим создать/стереть)
$tname="test_mysql";

// Убиваем тестируемую таблицу (при указании параметра testmy?drop=1командной строки)
//примечание - такая операция возможно только при существовании таблицы - если ее еще нет то данная операция приведет к ошибке!
if (isset($drop)){
mysql(DBName,"drop table $tname;");
if (mysql_error()){echo "1_Error num: ".mysql_errno().": ".mysql_error()."<BR></body></html>";exit;}
}

//Создаем тестируемую таблицу (при указании параметра testmy?create=1командной строки)\
//примечание - такая операция возможно только при отсутствии таблицы - если она уже создана то данная операция приведет к ошибке!

if (isset($create)){
mysql(DBName,"create table $tname (id int unsigned,a text);");
if (mysql_error()){echo "2_Error num: ".mysql_errno().": ".mysql_error()."<BR></body></html>";exit;}
}
?>

Для того чтобы создать таблицу - которой пока еще нет в базе данных следует вызвать нашу программу в браузере как http://localhost/testmy.php?create=1 при этом будет создана таблица примера в базе данных "ME" .

Итак что же делает выше указанный шаблон - он "убивает" таблицу с именем  test_mysql (либо любую другую имя которой задано в переменной $tname) и/или создает таблицу с нужными нам полями .

Для того чтобы этот шаблон заработал нужно странице в качестве параметров передать переменную , свою для создания таблицы и свою для ее уничтожения . (например так как мы это уже делали http://localhost/testmy.php?create=1 - для создания ранее несуществующей таблицы или http://localhost/testmy.php?drop=1 - для стирания существующей таблицы , если это вам понадобиться по какой-либо причине)

Внешняя переменная "create" или "drop" будет транслирована во внутреннюю шаблоном подключения к базе данных (таблица 3).

Нужно отметить что данный шаблон является универсальным для других управляющих запросов к базе данных - в него включена проверка на ошибки (my_error())- которая позволяет отлаживать запросы к базе данных путем анализа ошибок

После того как у вас создана таблица ее можно наполнить какими либо данными - для этого есть шаблон вставки выполнения SQL оператора INSERT , аналогичный тому что применялся для создания и удаления таблицы.

табл5.
<?
$tname="test_mysql"; // Этот параметр необязателен если был задан ранее
//Вставляем записи в тестируемую таблицу всего 20 записей
for ($i=1;$i<20;$i++){
mysql(DBName,"insert into $tname  (id,a) values ($i,'record num: $i')");
if (mysql_error()){echo "3_Error num: ".mysql_errno().": ".mysql_error()."<BR></body></html>";exit;}
}
?>

В данном шаблоне применен оператор цикла для вставки 20-ти записей в таблицу.
Итак в таблицу вставлены записи. Теперь их можно вывести на экран (в форме списка или таблицы)

табл6 Вывод записей из базы данных в форме простого списка
1 <?
// Делаем запрос 
$r=mysql(DBName,"select id,a from fetch_mysql where id>5");
if (mysql_error()){echo "4_Error num: ".mysql_errno().": ".mysql_error()."<BR></body></html>";exit;}
2 //Выводим результаты запроса
for($i=0; $i<mysql_numrows($r); $i++)
{
$f=mysql_fetch_array($r);
echo $f['a']." - ".$f['id']."<br>";
}
?>

для вывода результата запроса в виде таблицы:

табл7 Вывод записей из базы данных в виде таблицы
1 <?
// Делаем запрос 
$r=mysql(DBName,"select id,a from fetch_mysql where id>5");
if (mysql_error()){echo "4_Error num: ".mysql_errno().": ".mysql_error()."<BR></body></html>";exit;}
2
//Выводим результаты запроса в виде таблицы
echo"<table border=\"1\">";
for($i=0; $i<mysql_numrows($r); $i++)
{
$f=mysql_fetch_array($r);
echo "<tr><td width=\"90%\">".$f['a']." - ".$f['id']."</td></tr>";
}
echo "</table>";
?>

Этот кусок кода выведет записи в виде таблицы.
В качестве запросов к базе данных можно применять самые разнообразные выражения - единственное ограничение тут что $d['argument'] - параметр argument то есть название колонки , должен присутствовать в запросе то есть если вы указали бы в запросе - 

<?
$r=mysql(DBName,"select id from fetch_mysql where id>5");
а в части 2 шаблона написали бы
//Выводим результаты запроса в виде таблицы
echo"<table>";
for($i=0; $i<mysql_numrows($r); $i++)
{
$f=mysql_fetch_array($r);
echo "<tr><td width=\"90%\">$f['a'] - $f['id'] </td></tr>";
}
echo "</table>";

?>

то такой код бы вызвал ошибку - так как $f['a'] -не существует в результате запроса.

Следует отметить один важный момент - если запрос являеться пустым то не будет выведено ничего так как используеться проверка количества записей в полученном запросе.

После того как выполнены необходимые операции с базой данных - ее необходимо закрыть .

тадл.8. Закрытие базы данных.
<?
if(!mysql_close())echo "error of closing link ".$my_link;
echo "</body></table>";
?>

При ошибке закрытия базы будет выведено сообщение.
Итак пользуясь данными готовыми шаблонами и применяя их с небольшими изменениями можно построить работоспособную базу данных для интранет / интернет.
Шаблоны можно перемежевывать кусками html кода , не забывая вставлять ограничивающие <? ?> теги как ограничители для шаблонов - как это сделано в файле- примере.
Конечно приведенные в этой статье шаблоны самые примитивные из возможных , но даже они дают понять что разбивая работу с базой данных в вашей программе на определенные этапы - вы не только сэкономите время но и получите хорошо модифицируемый код , конечно при условии хорошего документирования ваших шаблонов php кода.

 

Ссылки:

http://www.php.net - официальный сайт php
http://www.mysql.com
- официальный сайт MySQL
http://www.apache.org - официальный сайт Apache

PS . Все выше приведено при минимальных модификациях применимо всего сказанного и в программах , написанных на php3.

 


Copyright © "Internet Zone"info@izcity.com
Копирование и использование данных материалов разрешается только в случае указания на журнал "Internet Zone", как на источник получения информации. При этом во всех ссылках обязательно явное указание адреса вэб-сайта http://www.izcity.com/. При наличии у копируемого материала авторов и источника информации - их также нужно указывать, наряду со ссылкой на нас.