Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Заданидлвыполненил.р. по КИС.doc
Скачиваний:
12
Добавлен:
11.11.2019
Размер:
3.42 Mб
Скачать

ИРКУТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ

КАФЕДРА ИНФОРМАЦИОННЫЕ СИСТЕМЫ

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

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

по дисциплине «Корпоративные информационные системы»

Направление подготовки - 230200

Информационные системы

Специальность - 230201

Информационные системы и технологии

Иркутск – 2010

Содержание

Лабораторная работа №1. Разработка приложений на основе архитектуры клиент-сервер 3

Сбор информации от Web-приложений 4

Лабораторная работа № 2 Использование элементов управления ActiveX для создания динамических веб-страниц. 7

Создание БД и таблиц с использованием phpMyAdmin. Запустите «xampp-control.exe» и далее – сервер Apache и сервер БД MySQL, как показано на рисунке. 11

Вставка данных с использованием SQL 13

Получение данных при помощи SQL-запроов 14

Пример 2: Сортировка данных по алфавиту, хронологически или численно 16

Получение выбранных данных 17

Удаление данных с помощью SQL 18

Пример: Удаление записи 18

Лабораторная работа № 5 Data Mining 30

Лабораторная работа № 6 Использование технологии терминального сервера при построении корпоративных ИС 34

Тест 1. 35

Тест 2 37

Запуск приложений 39

Установка и настройка терминальных служб. Установка и использование терминальных клиентов. 40

Процесс лицензирования Terminal Services 2000. Установка и настройка клиентского программного обеспечения 43

Средства администрирования служб терминалов. Некоторые выводы... 56

Лабораторная работа №1. Разработка приложений на основе архитектуры клиент-сервер

Необходимость разработки приложений, которые бы могли работать непосредственно в www среде является актуальной задачей. Ввод данных также как и выдача обработанных результатов происходит через html-формы веб-страниц. Обработка же данных происходит на веб-сервере. Такое приложение относится к архитектуре клиент-сервер.

Необходимо отметить, что приложения разрабатываемые в средах разработки ориентированных на Win32 системы, т.е. серверная часть такого приложения может работать только под Win32 сервером, а клиентская часть представляет собой сгенерированный HTML код, который поддерживается любым браузером, независимо от используемой платформы. Серверная часть представляет собой исполняемую Win32 программу. Таким веб-приложениям принято давать расширение CGI, хотя это и непринципиально.

Рассмотрим пример простого CGI-приложения, выдающего в окно браузера текст "ПРИВЕТ", реализованного в среде программирования Delphi.

===cut===

program MyApp;

{$APPTYPE CONSOLE} // директива, задающая тип приложения Win32 - консоль

{$E cgi} // директива, задающая расширение приложения - cgi

begin

WriteLn('Content-Type: text/html');

WriteLn;

WriteLn;

WriteLn('<HTML>');

WriteLn('<HEAD>');

WriteLn('<TITLE>Простейшее CGI приложение</TITLE>');

WriteLn('<META http-equiv="Content-Type" content="text/html;' +

' charset=windows-1251">');

WriteLn('</HEAD>');

WriteLn('<BODY>');

WriteLn('<H1> ПРИВЕТ </H1>');

WriteLn('</BODY>');

WriteLn('</HTML>');

end.

===cut===

Результирующий файл (скомпилированный и скомпонованный), разместите в каталог, где разрешено исполнение скриптов для сервера приложений (по умолчанию каталог CGI-BIN.

Напишите веб-страничку для активизации CGI-приложения.

===cut==

<HTML>

<HEAD>

<TITLE>Форма для активизации CGI-приложения</TITLE>

</HEAD>

<BODY>

<A HREF="http://localhost/имя_файла_сервер.cgi">

Нажми сюда для запуска приложения</A>

</BODY>

</HTML>

===cut==

Установите на своем рабочем месте локальный сервер Apache. Запустите сервер.

Откройте созданную веб-страничку и перейдите по ссылке "Нажми сюда для запуска приложения". Результат работы продемонстрируйте преподавателю.

Код обработчика на РНР.

При помощи приложения «Блокнот» создаем тестовую страницу. Для того чтобы создать новый сайт на локальном веб-сервере, необходимо создать папку с названием сайта в папке C:\xampp\htdocs\, например blog и создать тестовый php-скрипт, например со следующим кодом:

<?php

echo 'Hello world!';

?>

Сохраним файл как index.php. Переходим в браузере по адресу http://localhost/blog/ (либо указываем адрес в ссылке веб-страницы) и видим приветствие «Hello world!», тем самым мы протестировали работоспособность сервера:

Сбор информации от Web-приложений

Для полноценной работы клиент-серверного приложения, оно должно не только выводить данные, но и получать данные от пользователя, т.е. обеспечивать ввод информации. Ввод данных в случае CGI-приложения будет осуществляться на основе интерфейса организованного веб-формой. Такая форма может передавать данные двумя способами, в зависимости от значения атрибута "METHOD".

В случае ...< ...FORM METHOD="GET" ...>... данные передаются через строку адреса браузера и записываются в переменную системного окружения QUERY_STRING, а размер строки данных в переменную CONTENT_LENGTH.

В случае ...< ...FORM METHOD="POST" ...>... передаваемые данные в строке адреса не отображаются, а передаются через стандартный поток ввода консольной программы.

Таким образом задача получения данных CGI-приложением сводится к чтению определенной переменной системного окружения. Надо отметить, что передаваемые веб-формой данные имеют следующий формат:

<имя_атрибута1>=<значение_атрибута1>&<имя_атрибута2>=<значение_атрибута2>...

Рассмотрим пример, когда данные передаются через строку адреса браузера, т.е. в случае ...<FORM METHOD="GET" ...>...

Разрабатываемое приложение, которое выдает различную информацию в зависимости от параметров, указанных в адресной строке браузера.

===cut==

program CgiDate;

{$APPTYPE CONSOLE} // директива, задающая тип приложения Win32 - консоль

{$E cgi} // директива, задающая расширение приложения - cgi

uses SysUtils;

begin

writeln ('CONTENT-TYPE: TEXT/HTML');

writeln;

writeln ('<HTML><HEAD>');

writeln ('<TITLE>Cgidate</TITLE>');

writeln ('</HEAD><BODY>>');

writeln ('<H1>Пример передачи параметров</H1>');

if ParamCount >0 then

begin

if ParamStr (1) = 'date' then

writeln (FormatDateTime('"Сегодня " dddd, mmmm d, yyyy', Now))

else if ParamStr (1) = 'time' then

writeln (FormatDateTime('"Время" hh:mm:ss AM/PM', Now))

else if ParamStr (1) = 'both' then

writeln (FormatDateTime('"Сегодня " dddd, mmmm d, yyyy,'

+ '"<p> и время" hh:mm:ss AM/PM', Now))

else

writeln ('Ошибка! Неверный параметр: ' + ParamStr (1) + '.')

end

else

writeln ('Параметр отсутствует.');

writeln ('</BODY></HTML>');

end.

===cut==

Далее вводим в адресной строке браузера путь к серверному приложению с указанием передаваемого параметра (http://localhost/файл_сервер.cgi?time). В результате будет сгенерирована страница, отображающая текущее время. Замените параметр time, на date и both. Результат работы продемонстрируйте преподавателю.

На основе задания предыдущей части разработайте клиентское приложение в котором тэг устанавливающий ссылку на приложение сервер измените следующим образом:

===cut==

<A HREF="http://localhost/имя_файл_сервер.cgi?time">

===cut==

Обратите внимание на то, как передаются данные через url. Знак вопроса отделяет параметр от адреса файла, с помощью знака равенства web-приложению передается значение данного параметра. Так как в адресной строке нельзя использовать пробел, он заменяется на шестнадцатеричный код в таблице ASCII, то есть %20. Так параметры вводимые в строку поиска «Яндекс» далее передаются методом GET.

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

Передача параметров при использовании инструментальных средств языка PHP приведены в приложении Б.

Передача и обработка параметров с помощью PHP

Рассмотрим пример. Создайте при помощи языка HTML следующую экранную форму (рис. 1). При выполнении примера используйте информацию представленную в приложениях А и Б.

Иногда возникает необходимость узнать значение какой-либо переменной окружения, например метод, использовавшийся при передаче запроса или IP-адрес компьютера, отправившего запрос. Получить такую информацию можно с помощью функции getenv(). Она возвращает значение переменной окружения, имя которой передано ей в качестве параметра.

<? getenv("REQUEST_METHOD");

// возвратит использованный метод

echo getenv ("REMOTE_ADDR");

// выведет IP-адрес пользователя,

// пославшего запрос

?>

Перечень часто используемых переменных окружения: GATEWAY_INTERFACE - поддерживаемая версия CGI; REQUEST_METHOD - метод запроса, может быть как GET так и POST; TTP_REFERER - адрес страницы (url), активирующей текущее приложение на web-сервере; PATH_INFO - путь переданный приложению расположенный между именем приложения и строкой запроса; QUERY_STRING - строка запроса, если метод - GET, добавляется к url; REMOTE_HOST - имя хоста удаленного пользователя; REMOTE_USER - имя удаленного пользователя; REMOTE_IDENT - IP-адрес удаленного пользователя; HTTP_USER_AGENT - имя и версия браузера удаленного пользователя.

Рассмотрим пример программного кода, который выводит имя и фамилию пользователя, занесенные в экранную форму веб-страницы, и выдает данные о компьютере пользователя.

<html>

<head><title></title></head>

<body bgcolor="Black" text="ffffff">

<?php

if (!$_POST['name'])

{

echo "Введите Ваше имя";

exit();

}

if (!$_POST['fam'])

{

echo "Введите Вашу фамилию";

exit();

}

echo $http_user_agent;

echo "Приветствую Вас ".$_POST['name']." ".$_POST['fam']."!!!";

echo "<p> Вот что мы о вас выяснили:<br>

О ситеме: ".$_SERVER['HTTP_USER_AGENT'].

"<br>Метод передачи: ".$_SERVER['REQUEST_METHOD'].

"<br>Вы пришли со страницы: ".getenv("HTTP_REFERER").

"<br>Ваш IP адрес: ".getenv ("REMOTE_ADDR").

"<br> Имя Вашего компа: ".getenv ("REMOTE_USER").

"<br> Имя Вашего хоста: ".getenv ("REMOTE_HOST");

if (strpos($_SERVER['HTTP_USER_AGENT'],"Win")) echo "<br>У Вас Windows! То-то дует!";

if (strpos($_SERVER['HTTP_USER_AGENT'],"Linux")) echo "<br>У Вас Linux!!!";

if (strpos($_SERVER['HTTP_USER_AGENT'],"MSIE")) echo "<br>Internet Explorer";

if (strpos($_SERVER['HTTP_USER_AGENT'],"Netscape")) echo "<br>Netscape";

if (strpos($_SERVER['HTTP_USER_AGENT'],"Firefox")) echo "<br>Firefox!";

if (strpos($_SERVER['HTTP_USER_AGENT'],"Opera")) echo "<br>Opera...";

?>

</body>

</html>

Задание

На основе данных о пользователе, которые будут считываться с формы, реализованной в виде HTML-документа, создать клиент-серверное приложение, обрабатывающего данные о пользователе. Рассмотреть передачу параметров клиент-серверного приложения методом get и post.

  1. Реализуйте предложенный пример.

  2. Создайте форму ввода данных о пользователе (ФИО, e-mail, телефон). Напишите скрипт, который проверяет правильность заполнения полей формы.

  3. Реализуйте тест ЗНАЕТЕ ЛИ ВЫ СЕБЯ. Ученые установили, что если из двух полушарий ведущим является правое полушарие мозга, то у человека преобладает эмоциональная сфера. Если ведущим оказывается левое полушарие, то у человека аналитический склад ума преобладает над эмоциональностью. Предлагаемый тест как раз и позволяет выявить ведущее полушарие. Это является признаком врожденным и, как правило, не меняется до конца жизни.

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

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

Вопрос N 3. Если при переплетении рук на груди наверху оказывается левая рука, то вы способны к кокетству, правая - склонны к простоте и простодушию.

Вопрос N 4. Если удобнее хлопать правой рукой, можно говорить о решительном характере, левой - вы часто колеблетесь, прежде чем принять решение.

ПППП - для вас характерен консерватизм, ориентация на общепринятое мнение (на стереотип). Вы не любите конфликтовать, спорить и ссориться.

ПППЛ - определяющая черта вашего характера - нерешительность.

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

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

ПЛПП - тип характера, сочетающий аналитический склад ума и мягкость. Чаще встречается у женщин - тип "деловой женщины". Медленное привыкание, осторожность, в отношениях терпимость и некоторая холодность.

ПЛПЛ - слабый и самый редкий тип характера. Обладатели такого харак- тера беззащитны, подвержены различному влиянию. Встречается, как правило, у женщин.

ЛППП - такое сочетание встречается очень часто. Основная черта - эмоциональность, сочетающаяся с недостаточной настойчивостью.

ЛППЛ - для вас характерны мягкость, наивность. Требуете особого, внимательного отношения к себе - тип "маленькой королевы".

ЛЛПП - вам присущи дружелюбие и простота, некоторая разбросанность интересов, склонность к самоанализу.

ЛЛПЛ - в вашем характере преобладают простодушие, мягкость, доверчивость. Очень редкий тип характера, практически не встречается у мужчин.

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

ЛЛЛЛ - у вас антиконсервативный тип характера. Способны на старые вещи взглянуть по-новому. Характерны эмоциональность, эгоизм, упрямство, иногда переходящее в замкнутость.

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

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

ПЛЛП - у вас легкий характер. Вы счастливо умеете избегать конфликтов, любите путешествовать. Легко находите друзей. Однако вы часто меняете свои увлечения.

ПЛЛЛ - вам присущи непостоянство и независимость, желание все сделать самому. Способность анализировать помогает вам успешно решать сложные задачи. Обычно вы кажетесь мягким, но становитесь требовательным и даже жестоким, когда

Лабораторная работа № 2 Использование элементов управления ActiveX для создания динамических веб-страниц.

Создание высококачественных компонентов различными фирмами - производителями программных продуктов и построение собственных решений на базе готовых, многократно используемых и проверенных компонентов - в этом суть компонентного программирования. Наиболее широкое распространение получили компоненты, созданные на основе Com-технологии и называемые Com-объектами или элементами ActiveX. Написанный ActiveX-компонент вставляется в HTML-страничку. Вот пример простейшей странички

<HTML>

<HEAD>

<TITLE>Поиск</TITLE>

</HEAD>

<BODY>

<P ALIGN=CENTER>

<OBJECT ID="findword1" - {при помощи этого тэга компонент вставляется в страничку}

CLASSID="CLSID:47E50425-E611-11D3-970A-4854E82B17E6"

CODEBASE="C:\PATH\FINDWORDS.OCX">

</OBJECT>

</P>

</BODY>

</HTML>

В этом примере ActiveX-компонент, находящийся в файле C:\PATH\FINDWORDS.OCX вставляется в HTML-страничку.

Итак, тэг <OBJECT> вставляет в страничку ActiveX-компонент. Его атрибут CLASSID указывает идентификатор класса нашего компонента. ID="findword1" - имя объекта. Здесь можно указать любое имя. По нему в дальнейшем будем ссылаться на компонент в теле странички из скриптов-процедур обработки событий. Далее, для того, чтобы компонент мог использоваться прикладными программами, он должен быть зарегистрирован в реестре. Зарегистрировать его можно программой regsvr32.exe, которая по умолчанию находится в каталоге [System]. Например:

regsvr32 C:\PATH\FINDWORDS.OCX

Если при открытии странички Explorer не находит в реестре указанный компонент, то он ищет его в местоположении, указанном атрибутом CODEBASE. Здесь может быть полный путь к файлу, если он находится на жестком диске компьютера или даже URL-адрес со всеми сопутствующими атрибутами:

http://.../....../.......

Атрибут CLASSID является обязательным, а атрибут CODEBASE - необязательный. Для того, чтобы автоматизировать процесс написания скриптов для подсоединения ActiveX компонентов используется программа Microsoft ActiveX Control Pad, распространяемая по открытой лицензии. Эта программа предназначена для внедрения ActiveX-компонентов в HTML-странички. После внедрения ActiveX-компонента его определение выглядит следующим образом:

<OBJECT ID="findword1"

CLASSID="CLSID:47E50425-E611-11D3-970A-4854E82B17E6"

CODEBASE="C:\PATH\FINDWORDS.OCX">

<PARAM NAME="Visible" VALUE="-1">

<PARAM NAME="AutoScroll" VALUE="0">

<PARAM NAME="AutoSize" VALUE="0">

<PARAM NAME="AxBorderStyle" VALUE="1">

<PARAM NAME="Caption" VALUE="findword">

<PARAM NAME="Color" VALUE="2147483663">

<PARAM NAME="Font" VALUE="MS Sans Serif">

<PARAM NAME="KeyPreview" VALUE="0">

<PARAM NAME="PixelsPerInch" VALUE="96">

<PARAM NAME="PrintScale" VALUE="1">

<PARAM NAME="Scaled" VALUE="-1">

<PARAM NAME="DropTarget" VALUE="0">

<PARAM NAME="HelpFile" VALUE="">

<PARAM NAME="DoubleBuffered" VALUE="0">

<PARAM NAME="Enabled" VALUE="-1">

<PARAM NAME="BiDiMode" VALUE="0">

<PARAM NAME="Cursor" VALUE="0">

<PARAM NAME="filename" VALUE="nothing">

</OBJECT>

Данная программа сама подставляет полное определение компонента (например его CLASSID). Однако, полученный код в некоторых случаях приходится подправлять вручную. Так может потребоваться убрать явное указание высоты и ширины объекта.

Рассмотрим пример. Запустите MS ActiveX Control Pad, создайте раскладку с расположенным на ней компонентами надпись и кнопками. Для этого выполним команду «File-New HTML Layout». Появляется новая страница раскладки и палитра элементов Toolbox. В палитре сосредоточены основные управляющие элементы, также выполненные по технологии ActiveX. Используя технологию перетаскивания, разместим на страничке раскладки элемент «Label» с надписью «Цвет фона» и два элемента «OptionButton» с надписями "Желтый" и "Зеленый". Затем сгруппируем кнопки командой Edit-Group, обеспечив тем самым связь между ними. Далее запустим «Script Wizard». В диалоговой панели этого инструмента имеются три окна: для событий объектов, для используемых параметров объекта и для действий. Все данные представлены в виде иерархического дерева объектов. Необходимо написать три обработчика. Первый из них должен выполняться, когда раскладка только загрузилась. Второй должен вызываться, когда пользователь щелкнул на первой кнопке, а третий - при нажатии на вторую кнопку. Чтобы создать обработчик, необходимо выбрать в левой панели компонент и событие, которое нужно обработать. В нашем случае объект называется «Layout1», а событие, которое мы отслеживаем, «OnLoad». Его необходимо выделить. В правой панели параметров выберем первую кнопку OptionButton1 и ее свойство Value. Чтобы с момента загрузки эта кнопка была отмечена, зададим значение Value равным True, что соответствует помеченной кнопке. Для этого нажмите кнопку Insert Action, чтобы обработчик был сгенерирован, а затем нажмите кнопку Modify Value и введите значение True. Далее проделаем то же самое для кнопки OptionButton2, но установим ее значение Value в False. Для изменения цвета в процессе использования страницы, необходимо создать два обработчика событий Click кнопок OptionButton1 и OptionButton2, которые меняют цвет фона «Label» на желтый и зеленый соответственно. В правой панели параметров выберем первую кнопку элемент «Label» и его свойство BackColor и установим для каждой из кнопок соответствующее значение цвета. Сохраняем форму и вставляем ее в HTML-форму выполнив «Edit-Insert HTML Layout…».

Обратите внимание: Script Wizard можно использовать в двух режимах: вид дерева объектов и вид кода. В каждом отдельном случае вы можете выбрать любой из них, который более подходит для решения задачи.

Рассмотрим использование компонентов ActiveX имеющихся на компьютере – например компонент «Windows Media Player» выполнив «Edit-Insert Activex Control…». Выбираем компонент. Вставленную часть кода, а именно:

<OBJECT ID="WindowsMediaPlayer1"

CLASSID="CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6" STYLE="TOP:0pt;LEFT:140pt;WIDTH:256pt;HEIGHT:215pt;ZINDEX:1;">

<PARAM NAME="URL" VALUE="">

<PARAM NAME="rate" VALUE="1">

<PARAM NAME="balance" VALUE="0">

<PARAM NAME="currentPosition" VALUE="0">

<PARAM NAME="defaultFrame" VALUE="">

<PARAM NAME="playCount" VALUE="1">

<PARAM NAME="autoStart" VALUE="-1">

<PARAM NAME="currentMarker" VALUE="0">

<PARAM NAME="invokeURLs" VALUE="-1">

<PARAM NAME="baseURL" VALUE="">

<PARAM NAME="volume" VALUE="50">

<PARAM NAME="mute" VALUE="0">

<PARAM NAME="uiMode" VALUE="full">

<PARAM NAME="stretchToFit" VALUE="-1">

<PARAM NAME="windowlessVideo" VALUE="-1">

<PARAM NAME="enabled" VALUE="-1">

<PARAM NAME="enableContextMenu" VALUE="-1">

<PARAM NAME="fullScreen" VALUE="0">

<PARAM NAME="SAMIStyle" VALUE="">

<PARAM NAME="SAMILang" VALUE="">

<PARAM NAME="SAMIFilename" VALUE="">

<PARAM NAME="captioningID" VALUE="">

<PARAM NAME="enableErrorDialogs" VALUE="0">

<PARAM NAME="_cx" VALUE="9022">

<PARAM NAME="_cy" VALUE="7567">

</OBJECT>

вырезаем из формы и вставляем в файл «Layout1.alx» в котором была сохранена экранная форма с компонентами «Label» и «OptionButton». Удаляем компоненты «OptionButton», а вместо них размещаем один компонент «CommandButton». Сохраняем форму и далее открываем ее в блокноте. Заменяем метод выполняемый при нажатии на кнопку, для проигрывания файла «Clock.avi» следующим образом:

<SCRIPT LANGUAGE="VBScript">

<!--

Sub CommandButton1_Click()

WindowsMediaPlayer1.URL = "c:\clock.avi"

end sub

-->

</SCRIPT>

<DIV ID="Layout1" STYLE="LAYOUT:FIXED;WIDTH:564pt;HEIGHT:446pt;">

<OBJECT ID="CommandButton1"

CLASSID="CLSID:D7053240-CE69-11CD-A777-00DD01143C57" STYLE="TOP:231pt;LEFT:140pt;WIDTH:256pt;HEIGHT:58pt;TABINDEX:0;ZINDEX:0;">

<PARAM NAME="Caption" VALUE="CommandButton1">

<PARAM NAME="Size" VALUE="9031;2046">

<PARAM NAME="FontCharSet" VALUE="0">

<PARAM NAME="FontPitchAndFamily" VALUE="2">

<PARAM NAME="ParagraphAlign" VALUE="3">

</OBJECT>

<OBJECT ID="WindowsMediaPlayer1"

CLASSID="CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6" STYLE="TOP:0pt;LEFT:140pt;WIDTH:256pt;HEIGHT:215pt;ZINDEX:1;">

<PARAM NAME="URL" VALUE="">

<PARAM NAME="rate" VALUE="1">

<PARAM NAME="balance" VALUE="0">

<PARAM NAME="currentPosition" VALUE="0">

<PARAM NAME="defaultFrame" VALUE="">

<PARAM NAME="playCount" VALUE="1">

<PARAM NAME="autoStart" VALUE="-1">

<PARAM NAME="currentMarker" VALUE="0">

<PARAM NAME="invokeURLs" VALUE="-1">

<PARAM NAME="baseURL" VALUE="">

<PARAM NAME="volume" VALUE="50">

<PARAM NAME="mute" VALUE="0">

<PARAM NAME="uiMode" VALUE="full">

<PARAM NAME="stretchToFit" VALUE="-1">

<PARAM NAME="windowlessVideo" VALUE="-1">

<PARAM NAME="enabled" VALUE="-1">

<PARAM NAME="enableContextMenu" VALUE="-1">

<PARAM NAME="fullScreen" VALUE="0">

<PARAM NAME="SAMIStyle" VALUE="">

<PARAM NAME="SAMILang" VALUE="">

<PARAM NAME="SAMIFilename" VALUE="">

<PARAM NAME="captioningID" VALUE="">

<PARAM NAME="enableErrorDialogs" VALUE="0">

<PARAM NAME="_cx" VALUE="9022">

<PARAM NAME="_cy" VALUE="7567">

</OBJECT>

</DIV>

Вставляем полученную раскладку в Web-страницу выполнив команду Edit-Insert HTML Layout.

Лабораторная работа №3 «Доступ к базам данных»

Создание бд и таблиц с использованием phpMyAdmin. Запустите «xampp-control.Exe» и далее – сервер Apache и сервер бд MySql, как показано на рисунке.

Нажмите кнопку «Admin» в строчке «MySQL», далее введите имя БД и нажмите кнопку "Create":

Для создания таблицы щёлкните вкладку "Databases" и выберите БД, щёлкнув на ней:

Затем появится бокс "Create new table in database", где вы вводите имя таблицы и количество столбцов и нажимаете "Go":

Далее вы можете именовать столбцы и указать типы данных etc., как в предыдущем примере с SQL.

Заметьте, что здесь мы так же устанавливаем "id" как PRIMARY KEY используем AUTO_INCREMENT (A_I).

Вставка данных с использованием sql

Вы используете SQL для вставки данных в БД точно так же, как используете SQL для создания БД и таблиц. Синтаксис SQL-запроса таков:

INSERT INTO ИмяТаблицы(столбец1, столбец2, ...) VALUES(значение1, значение2, ...)

Можно обновлять несколько столбцов в одном SQL-операторе, указывая их в разделённом запятыми списке. Столбцы, не упомянутые в данном SQL-операторе, останутся пустыми.

Оператор SQL может выглядеть так:

$strSQL = "INSERT INTO people(FirstName,LastName,Phone,BirthDate) VALUES('Gus','Goose','99887766 ','1964-04-20')";

mysql_query($strSQL) or die(mysql_error());

Для отслеживания вводимых данных в структуре SQL-оператора рекомендуется использовать следующую форму записи:

strSQL = "INSERT INTO people(";

strSQL = strSQL . "FirstName, ";

strSQL = strSQL . "LastName, "

strSQL = strSQL . "Phone, ";

strSQL = strSQL . "birth) ";

strSQL = strSQL . "VALUES (";

strSQL = strSQL . "'Gus', ";

strSQL = strSQL . "'Goose', ";

strSQL = strSQL . "'99887766', ";

strSQL = strSQL . "'1964-04-20')";

mysql_query($strSQL) or die(mysql_error());

Здесь SQL-оператор строится с разделением предложения на небольшие части с последующим объединением их в переменную $strSQL.

Рассмотрим пример вставки данных уже в составе веб-страницы

<html>

<head>

<title>Вставка данных в БД</title>

</head>

<body>

<?php

// Соединение с сервером БД

mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());

// Выбор БД

mysql_select_db("mydatabase") or die(mysql_error());

// Построение SQL-оператора

$strSQL = "INSERT INTO people(";

$strSQL = $strSQL . "FirstName, ";

$strSQL = $strSQL . "LastName, ";

$strSQL = $strSQL . "Phone, ";

$strSQL = $strSQL . "BirthDate) ";

$strSQL = $strSQL . "VALUES(";

$strSQL = $strSQL . "'Gus', ";

$strSQL = $strSQL . "'Goose', ";

$strSQL = $strSQL . "'99887766', ";

$strSQL = $strSQL . "'1964-04-20')";

// SQL-оператор выполняется

mysql_query($strSQL) or die (mysql_error());

// Закрытие соединения

mysql_close();

?>

<h1>БД обновлена!</h1>

</body>

</html>

Получение данных при помощи sql-запроов

Для работы с базой в MySQL необходим файл, в котором содержатся параметры для доступа к базе данных в следующем виде.

<?php

$dblocation="localhost"; //имя сервера

$dbname="Spravochnik";//имя БД

$dbuser="root";//имя пользователя

$dbpasswd="";//пароль пользователя

$pnumber=30;

$dbcnx=@mysql_connect($dblocation,$dbuser,$dbpasswd);

// функция mysql_connect устанавливает соединение с сервером, который задается переменной $dblocation;

// проверка данных для соединения

if (!$dbcnx) {

echo "сервер БД недоступен";

exit();

}

@mysql_select_db($dbname,$dbcnx);// функция выбирает базу данных для дальнейшей работы;

if (!@mysql_select_db($dbname,$dbcnx))

{

echo "сервер БД недоступен";

exit();

}

// вывод сообщения об ошибке

function puterror ($message)

{

echo("<p>$mesagge</p>");

exit();

}

?>

SQL-запрос к таблицам БД возвращает результат в виде серии записей/records. Эти записи хранятся в так называемом наборе Записей/recordset. Набор записей можно охарактеризовать как род таблицы в памяти сервера, содержащей данные (записи), и каждая запись подразделяется на отдельные поля (или столбцы).

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

Следующий код показывает, как использовать mysql_fetch_array для прохода по набору записей:

<html>

<head>

<title>Запрос данных из таблицы</title>

</head>

<body>

<?php

// Соединиться с сервером БД

mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());

// Выбрать БД

mysql_select_db("mydatabase") or die(mysql_error());

// SQL-запрос

$strSQL = "SELECT * FROM people";

// Выполнить запрос (набор данных $rs содержит результат)

$rs = mysql_query($strSQL);

// Цикл по recordset $rs

// Каждый ряд становится массивом ($row) с помощью функции mysql_fetch_array

while($row = mysql_fetch_array($rs)) {

// Записать значение столбца FirstName (который является теперь массивом $row)

echo $row['FirstName'] . "<br />";

}

// Закрыть соединение с БД

mysql_close();

?>

</body>

</html>

Обратите внимание, как для каждой записи мы получаем содержимое столбца "FirstName", печатая $row['FirstName']. Аналогично мы можем получить содержимое столбца "Phone", печатая $row['Phone'], к примеру.