Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Пример 5.6 Получение размера массива

 

<?php

$student["name"] = "Ann";

$student["surname"] = "Petrova";

$student["age"] = 20;

print count($student);

?>

 

В данном примере мы сначала создаем массив $student, а затем просим вывести на экран браузера результат работы функции count(). В качестве аргумента функции используем массив $student, количество элементов которого необходимо подсчитать. Результатом работы программы является появление на экране браузера числа 3.

 

Просмотр массива с помощью цикла foreach

Очень часто требуется вывести на экран браузера все элементы массива. Для выполнения этой операции лучше всего использовать инструкцию foreach.

 

Пример 5.7 Просмотр массива с помощью инструкции foreach

 

<?php

$students = array("Ira","Vadim","Alex","AnnМ);

foreach($students as $temp)

{

print "$temp<br>";

}

?>

 

В данном примере мы сначала создаем массив $students, состоящий из четырех элементов. Затем мы используем инструкцию foreach. В данном случае $students – это имя массива, который нужно просмотреть, а $temp – переменная, где будет временно храниться значение каждого элемента. Инструкция foreach работает следующим образом: сначала значение каждого элемента массива временно помещается в переменную $temp, а потом выводится на печать с помощью функции print, содержащейся в теле (между фигурных скобок) инструкции foreach. Элементы массива перебираются последовательно, один за другим. Результатом работы данной программы будет вывод на экран браузера следующего:

Ira

Vadim

Alex

An4n

Просмотр в цикле ассоциированного массива

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

Пример 5.8 Просмотр ассоциированного массива

<?php

$tel = array(

        "Max Koshelev" => "580-46-82",

"Ann Reish"=> "589-90-34",

"Pashsa Golikov" => "480-57-58"

            );

foreach ($tel as $key=>$temp);

{

       print "$key - $temp<br>";

}

?>

 

Здесь $tel – это имя массива, $key – переменная (ключ), в которой сохраняется имя каждого элемента массива, а $temp – переменная, где временно сохраняются значения каждого элемента.

Вывод этой программы выглядит следующим образом:

 

Max Koshelev - 580-46-82

Ann Reish - 589-90-34

Pashsa Golikov - 480-57-58

 

Сортировка простого массива с помощью функции sort()

Сортировка данных (т.е. расположение данных в некотором специальном порядке, например, по возрастанию или убыванию) является одним из наиболее важных применений компьютера.

Функция sort() принимает всего один аргумент – массив – и сортирует его в алфавитном порядке, если хотя бы один, из числа его элементов является строкой, и в числовом порядке, если все его элементы - числа. ­ Эта функция преобразует переданный массив.

 

Пример 5.9 Сортировка простого массива с помощью функции sort()

 

<?php

$abc = array("c", "a", "b");

sort($abc);

foreach($abc as $temp)

{         

print "$temp<br>";

}

?> 

  

Результатом работы программы будет вывод на экран элементов отсортированного массива $abc.

A

B

C

Функция sort() изменяет положение элементов внутри нашего массива. Если до начала сортировки при запросе элемента массива с нулевым индексом вы получили бы значение c, то после применения функции sort() результатом на аналогичный запрос будет значение a. Сортировка массива в обратном порядке выполняется функцией rsort().

Сортировка ассоциированного массива производится аналогично, только используются функции asort() (сортировка по значениям в порядке возрастания) и ksort() (сортировка по ключам). Для сортировки в обратном порядке используются функции arsort() и krsort() соответственно.

Задание для самопроверки

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

Решите ту же задачу, но элементы массива выведите в обратном порядке.

 

 

П.6.Работа с формами

Мы рассмотрели достаточное количество примеров, но всем им не хватало связи с реальностью. Пора приступать к работе. В Web-пространстве для передачи данных от посетителя Web-страницы на сервер используются HTML-формы. В PHP предусмотрены многочисленные средства для работы с формами.

 

Для работы с данными из формы в современных версиях PHP используются специальные переменные окружения, которые представляют собой ассоциативные массивы. Сейчас нас интересуют две такие переменные - $_POST и $_GET. Они используются при соответствующих методах передачи данных через форму (параметр method в теге form). Ключом в массивах является имя поля в форме, а значением – значение поля. Например, если в форме был выбран метод GET и было поле name для занесения имени пользователя, то файлу указанному в параметре action тега form будет передан массив с одним элементом. Доступен он будет следующим образом:

echo $_GET['name'];

А при методе POST:

echo $_ POST['name'];

Так чем же отличаются методы POST и GET? Об этом мы поговорим чуть позже.

Программа обработки данных, введенных пользовател ем

Для того чтобы материал был понятнее, до некоторого времени будем разделять HTML-текст и текст PHP-программы.

 

Пример 6.1 HTML-форма для ввода пароля доступа (файл primer6_1.html)

 

<html>

<head>

<title> Form </title>

 </head>

 <body>

<form action="primer6_2.php" method="GET">

Введите пароль: <input Type="password" Name = "pas" Size="10" Maxlength = "10">

<input Type="Submit" Value="Проверка пароля" Name = "go" >

</form>

 </body>

</html>

 

Мы создали форму, в которой есть модифицированное текстовое поле (текстовое поле типа password позволяет скрыть ввод пароля от посторонних наблюдателей) с именем “pas” и кнопка передачи данных “Submit”. Сделаем некоторые пояснения.

Рассмотрим дескриптор <form>. Дескриптор или тэг– это простой элемент разметки, который всегда имеет такой вид: <дескриптор>. Контейнером называется пара дескрипторов HTML в форме: <дескриптор> </дескриптор>. Элемент <дескриптор> служит для включения, а </дескриптор> для выключения одного и того же объекта.

Дескриптор <form> быть в начале каждой формы. При создании этого дескриптора указывается имя файла, находящегося на сервере, который будет обрабатывать, получаемую из формы информацию, и способ пересылки информации, задаваемый атрибутами ACTION и METHOD. ACTION – указывает на файл primer6_1.php, который должен обрабатывать данные полученные от формы. Поскольку мы указали здесь только имя файла, а путь к нему опустили, то этот файл должен находиться в том же каталоге на сервере, что и HTML–документы. METHOD – указывает, как следует отсылать информацию ее обработчику. Может принимать значение POST – при этом данные из формы передаются отдельно от URL обработчика, или GET – в этом случае информация из формы для передачи на сервер записывается в конец URL обработчика. Если сказать проще, разница между ними заключатся в том, будете вы видеть имена и значения предаваемых переменных вверху окна браузера или нет.

Дескриптор <Input> необходим для получения информации от пользователя. Параметр Type устанавливает нужный тип поля ввода, Name – указывает имя поля, Size –размер поля ввода в символах, Maxlength – устанавливает максимальное количество символов, вводимых в поле ввода.

Submit – кнопка, с помощью которой можно отправить на сервер данные, введенные в форму. Используя это значение с атрибутом VALUE, на кнопке можно установить любой текст.

На приведенном ниже рисунке можно посмотреть, какая форма у нас в итоге получилась.

 

Рис 6.1 HTML-форма для ввода пароля

 

Далее расположен файл с PHP-программой. Все данные из нашей формы будут поступать в этот файл, который будет их обрабатывать.

Пример 6.2 Обработчик HTML-формы для ввода пароля доступа ( файл primer6_2.php )

 

<?php

if ($_GET['pas'] == "17er0482")

{

print "Добро пожаловать!";

}

else

{

print "Незарегистрированный пользователь!";

}

?>

 

Как вы уже догадались, текст обработчика формы должен находиться в файле с именем primer6_2.php, и этот файл будет запускаться сервером тогда, когда пользователь нажмет кнопку передачи на форме. В программе мы обращаемся к единственной переменной $_GET['pas'], значение которой и просим ввести пользователя. Именно в эту переменную попадает значение пароля, который вводит пользователь. В самой PHP-программе мы сравниваем это значение с правильным (17er0482) и в зависимости от результатов сравнения принимаем решение о статусе пользователя.

 

Обработка элементов с многозначным выбором

В предыдущем примере у нас одному элементу соответствовало одно значение. Для того, чтобы обрабатывать информацию от элементов, которые позволяют выбирать сразу несколько значений из списка, необходимо использовать массивы. Рассмотрим небольшой пример с использованием тэга select.

 

Пример 6.3 HTML-форма с тэгом select (primer6_3.html)

 

<html>

<head>

<title>Form with select </title>

</head>

<body>

<form action="primer6_4.php" method="GET">

Ваш НИК: <input type="text" name="nick" size = "8" maxlength = "8">

<br>

Немного о себе: 

<br>

<textarea name="info" rows = "5" cols = "30">

</textarea>

<br>

Увлечения:

<br>

<select name = "interests[]" multiple>

<option> Компьютеры

<option> Спорт

<option> Активный отдых

<option> Книги

</select>

<br>

<input type="submit" value="Послать анкету" Name = "go">

</form>

</body>

</html>

Теперь в программе, предназначенной для обработки этой формы, значения, выбранные пользователем в элементе "interests[]", будут доступны как элементы массива $_GET['interests']. Вся полученная информация передается файлу primer6_3.php.На рисунке 6.2 вы увидите, как будет выглядеть наша форма.

 

Рис 6.2 Форма-анкета

 Пример 6.4 Обработка результатов анкетирования (файл primer6_4.php)

 

<?php

print "<h1>".$_GET['nick']."</h1><br>";

print "<b>Немного о себе<br>";

print $_GET['info']."<br>";

print "Мои увлечения</b><br>";

foreach($_GET['interests'] as $temp)

{

print "<i>".$temp."</i><br>";

}

?>

 

В нашей PHP-программе мы выводим на экран браузера значения переменных, полученных от формы ($_GET['nick'], $_GET[‘$info’] и массив $_GET[‘$interests’).

 

Расположение HTML-текста и PHP-программы на одной странице

 

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

PHP – это язык программирования, используемый на стороне сервера, конструкции которого вставляются HTML-текст. В отличие от обычного HTML-текста Web-страницы, программа PHP не передается браузеру, а обрабатывается интерпретатором PHP. Фрагменты HTML-текста остаются при этом без изменений, а операторы PHP выполняются и результат их обработки вставляется в HTML-текст, после чего они все вместе передаются браузеру клиента. Таким образом, для создания серьезного Web-проекта требуются два человека: дизайнер, обладающий тонким дизайнерским чутьем (работа заключается в размещении некоторого ресурса на Web-странице и в создании единого оформительского стиля), и программист, который пишет блоки программы, позволяющие оживить проект, сделать его интерактивным.

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

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

 

Пример 6.5 Охота на слово (файл primer6_6.php)

 

<?php

$real_word = "bike";

if ($_GET['word'] = = "")

{

print "Введите слово";

}

elseif ($_GET['word'] = = $real_word)

{

print "Вы победили";

}

else

{

print "Пробуйте еще";

}

?>

<html>

<head>

<title> Охота на слово</title>

</head>

<body>

<form method = "GET">

Я думаю, что загаданное слово: <input type="text" name="word">

<input type="submit" value="Ответ готов" name="go">

</form>

</body>

</html>

 

С начала у нас идет блок PHP команд, в котором мы через переменную $real_word задаем слово, которое необходимо угадать. У нас также инициализирована переменная $word, в ней хранится значение, которое вводит пользователь. Мы постоянно проверяем, идентичны ли значения этих двух переменных, в случае успеха поздравляем пользователя с победой, если нет, просим попробовать еще раз, а если пользователь забыл ввести слово, просим его выполнить эту несложную операцию. В HTML-блоке мы просто создаем форму в которой пользователь пробует угадать наше слово. Эта форма будет выводиться постоянно до прекращения работы программы, данные, вводимые в нее, будут при этом постоянно обновляться.

Обратите внимание на то, что у нас отсутствует атрибут ACTION дескриптора FORM. Это связано с тем, что у нас обработчик формы и сама форма располагаются в одном файле.

Перенаправление пользователя

 

Для простоты объяснения, под пользователем будем понимать человека, зашедшего на вашу Web-станицу, а под перенаправлением обыкновенную загрузку другого документа в браузере, без участия в этом процессе самого пользователя.

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

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

Послав браузеру заголовок “Location”, вы перенаправите пользователя на новую страницу. 

Немного модифицируем пример 6.5.

 

Пример 6.6 Перенаправление пользователя с помощью заголовка “Location”

 

<?php

$real_word = "bike";

if ($_GET['word'] = = "")

{

print "Введите слово";

}

elseif ($_GET['word']= = $real_word)

{

header("Location: winner.html");

}

else

{

print "Пробуйте еще";

}

?>

<html>

<head>

<title> Охота на слово</title>

</head>

<body>

<form method = "GET">

Я думаю, что загаданное слово: <input type="text" name="word">

</form>

</body>

</html>

 

Изменения довольно легко заметить, в случае, когда пользователь угадывает слово, программа перенаправляет его на страницу winner.html (не забудьте, что данная страница должна существовать). Поскольку мы указали после имени заголовка (Location:) только имя файла, а путь к нему опустили, то этот файл должен находиться в том же каталоге на сервере, что и HTML–документы.

 

Задание для самопроверки

Напишите “программу-калькулятор”, которая должна передать два числа, операцию, выполняемую над ними, и выдать результат на экран.

П.7.Работа с файлами

Включение файлов в документ

 

Хранение данных в переменных и массивах является временным; все эти данные теряются при завершении работы программы. Для постоянного хранения больших объемов данных используются файлы. Использование файлов очень удобно. Допустим, вы хотите узнать, подбирал ли кто-нибудь пароль к вашему ресурсу. Для этого достаточно создать файл, в который будут писаться все попытки неудачного ввода пароля пользователями, и проанализировать его (см. пример 7.8).

Для того, чтобы включить файл PHP-документ достаточно воспользоваться директивой include(). После этого текст PHP-программы во включаемом файле будет исполняться точно так же, как если бы он был записан во включающем файле непосредственно. Это удобно, когда вы хотите использовать одну и ту же программу в различных документах.

Функция include() требует одного аргумента – пути к файлу, который необходимо включить в документ.

 

Пример 7.1 Включение файлов в документ (файл primer7_1.php)

 

<html>

<head>

<title>Включение файлов в документ</title>

</head>

<body>

<?php

include("primer7_2.php");

?>

</body>

</html>

 



<== предыдущая лекция | следующая лекция ==>
Пример 4.3.1 Область видимости переменных 2 | Пример 7.2 Содержимое включаемого файла primer7_2.php
Поделиться с друзьями:


Дата добавления: 2018-10-18; Мы поможем в написании ваших работ!; просмотров: 233 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Студент может не знать в двух случаях: не знал, или забыл. © Неизвестно
==> читать все изречения...

2758 - | 2317 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.017 с.