Программа учебной практики для студентов 2 курса



бет2/4
Дата28.06.2016
өлшемі0.52 Mb.
#163448
түріПрограмма
1   2   3   4

Введение


В настоящее время количество приложений с использованием систем управления реляционными базами данных (СУБД) неуклонно растет. Особенно на этом фоне выделяются разработки под Интернет.

Современные информационные системы, такие как динамические WEB-сайты, используют СУБД для управления контентом (информационным наполнением) и обеспечения интерфейса взаимодействия с пользователями. Динамические Web-сайты, как правило, основаны на шаблонных страницах (в частности, HTML-формата), в которые вставляется (когда пользователь запрашивает соответствующие страницы через WEB-браузер) постоянно меняющееся информационное наполнение, извлекаемое из СУБД.

Отметим, что HTML (от англ. HyperText Markup Language — «язык разметки гипертекста») — стандартный язык разметки документов во Всемирной паутине. Большинство WEB-страниц создаются при помощи языка HTML (или XHTML).

Динамические WEB-сайты, как правило, создаются с использованием различных скриптовых языков программирования и технологий, среди которых, наиболее распространенными являются:



  • PHP (англ. PHP: Hypertext Preprocessor — «PHP: препроцессор гипертекста») — скриптовый язык программирования общего назначения, интенсивно применяющийся для разработки WEB-приложений, в том числе взаимодействующих с СУБД;

  • ASP.NET — технология создания WEB-приложений и WEB-сервисов от компании Microsoft. Она является составной частью платформы Microsoft .NET. . Разработчики могут писать код для ASP.NET, используя практически любые языки программирования, в том числе, и входящие в комплект .NET Framework (C#, Visual Basic.NET, и JScript .NET). ASP.NET имеет преимущество в скорости по сравнению со скриптовыми технологиями, так как при первом обращении код компилируется и помещается в специальный кэш, и впоследствии только исполняется, не требуя затрат времени на парсинг, оптимизацию, и т. д.

Существуют и другие языки программирования и технологии создания динамических WEB-приложений, взаимодействующих с СУБД, например, язык программирования Java Server Pages (JSP), технология Java 2 Enterprise Edition и JDBC, технология создания расширений ISAPI и приложений CGI на языке программирования C++ и др. Такие технологии имеют определенные достоинства и недостатки, связанные с быстродействием, функциональными возможностями, и др. Вместе с тем, в процессе обучения программированию приложений баз данных для WEB целесообразно ориентироваться на наиболее популярные инструменты, такие как PHP, и ASP.NET (VBScript .NET). При этом следует отметить, что скриптовый язык программирования PHP является более простым в использовании и ориентирован на проектирование малых и средних динамических WEB-сайтов (таких как, форумы, блоги, интернет-магазины и др.), а технология ASP.NET предназначена для проектирования больших информационных систем (например, Интернет-порталов) и предполагает активное использование методов объектно-ориентированного программирования (ООП) и визуальных средств разработки, в частности, Microsoft Visual Studio. Также отметим, что технология PHP наилучшим образом адаптирована для работы с СУБД MySQL, а ASP.NET для взаимодействия с СУБД Microsoft SQL Server (посредством специальной технологии ADO.NET) .

Основной целью изучения темы «Разработка WEB-приложений на стороне сервера», изучаемой в рамках курса «Базы данных», является обучение студентов методологии проектирования приложений взаимодействующих с СУБД для WEB. Основные задачи темы: расширение и углубление теоретических знаний в области разработки баз данных; овладение специальными языками программирования, обеспечивающими возможность разработки приложений баз данных для WEB; изучение специфики технической реализации СУБД для WEB, в частности, на примере MySQL; изучение наиболее типичных примеров создания динамических WEB-страниц, взаимодействующих с СУБД.

Освоение темы предполагает знание основ технологий реляционных баз данных, программирования на языках: Си, Visual Basic и SQL, а также теоретических основ веб-дизайна (HTML, CSS и др.).




Раздел 1. Основы языка программирования PHP

Как было отмечено ранее, PHP (англ. PHP: Hypertext Preprocessor — «PHP: препроцессор гипертекста») — скриптовый язык программирования общего назначения, интенсивно применяющийся для разработки WEB-приложений, в том числе взаимодействующих с СУБД.

В отличие, в частности, от сценариев JavaScript и VBScript, выполняемых на стороне «клиента», PHP сценарии выполняются на стороне «сервера» и позволяют работать с различными СУБД, например MS SQL Server, Oracle, серверной файловой системой, почтовыми сервисами и др.

Обратите внимание. Для работы с PHP (ASP, JSP и др.) (в отличие от JavaScript) нужен установленный и специально настроенный WEB-сервер, например, Internet Information Server (IIS). К примеру, если у Вас установлена операционная система Windows XP/Vista и т.п., то Вы можете скачать дистрибутив PHP c сайта: www.php.net (например, для пятой версии: http://ru.php.net/get/php-5.2.12-Win32.zip/from/a/mirror).

Обратите внимание. PHP является свободно распространяемым продуктом, класса Open Source (открытого исходного кода).

Отметим, что файл, использующий PHP-сценарии, должен, как правило, иметь расширение «*.php».



1.1 Введение в PHP

Следующий код




Дает

Hello, World!

Имена переменных обозначаются знаком $. То же самое "Hello, World!" можно получить следующим образом:

$message = "Hello, World!";

echo($message);

?>
Конкатенация (присоединение) строк осуществляется с помощью . (точки); обычные арифметические операции определяются так, как Вы того и ожидаете:


$greeting = "Hello ";

$num = 3 + 2;

$num++;


echo ("$greeting.$num.”people!“);

?>
даст Hello 6 people!


Обратите внимание. Синтаксис PHP очень похож на C.

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


$name = 'Susannah';

$greeting_1 = "Hello, $name!";

$greeting_2 = 'Hello, $name!';

echo "$greeting_1\n";

echo "$greeting_2\n";

?>
даст

Hello, Susannah!

Hello, $name!
Обратите внимание на то, что \n в строке означает переход к новой строке, совсем как в Perl или в C. Однако это работает только в тех строках, которые взяты в двойные кавычки.

PHP обеспечивает доступ к переменным окружения как к регулярным переменным. Например, при нажатии на кнопку формы инициируется передача данных формы методом GET или POST

Такой сценарий:

$action = $_REQUEST[‘sbt']; // Можно также использовать $_POST[‘sbt'];

echo($action);

?>

Даст результат:



Вход

после нажатия на кнопку «Вход»









Очевидное достоинство PHP в том, что Вам не надо заботиться о получении, раскодировании и любой другой обработке данных из формы, как например при написании CGI программы на языке C/C++. За нас все делает PHP. Очень легко и красиво он автоматически заполняет несколько встроенных массивов:

$_SERVER ($HTTP_SERVER_VARS) - для серверных переменных;

$_ENV ($HTTP_ENV_VARS) - для переменных среды, в которой работает PHP;

$_COOKIE ($HTTP_COOKIE_VARS) - для переменных передающихся посредством cookies;

$_GET ($HTTP_GET_VARS) - для параметров формы, переданных посредством метода GET;

$_POST ($HTTP_POST_VARS) - для параметров формы, переданных методом POST;

$_FILES ($HTTP_POST_FILES) - для закачиваемых посредством метода POST файлов;



$_REQUEST - массив содержащий внутри себя массивы $_GET, $_POST и $_COOKIE;

$_SESSION ($HTTP_SESSION_VARS) - для хранения параметров сессии.

Используя $_REQUEST, Вы получаете доступ к данным формы. Можете сохранить эти данные в Базе Данных и т.д.

1.2 Установка интерпретатора PHP



Шаг 1. Распакуйте дистрибутив в папку C:\PHP

Шаг 2. Настройте Internet Information Server на своем локальном компьютере, так чтобы выполнялась обработка файлов с расширением *.php. Для этого нужно зайти в Панель управления Windows, далее – Администрирование, далее - Диспетчер служб IIS. Затем нужно добавить обработку php-сценариев фильтром ISAPI для всех узлов по умолчанию с помощью вкладки «Фильтры ISAPI» (рис. 1)


Рис. 1. Добавление фильтра ISAPI для обработки PHP-сценариев.
Отметим, что Internet Server Application Programming Interface (ISAPI) — это API (Application Programming Interface - набор готовых классов, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах.) для Internet Information Services, коллекции сетевых служб Microsoft Windows. Соответственно, фильтры ISAPI представляют собой динамические библиотеки DLL, напрямую взаимодействующие с IIS.

Далее, нужно добавить «Сопоставление сценария PHP с исполняемым файлом ISAPI-фильтра (php5isapi.dll). Это можно сделать в разделе «Сопоставление обработчиков» системы администрирования IIS (рис. 2).




Рис. 2. Настройка «Сопоставления обработчиков» IIS для PHP.
Обратите внимание. Для различных версий ОС Windows, интерфейс Диспетчера служб IIS также будет различным. К примеру, в для Windows XP добавление фильтра ISAPI для PHP имеет вид рис. 3.


Рис. 3. Добавление фильтра ISAPI для обработки PHP-сценариев в для IIS 6.0 ОС Windows XP.
Шаг 3. Скопируйте php5ts.dll из дистрибутива в папку C:\Windows\system32
Шаг 4. Убедитесь, что PHP работает под управлением Вашего IIS. Для этого создайте файл test.php в папке IIS (C:\Inetpub\wwwroot) c таким кодом:
phpinfo();

?>


Должен быть получен вот такой результат




Рис. 4. Оценка корректности установки и конфигурирования PHP.
Обратите внимание на параметр Loaded Configuration File. К примеру, в нашем случае он имеет следующее значение: «C:\Program Files\PHP\php.ini». Это означает, что кофигурационный файл, с помощью которого Вы можете переопределять параметры PHP модуля, находится в папке «C:\Program Files\PHP), и загружен успешно.
Шаг5. Сконфигурируйте файл php.ini под Ваши задачи.

Рис. 5. Конфигурирование PHP под собственные задачи.

1.3 Полезные конструкции на PHP

include("login.php"); //Вставка файла login.php в текущий файл


//Здесь произвольный HTML код

//Данный блок кода будет выполнятся, только если переменная $action примет значение «Вход», т.е. если Пользователь нажмет на кнопку «Вход

……………………………………




//Функция isset позволяет проверить установлено ли значение переменной $action
if(!isset($action))

$action="";

Простейший способ установить cookie на PHP таков:

setcookie('name', 'bret');


Затем, для каждой последующей страницы на Вашем сайте, просматриваемой в течение данной сессии (пока пользователь не покинет сайт) переменная $name будет иметь значение 'bret' и его можно легко прочитать средствами PHP. Этот тип cookie известен как cookie-сессия, поскольку значение сохраняется в течение пользовательской сессии.

С помощью cookie можно создать, в частности, «Корзину покупок» для Интернет-магазина или запомнить «профиль» пользователя. Если Вы хотите, чтобы значение cookie запоминалось браузером после того, как пользователь закончит сессию, Вы должны передать функции setcookie() третий параметр - дату истечения срока действия cookie. Поскольку PHP сформировался в основном в среде Unix, Вы должны представить время истечения срока действия cookie как число секунд, прошедших с 1 января 1970 г.

Например, если Вы хотите, чтобы срок действия cookie истек 1 января 2000 г., Вы записываете:

$y2k = mktime(0,0,0,1,1,2000);

setcookie('name', 'bret', $y2k); ?>
Удаление cookie


Обратите внимание. В силу того, как организована обработка cookies в протоколе HTTP, необходимо установить значения всех cookie до вывода какого-либо текста. Если сделать наоборот, PHP выдаст Вам предупреждение и значение cookie не будет послано. Вот так правильно:

setcookie('name', 'jeff');

echo "Hello Everyone!";

?>
Создать массив можно также путем вызова функции array():

$fruit = array();

$favorites = array();

или так

$fruit = array('banana','papaya'); //Создается массив из 2-х элементов 'banana‘ и 'papaya'


Индексы массивов (как обычных, так и ассоциативных) задаются в квадратных скобках ([ и ]):

$fruit[0] = 'banana';

$fruit[1] = 'papaya';

$favorites['animal'] = 'turtle';

$favorites['monster'] = 'cookie';

1.4 Управляющие структуры PHP


Вы можете использовать операторы цикла, такие как for и while. В результате выполнения оператора:

for ($i = 4; $i < 8; $i++) {

print "I have eaten $i bagels today.\n";

}


Получим:

I have eaten 4 bagels today.

I have eaten 5 bagels today.

I have eaten 6 bagels today.

I have eaten 7 bagels today.

Тот же самый результат даст

$i = 4;


while ($i < 8) {

print "I have eaten $i bagels today.\n";

$i++; }
Вы можете также использовать конструкции с if и elseif:

if ($user_count > 200) {

print "Сайт сейчас перегружен!";

}

elseif ($user_count > 100) {



print "Сайт активно используется!";

else {


print "Сайт свободен - подключились только $user_count пользователей.";

}
Вы можете использовать конструкции с switch, do...while.

switch($kv1) // Оцениваем значение переменной $kv1

{

case 1:



{ $ms1="01";

break;}


case 2:

{ $ms1="04";

break;}

}

1.5 Работа с файловой системой


Пример обработки файла CSV (с данными разделямыми точкой с запятой).

$fp = file("baza/data.txt"); //Открываем файл data.txt

$pat =";"; // Определяем разделитель данных в файле “;”
for($i = 0; $i < count($fp); $i++){

$arr = split($pat, $fp[$i]); // Формируем массив значений $arr из данных файла

}
Различные функции по работе с файлами:

fread($f, $numberbytes) - читает из файла $f $numberbytes символов и возвращает строку этих символов.

fwrite($f, $st); - записывает в файл $f содержимое строки $st. .

fgets($f, $dlina); - считывает из файла одну строку, заканчивающеюся символом новой строки \n.

fputs($f, $st); - аналогична функции fwrite().

Конструкция or die().

Проанализировать результат функции fopen() и если он не равен false, вывести работу сценария позволяет конструкция or die ($err_message). Синтаксис данной конструкции следующий:

($f=fopen("/homa/user/file.txt","r")) or die ("error");

1.6 Базы данных и PHP


Пример 1. Создание соединения и выбор СУБД для MySQL

/* Некоторые переменные */
$hostname = "localhost";
$username = "myusername";
$password = "mypassword";
$dbName = "products";
/* создать соединение */
MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не могу создать соединение ");
mysql_select_db("$dbName");

/* Осуществляем определенные операции с СУБД */

/* Закрыть соединение */
MYSQL_CLOSE();

?>
Обратите внимание. Для работы с MySQL из PHP нет необходимости в каких либо дополнительных модулях. MySQL «родная» СУБД для PHP.


Пример 2. Создание соединения и выбор базы данных для MS SQL Server.

/* Некоторые переменные */
$hostname = "localhost";
$username = "myusername";
$password = "mypassword";
$dbName = "products";

/* создать соединение */


$link = MSSQL_CONNECT($hostname,$username,$password) or die ("Не могу создать соединение ");
Mssql_select_db ("$dbName“, $link);

/* Осуществляем определенные операции с СУБД */

/* Закрыть соединение */
MSSQL_CLOSE();

?>

Обратите внимание. Для работы с MS SQL Server из PHP (и другими СУБД кроме MySQL), необходимо подключить специальный модуль, соответствующий данной СУБД. Данная операция осуществляется в файле php.ini, посредством удаления знака «;» в соответсвующей строке файла, т.е.

Фрагмент файла php.ini:

[PHP_MSSQL] (extension=php_mssql.dll)


Обратите внимание, что если Вы используется в качестве сервера хорошо известную платформу MS SQL Server Express Edition, то строка соединения с базой данных «TEST» (в режиме аутоинтификации SQL Server, т.е. по логину «sa») будет иметь следующий вид:

$link = mssql_connect (".\SQLEXPRESS","sa","") or die ("Could not connect");

Mssql_select_db("TEST", $link);

?>
Обратите внимание на имя сервера СУБД ".\SQLEXPRESS".



Пример 3. Создание новой таблицы в MS SQL с помощью PHP

$link = mssql_connect (“127.0.0.1”,"sa","") or die ("Could not connect");

Mssql_select_db("GRAF", $link);
$strSQL = "CREATE TABLE scenar( // Таблица со значением результатов прогноза

data1 datetime,

nomer_sc INTEGER,

E decimal (20,2),

O decimal (20,2),

GT decimal (20,2),

TR decimal (20,2),

P decimal (20,2),

Y decimal (20,2),

M decimal (20,2),

N decimal (20,2),

X decimal (20,2),

CO decimal (20,2)

)";


$roma10 = mssql_query($strSQL);

if($roma10 ==1)

echo("Таблица scenar создана успешно
");

?>
Пример 4. Заполнение таблицы в MS SQL с помощью PHP данными из файла



$link = mssql_connect (“127.0.0.1”,"sa","") or die ("Could not connect");

Mssql_select_db("GRAF", $link);

$fp = file("baza/data2.txt"); // В файле data2.txt находятся исходные данные


$strSQL = "delete from scenar";

$roma = mssql_query($strSQL); // Удаляем предыдущие данные


for($i = 0; $i < count($fp); $i++){

$pat =";";

$arr = split($pat, $fp[$i]); // Разбиваем текущую строку файла на массив значений по “;”

$strSQL ="SET DATEFORMAT dmy"; //День-месяц-год

$roma = mssql_query($strSQL);

$strSQL = "insert into scenar(data1, nomer_sc, E, O, GT, TR, P, Y, M, N, X, CO)

values('$arr[0]',$arr[1] , $arr[2], $arr[3], $arr[4],$arr[5] , $arr[6], $arr[7], $arr[8],$arr[9] , $arr[10], $arr[11])";

$roma = mssql_query($strSQL); //Выполняем команду вставки записей

}

?>
Фрагмент файла data2.txt



01.07.2001;1;29.33;25.89;175.98;82.124;102.2;2193.884;12.7;1088.143;28.3;926.828;

01.07.2001;2;29.33;25.89;205.31;46.928;102.2;2229.08;12.6;1132.138;26.6;941.493;

01.07.2001;3;29.33;25.89;190.645;64.526;102.2;2193.45;12.6;1097.1;27.5;927.7;

01.07.2001;4;29.33;25.89;284.501;87.99;102.2;2190.951;12.7;1173.2;28.6;941.493;

01.10.2001;1;31;15;305;105;102.83;2543.18;13.45;1378.74;29.44;1091.46
Обратите внимание. Если файл с данными большой (например, имеет тысячи записей и более), то лучше использовать массовую загрузку данных в MS SQL Server командой BULK INSERT. Это будет намного быстрее.
Пример 5. Выполнение запроса к базе по заданному критерию

$link = mssql_connect (“127.0.0.1”,"sa","") or die ("Could not connect");

Mssql_select_db("GRAF", $link);

$strSQL1 = "select * from scenar where nomer_sc=1 AND data1 >= ‘2008-01-01’";

$zapr1=mssql_query($strSQL1);

$idx=1;


while($r1 = mssql_fetch_array($zapr1))

{

$E_1[$idx] = $r1["E"]; // Считываем значения переменных из Базы в массивы переменных



$O_1[$idx] = $r1["O"];

$GT_1[$idx] = $r1["GT"];

$TR_1[$idx] = $r1["TR"];

$P_1[$idx] = $r1["P"];

$Y_1[$idx] = $r1["Y"];

$M_1[$idx] = $r1["M"];

$N_1[$idx] = $r1["N"];

$X_1[$idx] = $r1["X"];

$CO_1[$idx] = $r1["CO"];

$idx++;


}

// Осуществляем различные манипуляции с массивами переменных $E_1[$idx] и др.



?>

Отметим, что PHP поддерживает ряд функций спефифичных для MySQL, в частности, следующие:



mysql_affected_rows -- Возвращает число затронутых прошлой операцией рядов.

mysql_change_user --  Изменяет пользователя для указанного соединения.

mysql_client_encoding -- Возвращает кодировку соединения

mysql_close -- Закрывает соединение с сервером MySQL.

mysql_connect -- Открывает соединение с сервером MySQL.

mysql_create_db -- Создаёт базу данных MySQL.

mysql_data_seek -- Перемещает внутренний указатель в результате запроса.

mysql_db_name -- Возвращает название базы данных.

mysql_db_query -- Переключается к указанной базе данных и посылает запрос.

mysql_drop_db -- Уничтожает базу данных MySQL.

mysql_errno --  Возвращает численный код ошибки выполнения последней операции с MySQL.

mysql_error --  Возвращает строку ошибки последней операции с MySQL.

mysql_escape_string --  Экранирует SQL спецсимволы для mysql_query.

mysql_fetch_array --  Обрабатывает ряд результата запроса, возвращая ассоциативный массив, численный массив или оба.

mysql_fetch_assoc --  Обрабатывает ряд результата запроса и возвращает ассоциативный массив.

mysql_fetch_field --  Возвращает информацию о колонке из результата запроса в виде объекта.

mysql_fetch_lengths --  Возвращает длину каждого поля в результате.

mysql_fetch_object -- Обрабатывает ряд результата запроса и возвращает объект.

mysql_fetch_row -- Обрабатывает ряд результата запроса и возвращает неассоциативный массив.

mysql_field_flags --  Возвращает флаги указанного поля результата запроса.

mysql_field_len --  Возвращает длину указанного поля.

mysql_field_name --  Возвращает название указанной колонки результата запроса.

mysql_field_seek --  Устанавливает внутренний указатель поля на переданное смещение.

mysql_field_table --  Возвращает название таблицы, которой принадлежит указанное поле.

mysql_field_type --  Возвращает тип указанного поля результата запроса.

mysql_free_result -- Освобождает память от результата запроса

mysql_get_client_info -- Возвращает данные о MySQL-клиенте

mysql_get_host_info -- Возвращает информацию о соединении с MySQL

mysql_get_proto_info -- Возвращает информацию о протоколе MySQL

mysql_get_server_info -- Возвращает информацию о сервере MySQL

mysql_info --  Возвращает информацию о последнем запросе

mysql_insert_id --  Возвращает ID, сгенерированный при последнем INSERT-запросе.

mysql_list_dbs --  Возвращает список баз данных, доступных на сервере.

mysql_list_fields -- Возвращает список колонок таблицы.

mysql_list_processes -- Возвращает список процессов MySQL.

mysql_list_tables -- Возвращает список таблиц базы данных MySQL.

mysql_num_fields -- Возвращает количество полей результата запроса.

mysql_num_rows -- Возвращает количество рядов результата запроса.

mysql_pconnect --  Устанавливает постоянное соединение с сервером MySQL.

mysql_ping -- Проверяет соединение с сервером и пересоединяется при необходимости.

mysql_query -- Посылает запрос MySQL.

mysql_real_escape_string --  Экранирует специальные символы в строках для использования в выражениях SQL.

mysql_result -- Возвращает данные результата запроса.

mysql_select_db -- Выбирает базу данных MySQL.

mysql_stat -- Возвращает текущий статус сервера.

mysql_tablename -- Возвращает имя таблицы, содержащей указанное поле.

mysql_thread_id -- Возвращает ID текущего потока.

mysql_unbuffered_query --  Посылает MySQL SQL-запрос без авто-обработки результата и её буферизации.

О


тметим, что для PHP существуют программы “билдеры” для ускорения процесса разработки WEB-страниц, взаимодействующих с СУБД, например, PHP Report Maker.



Достарыңызбен бөлісу:
1   2   3   4




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет