Разработка базовых примитивов
Примитивы можно разделить на две группы: манипулирования таблицами базы данных и самими данными. К первой группе относят:
- создание таблиц баз данных;
- удаление таблиц из базы данных.
Во вторую группу входят:
- добавление данных;
- просмотр данных;
- изменение значений данных;
- удаление записей таблиц.
Любые манипуляции с таблицами или их данными возможны только после соединения с базой данных. Поэтому, прежде, чем перейти к разработке примитивов рассмотрим этот вопрос.
Соединение с базой данных
Для баз данных Postgres95 это делают с помощью функции
int pg_Connect(string host, string port, string options, string tty, string dbname);
Эта функция возвращает идентификатор соединения. Он равен 1, если соединение прошло успешно. В противном случае его значение равно 0.
Сохраните ниже приведенный скрипт в файле connect.php3 и поместите его в папку WebDBApp.
<?
$cnct = pg_Connect( "host=localhost port=5432 dbname=chek user=chek" );
if( !$cnct )
{
// соединения нет
echo "Connect to database failed! Please, consult the system administrator. \n";
exit;
}
else
{
// соединение прошло успешно
echo "Do Something \n";
}
?>
Запустите скрипт на исполнение, для чего воспользуйтесь, например, Netscape Navigator. Введите в его адресной строке путь к папке WebDBApp, например, так http://ssu.sumy.ua/teach/WebDBApp/connect.php3
Если соединение с базой данных произойдет успешно, то вы увидите следующее сообщение
Как мы уже отмечали приложения Web баз данных - это сплав PhP и HTML кодов. Как же сервер их различает. Для указания начала PhP кода используют такую комбинацию символов <?, а его завершение помечают так ?>. Цвет символов серверу безразличен. Этот цвет выбран для того, чтобы в дальнейшем было зрительно легко отличать PhP код от остального текста.
Комментарии выделены зеленым цветом.
Создайте в папке WebDBApp папку primitive и сохраните там примитив соединения с базой данных
<?
$cnct = pg_Connect( "host=localhost port=5432 dbname=chek user=chek" );
if( !$cnct )
{
// соединения нет
echo "Connect to database failed! Please, consult the system administrator. \n";
exit;
?>
как connect.inc файл.
Создание таблиц
А теперь нам осталось совсем чуть-чуть, чтобы создать таблицу test - воспользоваться SQL командой CREATE TABLE. Например, так
<?
//*** соединение с БД ***
require "primitive/connect.inc";
//*** создание таблицы ***
$result = pg_Exec( $cnct, "CREATE TABLE test (id int, name char(20))" );
if ( $result )
{
// таблица создана
echo "Table create \n";
}
?>
Используемая здесь функция
int pg_Exec(int connection, string query)
позволяет переадресовать SQL запрос Postgres95 для исполнения. Ключевое слово require позволяет включить текст примитива connect.inc, который был помещен в папку primitive.
Сохраните этот скрипт под именем create.php3 и запустите его на исполнение.
Добавление данных
Результатом исполнения скрипта create.php3 является файл test. Каждая запись этого файла состоит из двух типов данных: номера по списку id и соответствующих ему фамилии и инициалов - name.
Операция добавления данных позволяет создавать новые записи и заполнять их поля заданными значениями.
Примитив добавления данных
<?
// *** соединение с БД ***
require "primitive/connect.inc";
// *** добавление данных ***
$result = pg_Exec( $cnct, "INSERT INTO test values(1, 'Иванов')" );
if ( $result )
{
echo "Data insert \n";
}
?>
назовем insert.php3.
Поместите его на сервер и запустите на исполнение Netscape Navigator'ом.
Если данные будут добавлены, то вы увидите сообщение: "Data insert".
Просмотр данных
Предварительно задают объем просматриваемых данных.
Эту операцию называют "выборка". Ее реализуют SQL командой SELECT. Например, так
SELECT * FROM test
Затем данные, которые выбраны из таблицы, распечатывают построчно. Для этого используют функции, которые сохраняют строки таблиц, как массивы, например,
array pg_Fetch_Array(int result, int row);
Здесь row - номер строки. Их нумеруют, начиная с 0.
Итак, примитив просмотра данных
<?
// *** соединение с БД ***
require "primitive/connect.inc";
// *** просмотр данных ***
$result = pg_Exec( $cnct, "SELECT * FROM test" );
if ( $result )
{
$arr = pg_Fetch_Array ($result, 0);
echo $arr['name'];
}
?>
назовем view.php3.
Поместите его на сервер и запустите на исполнение.
Обратите внимание, что данный скрипт позволяет просмотреть значение поля name только одной записи.
Если в таблице несколько строк, и вы хотите просмотреть результат выбоки как таблицу, то используйте следующий скрипт
<?
//*** соединение с БД ***
require "primitive/connect.inc";
// *** просмотр данных ***
$result = pg_Exec( $cnct, "SELECT * FROM test" );
$RecCount = pg_NumRows( $result ); // число записей, которые следует отобразить на экране
?>
<HTML>
<BODY>
<TABLE BORDER="1" WIDTH="200">
<?
$i = 0;
do // отображаем записи построчно
{
$arr = pg_Fetch_Array ($result, $i);
?>
<TR>
<TD>Name: </TD><TD><? echo $arr['name']; ?> </TD>
</TR>
<? $i = $i + 1; // номер следующей записи, которую будем отбражать строкой таблицы
} while ($i < $RecCount);
?>
</TABLE>
<BR>
</BODY>
</HTML>
Назовем этот скрипт view_n.php3.
Результат его исполнения такой
Изменение значений данных
Можно произвести SQL командой UPDATE. Например, так
UPDATE test
SET name = 'Петров'
WHERE name = 'Иванов'
Такие запросы, как правило, образуют конкатенацией (символ ".=" ) и хранят в переменной. В ниже следующем скрипте это переменная $query.
<?
// *** соединение с БД ***
require "primitive/connect.inc";
// *** изменение значений данных ***
// формирование запроса
$query = "UPDATE test " ;
$query .= "SET name = 'Петров' " ;
$query .= "WHERE name = 'Иванов' " ;
// Исполнение запроса
$result = pg_Exec( $cnct, $query );
if ( $result )
{
echo "Data update \n";
}
?>
Сохраните скрипт под именем udate.php3. Запустите его и убедитесь, что фамилия "Иванов" была изменена на "Петров".
Удаление записей таблиц
Для удаления всех записей из таблицы используют команду SQL вида
DELETE FROM test;
Записи, где значения полей, которые удовлетворяют некоторым условиям, удаляют так:
DELETE FROM test WHERE name='Иванов';
Удаление таблиц из базы данных
Таблицу удаляют следующей SQL командой
DROP TABLE test;
Назад |
Содержание |
Вперед