Практическая работа №1. Обработка данных формы
Цель работы: Приобретение навыков обработки данных текстовых полей.
Порядок выполнения работы:
1. Создайте каталог php2 и в нем файл forma.html. Создайте форму по следующему образцу:
6
Создайте файл обработчик формы, который должен выполнять следующие действия:
Проверку, все ли поля заполнены:
If ($_GET[nm]==’ ‘ or ($_GET[pass]==’ ‘ or ($_GET[email]==’ ‘)
{echo “Вы ввели не все данные”;
Exit; }
Выводить приветствие с указанием имени;
Формировать и отправлять письмо:
$komu=”xxx.ru”;
$tema=”Вопрос от “. $_GET[‘nm’].” “.$_GET[‘email’];
$text_p=$_GET[‘quest’];
mail($komu, $tema, $text_p);
echo “Ваш вопрос отправлен администратору”;
Вопросы для самоконтроля Какие типы переменных поддерживает язык PHP?
В чем отличие php-страницы и html-страницы?
Как передать переменную в php-страницу?
Какие параметры существуют у функции data()?
Что возвращает web-сервер при запросе php-страницы?
Практическая работа №1-2. Создание счетчика посещений
Цель работы:
Приобретение навыков использования функций обработки текстовых файлов.
Теоретический материал
fopen(имя файла, режим работы) – возвращает число – дескриптор открытого файла, по которому можно обращаться к открытому файлу.
Режим работы имеет 2 составляющие:
- способ работы с информацией (текстовый (t) и бинарный(b));
- способ работы с файлом:
Способ
| Описание
| r
| Файл открывается для чтения, указатель текущей позиции в начале файла. Если файла не существует, возникает ошибка
| r+
| Файл открывается для чтения и записи, указатель текущей позиции в начале файла. Если файла не существует, возникает ошибка
| w
| Создается пустой файл и открывается для записи, указатель текущей позиции в начале файла. Если файл существует, он перезаписывается
| w+
| Создается пустой файл и открывается для чтения и записи, указатель текущей позиции в начале файла. Если файл , он перезаписывается
| a
| Файл открывается для записи, указатель текущей позиции в конце файла. Если файла не существует, он создается
| a+
| Файл открывается для записи и чтения, указатель текущей позиции в конце файла. Если файла не существует, он создается
| flock (дескриптор файла, режим блокировки) – блокирует файл для использования других пользователей.
Режимы блокировки:
2- устанавливает блокировку;
3- снятие блокировки;
fgets(дескриптор файла) – считывает данные из файла.
ftruncate(дескриптор файла, размер) – обрезает данные из файла до заданного размера (указывается в байтах). Возвращает TRUE (при успешном выполнении) или FALSE.
fputs(дескриптор файла, данные) – осуществляет запись данных в файл.
fclose(дескриптор файла) – закрытие файла.
die(текст сообщения об ошибке) – выводит текст, переданный в качестве параметра, и осуществляет выход из программы.
Одновременное использование двух функций:
fopen() or die() – если результат выполнения первой функции FALSE, то в этом случае выполняется вторая функция.
Порядок выполнения работы
Количество посещений любой страницы хранится в текстовом файле с именем counter.txt.
Ввести код программы-счетчика посещений counter.php
$f=fopen(“counter.txt”, “a+t”) or die(“Невозможно открыть файл”);
flock( $f, 2);
$s = fgets($f);
$s+=1; // $s=$s+1;
ftruncate ($f, 0);
fputs ($f, $s);
flock ($f,3);
fclose($f);
echo $s;
?>
Открыть код страницы forma.html первой практической работы.
Добавить код для подключения счетчика в нижней части левой панели:
echo “Количество посещений – “; require_once(“counter.php”);
?>
Require_once(имя файла) – подключает модуль, имя которого указано в параметре. В качестве модуля используют программы PHP или HTML.
Заменить расширение файла: forma.php
Практическая работа №2. Вычисление значения функции
Цель работы: Закрепление навыков отладки PHP-кода.
Теоретический материал
Описание и вызов функций:
function first_function() { echo "Первая пользовательская функция"; function second_function() { echo "Вторая пользовательская функция"; }} first_function(); second_function(); ?>
Порядок выполнения работы:
Создать форму следующего содержания:
Написать обработчик данных формы, который представляет результаты в виде следующей таблицы:
Вопросы для самоконтроля:
Как описать функцию?
Как использовать математическую функцию?
Как считать данные с текстового поля формы?
Как выполнить PHP-код?
Практическая работа №3. Обработка данных формы. Использование массива
Цель работы:
Закрепление навыков обработки данных формы. Использование массива в программе.
Теоретический материал
В PHP существуют различные методы инициализации массивов:
1. простое присвоение значений
$car[] = "passenger car";
$car[] = "land-rover";
echo($car[1]); // выводит "land-rover"
?>
2. явное указание индекса массива:
$car[0] = "passenger car";
$car[1] = "land-rover";
echo($car[1]); // выводит "land-rover"
?>
3. использование конструкции array():
$car = array("passenger car", "land-rover");
echo($car[1]); // выводит "land-rover"
?>
4. явное указание индексов (в этом случае применяется оператор =>)
$car = array("passenger car", 5 => "land-rover", "station-wagon","victoria");
echo($car[0]); echo("<br>"); // выводит "passenger car"
echo($car[5]); echo("<br>"); // выводит "land-rover"
echo($car[6]); echo("<br>"); // выводит "station-wagon"
echo($car[7]); // выводит "victoria"
?>
5. индексами массива могут быть и строки:
$car = array("pc" => "passenger car", "lr" => "land-rover");
echo($car["lr"]); echo("<br>"); // выводит "land-rover"
echo($car["pc"]); // выводит "passenger car"
?> Для обработки элементов массива используют:
цикл FOREACH
foreach (array as [$key =>] $value)
{
statements;
}
Пример:
$car = array("passenger car", "land-rover", "station-wagon", "victoria");
foreach($car as $index => $val)
{
echo("$index -> $val <br>");
}
?>
Как видно из синтаксиса, переменная $key необязательна и может быть опущена:
echo(
"available cars: <br> <ul>"
);
$car = array("passenger car", "land-rover", "station-wagon","victoria");
foreach($car as $val)
{
echo("<li>$val</li>\n");
}
echo("</ul>");
?>
Порядок выполнения работы
Создать новую страницу с формой следующего вида:
Форма для регистрации студентов
В файле action.php, обрабатывающем эту форму, можно написать следующее:
$str = "Здравствуйте,".$_POST ["first_name"]." ".$_POST ["last_name"] ."! ";
$str.= "Вы выбрали для изучения курс по ". $_POST["kurs"];
echo $str;
?> 2. Написать обработчик формы 1.php для регистрации участников заочной школы программирования и после регистрации отправить участнику сообщение. По полученным сведениям от зарегистрировавшегося человека, скрипт генерирует соответствующее сообщение. Если человек выбрал какие-то курсы, то ему выводится сообщение о времени их проведения и о лекторах, которые их читают. Если человек ничего не выбрал, то выводится сообщение о следующем собрании заочной школы программистов.
// создадим массивы соответствий «курс-время» и «курс-лектор»
$time = array(“PHP”=>”14.30”, “LISP”=>”12.00”, “C++”=>”15.00”, “UNIX”=>”14.00”);
$lector= array(“PHP”=>”Васильев”, “LISP”=>”Иванов”, “C++”=>”Петров”, “UNIX”=>”Сидоров”);
define(“SIGN”, “С уважением, администрация”);// определяем подпись как константу
define(“MEETING_TIME”, “18.00”); // задаем время собрания
$date=”12 мая”;
$str=”Здравствуйте, уважаемый “.$_POST[“first_name”]. “ “. $_POST[“last_name”].”! ”;
$str .= “ Сообщаем Вам, что “;
$lect =””;
$kurses=$_POST[“kurs”];
If (!isset($kurses)) {
$event= “следующее собрание студентов”;
$str .= “$event состоится $date “. MEETING_TIME . “ ”;
} else {
$event= “выбранная Вами лекция состоится $date ”;
For ($i=0; $i < count($kurses); $i++) {
$k=$kurses[$i];
$lect = $lect . “- лекция по $k в $time[$k]”;
$lect . =” ваш лектор, $lector[$k])”
}
$event = $event . $lect . “ ”;
$str . =”$event”;
}
$str .= “ ” . SIGN;
echo $str
?>
3. Самостоятельная работа
Вариант1. Реализуйте тест: ЗНАЕТЕ ЛИ ВЫ СЕБЯ.
Ученые установили, что если из двух полушарий ведущим является правое полушарие мозга, то у человека преобладает эмоциональная сфера. Если ведущим оказывается левое полушарие, то у человека аналитический склад ума преобладает над эмоциональностью. Предлагаемый тест как раз и позволяет выявить ведущее полушарие. Это является признаком врожденным и, как правило, не меняется до конца жизни.
Вопрос N 1. Переплетите пальцы рук и вы заметите, что сверху всегда оказывается один и тот же палец, если левый - вы человек эмоциональный, правый - у вас преобладает аналитический склад ума.
Вопрос N 2. Попробуйте "прицелиться", выбрав себе мишень и глядя на нее через своеобразную мушку - карандаш или ручку. Правый ведущий глаз говорит о твердом, настойчивом, более агрессивном характере, левый - о мягком и уступчивом.
Вопрос N 3. Если при переплетении рук на груди наверху оказывается левая рука, то вы способны к кокетству, правая - склонны к простоте и простодушию.
Вопрос N 4. Если удобнее хлопать правой рукой, можно говорить о решительном характере, левой - вы часто колеблетесь, прежде чем принять решение.
ПППП - для вас характерен консерватизм, ориентация на общепринятое мнение (на стереотип). Вы не любите конфликтовать, спорить и ссориться.
ПППЛ - определяющая черта вашего характера - нерешительность.
ППЛП - для вас характерны кокетство, решительность, чувство юмора, артистизм. При общении с вами необходимы юмор и решительность. Очень контактный тип характера. Этот тип у женщин встречается наиболее часто.
ППЛЛ - редкий тип характера. Мягкий. Наблюдается некоторое противоречие между нерешительностью (левое аплодирование) и твердостью характера (правый ведущий глаз).
ПЛПП - тип характера, сочетающий аналитический склад ума и мягкость. Чаще встречается у женщин - тип "деловой женщины". Медленное привыкание, осторожность, в отношениях терпимость и некоторая холодность.
ПЛПЛ - слабый и самый редкий тип характера. Обладатели такого харак- тера беззащитны, подвержены различному влиянию. Встречается, как правило, у женщин.
ЛППП - такое сочетание встречается очень часто. Основная черта - эмоциональность, сочетающаяся с недостаточной настойчивостью.
ЛППЛ - для вас характерны мягкость, наивность. Требуете особого, внимательного отношения к себе - тип "маленькой королевы".
ЛЛПП - вам присущи дружелюбие и простота, некоторая разбросанность интересов, склонность к самоанализу.
ЛЛПЛ - в вашем характере преобладают простодушие, мягкость, доверчивость. Очень редкий тип характера, практически не встречается у мужчин.
ЛЛЛП - вы эмоциональный, энергичный и решительный человек, но часто наспех принимаете решения, которые приносят серьезные осложнения. Очень важен дополнительный тормозной механизм. Мужчины с таким характером менее эмоциональны.
ЛЛЛЛ - у вас антиконсервативный тип характера. Способны на старые вещи взглянуть по-новому. Характерны эмоциональность, эгоизм, упрямство, иногда переходящее в замкнутость.
ЛПЛП - самый сильный тип характера. Вас трудно в чем-либо убедить. Вы с трудом меняете свою точку зрения. Но в то же время вы энергичны, упорно добиваетесь поставленных целей.
ЛПЛЛ - вы настойчивы в достижении поставленных целей. Обладатели такого характера - люди неуступчивые, переубедить их порой оказывается невозможно. Они склонны к самоанализу, с трудом находят себе новых друзей.
ПЛЛП - у вас легкий характер. Вы счастливо умеете избегать конфликтов, любите путешествовать. Легко находите друзей. Однако вы часто меняете свои увлечения.
ПЛЛЛ - вам присущи непостоянство и независимость, желание все сделать самому. Способность анализировать помогает вам успешно решать сложные задачи. Обычно вы кажетесь мягким, но становитесь требовательным и даже жестоким, когда доходит до дела.
Практическая работа №4. Разработка БД товаров.
Цель работы:
Приобретение навыков создания и управления базой данных с помощью программы phpMyAdmin.
Теоретический материал
Структура базы данных TOVARS:
Таблица tovar, содержит учетные записи товаров
-
№
| Название поля
| Описание
| Тип
| 1
| id
| Поле-счетчик
| INT
| 2
| name
| Название товара
| VARCHAR (20)
| 3
| cost
| Стоимость
| INT
| 4
| kol
| Количество товара
| INT
| 5
| date
| Дата реализации
| DATE
|
Пример записей:
-
id
| name
| cost
| kol
| date
| 1
| Хлеб столовый
| 24
| 100
| 25.03.10
| 2
| Хлеб ржаной
| 20
| 50
| 27.03.10
|
Выбор данных:
SELECT column1,… FROM table WHERE definition ORDER BY col_name Добавление данных:
INSERT INTO table VALUES (value1, …) Удаление данных:
DELETE FROM table WHERE definition Основные функции для работы с MySQL:
int mysql_connect(string hostname, string username, string password) - создать соединение с MySQL. Функция возвращает параметр типа int, который больше 0, если соединение прошло успешно, и равен 0 в противном случае.
hostname – имя хоста, на котором находится база данных.
Username – имя пользователя.
Password – пароль пользователя.
int mysql_select_db(string database_name, int link_identifier) - выбрать базу данных для работы. Функция возвращает значение true или false
Database_name – имя базы данных.
link_identifier – ID соединения, которое получено в функции mysql_connect. (параметр необязательный, если он не указывается, то используется ID от последнего вызова mysql_connect)
int mysql_query(string query, int link_identifier) - функция выполняет запрос к базе данных. Функция возвращает ID результата или 0, если произошла ошибка.
query – строка, содержащая запрос link_identifier – см. предыдущую функцию.
int mysql_result(int result, int i, column) - функция возвращает значение поля в столбце column и в строке i.
int mysql_close(int link_identifier) - функция закрывает соединение с MySQL. Функция возвращает значение true или false.
link_identifier – см. выше.
Порядок выполнения работы
Открыть программу phpMyAdmin: набрать в строке браузера localhost и выбрать пункт phpMyAdmin.
В разделе Привелегии добавить нового пользователя homeuser со всеми правами.
В поле Создать новую БД ввести имя базы TOVAR – Создать (Create Database)
Создать таблицу tov:
В поле Имя ввести tov;
В поле Поля – число 5;
Кнопка Пошел.
Указать название полей таблицы и их тип. В поле Дополнительно указать auto_increment (автоматическое присвоение). Установить переключатель primary key(первичный ключ). Сохранить результат.
Ввести 4 записи для данных базы.
Создать папку lab4. В ней файл index.php, в котором описать код вывода данных таблицы на экран.
Пример кода:
echo "Создание базы данных ";
echo "Номер | Название | Цена | | width=20%>КоличествоПримечание | ";
$sqlhost="localhost"; $sqluser="homeuser"; $sqlpass=""; $bd="TOVARS";
// соединение с базой данных
mysql_connect($sqlhost,$sqluser,$sqlpass) or die ("нет доступа!".mysql_error());
// выбирает базу для последующей работы
mysql_select_db($bd) or die ("нет соединения".mysql_error());
$zap="SELECT * FROM tovar ORDER BY id";
// выполнение SQL-запроса выбора данных из БД
$zap_res=mysql_query($zap);
while (list($id, $name, $cena, $kol, $prim)=mysql_fetch_row($zap_res))
{
echo "
$id | $name | $cena | $kol | $prim | ";
}
echo " "; ?>
Разместить 2 кнопки Добавить запись и Удалить запись № и текстовое поле для указания № удаляемой записи.
Создать файл insert.php, в котором разместить форму для ввода данных в таблицу.
Пример кода:
if (isset($_REQUEST))
{
foreach($_REQUEST as $key=>$val)
{$key=$val;}
}
$sqlhost="localhost"; $sqluser="homeuser"; $sqlpass=""; $bd="TOVARS";
mysql_connect($sqlhost,$sqluser,$sqlpass) or die ("нет доступа!".mysql_error());
mysql_select_db($bd) or die ("нет соединения".mysql_error());
$zap="INSERT INTO tovar( name, cost, kol, prim) VALUES ($name, $cena, $kol, $prim)";
$zap_res=mysql_query($zap);
if (zap_res==true)
echo "Запись успешно добавлена"; else echo "Ошибка при записи данных";
?>
Создать файл delete.php, в котором описать код для удаления записи по заданному номеру.
Пример кода:
if (isset($_REQUEST))
{
$num=$_REQUEST[num];
}
$sqlhost="localhost"; $sqluser="homeuser"; $sqlpass=""; $bd="TOVARS";
mysql_connect($sqlhost,$sqluser,$sqlpass) or die ("нет доступа!".mysql_error());
mysql_select_db($bd) or die ("нет соединения".mysql_error());
$zap="DELETE FROM ‘tovar’ WHERE id = $num ";
$zap_res=mysql_query($zap);
if (zap_res==true)
echo "Запись успешно удалена";
else echo "Ошибка при удалении данных";
?>
|