Разработка базовых примитивов

Примитивы можно разделить на две группы: манипулирования таблицами базы данных и самими данными. К первой группе относят:

Во вторую группу входят:

Любые манипуляции с таблицами или их данными возможны только после соединения с базой данных. Поэтому, прежде, чем перейти к разработке примитивов рассмотрим этот вопрос.

Соединение с базой данных

Для баз данных 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:&nbsp;</TD><TD><? echo $arr['name']; ?>&nbsp;</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;

Назад | Содержание | Вперед