Работа с базами данных

       

ИСПОЛЬЗОВАНИЕ ЯЗЫКА PHP ДЛЯ ДОСТУПА К БАЗАМ ДАННЫХ


Лабораторная работа 10

ИСПОЛЬЗОВАНИЕ ЯЗЫКА PHP ДЛЯ ДОСТУПА К БАЗАМ ДАННЫХ

Цель работы

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

Содержание работы и методические указания к ее выполнению

Для выполнения работы необходимо

  • ознакомиться с синтаксисом языка PHP;
  • изучить особенности передачи значений переменных HTML-формы в переменные PHP;
  • ознакомиться c набором функций для общения с СУБД Informix;
  • с использованием средств языка PHP разработать и отладить программу доступа к базе данных.
  • Язык РНР - это действующий на стороне сервера встраиваемый в HTML язык, имеющий синтаксис, близкий к языку Си. Язык РНР дает возможность вставлять в файлы HTML инструкции языка PHP для создания динамического содержания. Эти инструкции обрабатывает препроцессор-интерпретатор РНР и заменяет их тем содержимым, которое производит этот код. PHP-программа может целиком состоять из конструкций языка PHP, а может быть смесью конструкций языков PHP и HTML. Стандартное расширение файла с PHP-программой - php.



    Одним из распространенных применений РНР является работа с базами данных. Для целого ряда баз данных РНР имеет собственную поддержку, а другие доступны через ODBC-функции РНР. При вызове PHP-программы URL-адрес должен содержать номер порта, через который работает PHP:

    html://fpm.ami.nstu.ru:81/~pmxxyy/t1.php

    К особенностям языка PHP относятся:

  • возможность встраивать конструкции языка PHP в HTML-документ;
  • возможность включать в PHP-программу файлы;
  • наличие достаточного набора встроенных функций;
  • возможность определять собственные переменные, строки, массивы, объекты;
  • наличие необходимого набора управляющих структур;
  • возможность вводить собственные функции.
  • Одна из наиболее удобных особенностей PHP - это способность автоматически передавать значения переменных из HTML-форм в переменные PHP. PHP автоматически генерирует набор переменных, имена которых совпадают с именами объектов в HTML-форме и содержащих значения данных объектов.
    В результате отпадает необходимость в выполнении рутинного преобразования, связанного с разбором последовательности

    имя=значение&имя1=значение1&...&имяN=значениеN

    Для связи с любой из СУБД РНР в своем наборе имеет ряд функций, которые очень похожи между собой и имеют одинаковую логику работы и аналогичные параметры.

    В приведенной ниже таблице представлен минимальный набор функций, необходимых для написания PHP-программ, общающихся с СУБД Informix.

    1. int ifx_connect (string database, string user, string password) - cоздать соединение с сервером Informix
    . Входные параметры: Database - имя базы данных;

    user - имя пользователя

    password - пароль.

    . Возвращаемое значение: идентификатор соединения, если соединение прошло успешно, и равен 0 в противном случае.
    2. int ifx_query (string query, int link_id, int cursor_type) - выполнить запрос к базе
    . Входные параметры: query - строка SQL-запроса;

    link_id - идентификатор соединения;

    cursor type - тип курсора

    . Возвращаемое значение: значение 1 или 0 в зависимости от успеха выполнения операции.
    3. array ifx_fetch_row (int result_id, mixed [position]) - получить строку запроса как массив
    . Входные параметры: result_id - идентификатор результата, возвращенный функцией ifx_query() (только для запросов типа select);

    [position] - параметр из списка: "NEXT", "PREVIOUS", "CURRENT", "FIRST", "LAST" или номер.

    . Возвращаемое значение: строка таблицы базы данных, возвращаемая как массив.
    4. string current (array row) - получить очередное поле из строки таблицы базы данных.
    . Входные параметры: array row- строка таблицы базы данных, возвращенная функцией ifx_fetch_row().
    . Возвращаемое значение: очередное поле строки таблицы.
    5. string next (array row) - получить следующее поле из строки таблицы базы данных.
    . Входные параметры: array row - строка таблицы базы данных, возвращенная функцией ifx_fetch_row().
    . Возвращаемое значение: следующее поле строки таблицы.
    6. int reset( array$row) - перейти в начало строки.
    . Входные параметры: array row - строка таблицы базы данных, возвращенная функцией ifx_fetch_row().
    . Возвращаемое значение: нулевая позиция строки результата.
    7. string key( array$row) - перейти в начало строки.
    . Входные параметры: array row - строка таблицы базы данных, возвращенная функцией ifx_fetch_row().
    . Возвращаемое значение: имя очередного поля строки результата.
    8. int ifx_affected_rows (int result_id) - получить число столбцов, обработанных запросом
    . Входные параметры: result_id - результат, возвращенный функцией ifx_query().
    . Возвращаемое значение: Возвращается число столбцов, обработанных запросом, ассоциированных с result_id. Для вставок, обновлений и удалений - это реальное количество обработанных столбцов. Для выборок - ожидаемое количество.
    9. int ifx_free_result (int result_id) - освободить ресурсы запроса
    . Входные параметры: result_id - результат, возвращенный функцией ifx_query().
    . Возвращаемое значение: Освобождает ресурсы, занятые запросом с идентификатором результата result_id. Возвращает 0 в случае ошибки.
    10. int ifx_close (int [link_identifier]) - закрыть соединение с Informix
    . Входные параметры: link_id - идентификатор соединения;
    . Возвращаемое значение: закрывает соединение с Informix. Если идентификатор ссылки не указан, предполагается последнее установленное соединение.
    <


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

  • подключиться к серверу баз данных и зарегистрироваться;


  • выбрать базу данных, которая будет использоваться;


  • отправить запрос SQL на сервер и получить данные;


  • отключиться от сервера баз данных.


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

    Последовательность выполнения лабораторной работы

  • Убедиться в наличии и заполненности базы данных поставщиков, деталей, изделий, поставок.


  • Разработать и отладить HTML-формы для ввода данных пользователя согласно варианту задания (можно модифицировать HTML-формы из предыдущей лабораторной работы).


  • Разработать и отладить PHP-программы для обработки данных HTML-форм и доступа к базе данных.


  • После выполнения лабораторной работы привести базу данных в исходное состояние.


  • Требования к разрабатываемой программе

    Разрабатываемые программы должна удовлетворять следующим требованиям:

  • разрабатываемое программное приложение должно содержать HTML-документ с формой для ввода данных и PHP-программу, вызываемую по окончании работы с HTML-формой;


  • ввод параметров задания в HTML-форме может быть осуществлен либо путем ввода значений в текстовом виде, либо посредством выбора значений из предлагаемого списка;


  • программа должна быть написана в предположении, что любой пользователь без ограничений может иметь доступ к данным;


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


  • программа должна быть достаточно документирована.


  • Варианты заданий

    Вариант 1

  • Вывести информацию о поставщиках, поставивших детали для изделий из указанного города.


  • Увеличить рейтинг поставщика, выполнившего наибольшую поставку некоторой детали, на указанную величину.




  • Вариант 2

  • Вывести информацию о деталях, поставки которых были осуществлены для указанного изделия.


  • Изменить цвет самой тяжелой детали на указанный.


  • Вариант 3

  • Вывести информацию о поставщиках, которые осуществляли поставки деталей из заданного города в указанный период.


  • Вставить поставщика с заданными параметрами.


  • Вариант 4

  • Вывести информацию о поставщиках, поставивших указанную деталь в заданный период.


  • Удалить поставщика, выполнившего меньше всего поставок.


  • Вариант 5

  • Вывести информацию обо всех деталях, поставляемых для указанного изделия более чем одним поставщиком.


  • В таблице поставок изменить номер поставщика при заданном номере детали и изделия.


  • Вариант 6

  • Вывести информацию о деталях, поставки которых были осуществлены для указанного изделия всеми поставщиками.


  • Увеличить рейтинг поставщика, выполнившего больший суммарный объем поставок, на указанную величину.


  • Вариант 7

  • Вывести информацию об изделиях, для которых была поставлена указанная деталь.


  • Изменить название и город детали с максимальным весом на указанные значения.


  • Вариант 8

  • Вывести информацию о поставщиках, которые осуществляли поставки деталей для указанного изделия.


  • Увеличить рейтинг поставщика, выполнившего большее число поставок, на указанную величину.


  • Контрольные вопросы

  • Каким образом вставить конструкции PHP в HTML-документ?


  • Каким образом обеспечить, чтобы встречающиеся в строке переменные были заменены их значениями?


  • Каковы правила определения функций в языке PHP?


  • Каковы особенности передачи значений переменных из HTML-формы в переменные PHP?


  • Каким образом осуществляется взаимодействие с базами данных в языке PHP?


  • В чем заключается технология "cookies"?



  • Содержание раздела