Главная страница
Навигация по странице:
Реализация теста посредством радиокнопок
А как же… Реализация теста посредством чекбоксов “в лоб”
Пример 7 (специально с ошибкой)
Пример 12 Ключ Значение
Лекция же именем. Но только имя это не простое, а… нет, не золотое, но особенное. Оно имеет вид $OR[]. Посмотрите на соответствующий пример
Основы web-программирования. Лекции 14 Сергей Львович Островский
Скачать 1.82 Mb.
Название
Лекции 14 Сергей Львович Островский
Дата
21.01.2019
Размер
1.82 Mb.
Формат файла
Имя файла
Основы web-программирования
.pdf
Тип
Лекции
#64660
страница
10 из 11
1
2
3
4
5
6
7
8
9
10
11
Таблица истинности логической операции операции "И"
0
1
0
1
Лекция
Результат работы этого скрипта показан на
рис
. 5.
Рис
. 5
Как видите, все работает. Но! Взгляните-ка на
рис.
6. Для пользователя не составляет никакого труда добраться до исходного кода скрипта!
Рис
. 6
Конечно,
можно применять массу ухищрений
, прятать код и т.п. Но в любом случае, если речь идет не об “игру- шечных”, а о серьезных тестах, проверять их нужно именно на стороне сервера, поскольку только в этом случае у пользователя нет возможности ни добраться до исходного кода/правильных ответов, ни вмешаться в работу про- веряющей программы.
Реализация теста посредством радиокнопок
Таблица истинности конъюнкции хороша тем, что ее можно просто реализовать и посредством радиокнопок.
Пользователь должен будет просто отметить единственное истинное значение в таблице (хотя это, конечно, уже серьезная подсказка ).
Рис
. 7
ФОрмы Приятные и ПОЛезные:
ОбрабОтка ФОрм на СтОрОне Сервера
Сам тест на радиокнопках разместим в файле
testANDradio.htm
, а обработчик — в файле
testANDradio.php
.
Код теста:
Таблица истинности логической операции операции "И"
0
1
0
1
Результат теста
Вы заполнили таблицу следующим образом:
0
1
0
1
Лекция
Как видите, здесь снова используется условная операция. В переменной
$AND
(напомним, что PHP-язык регистрово- зависимый, поэтому можно не опасаться такого названия переменной) передается значение value выбранной кнопки группы. Скрипт анализирует это значение и помещает его в таблицу. (Внимание! Если ни одна из кнопок не будет выбра- на, возникнет ошибка. От нее вам предстоит избавиться самостоятельно, выполняя задания к лекции.)
А как же… Реализация теста посредством чекбоксов “в лоб”
Мы ловко реализовали таблицу истинности конъюнкции на радиокнопках, но это, конечно, несколько искусствен- ный вариант. Реализовывать на радиокнопках дизъюнкцию уже очень неудобно (попробуйте ). Ну, можно, конечно,
отмечать ложное значение
, но это как-то… “криво”. Естественный вариант — флажки. Например, так (см.
рис
. 8):
Рис
. 8
Однако с флажками не все так просто. Впрочем, сначала реализуем этот вариант “в лоб”. В файле
testORcheckbox.htm
разместим тест, а в файле
testORcheckbox.php
— обработчик.
Тест:
Таблица истинности логической операции операции "ИЛИ"
0
1
0
1
Результат теста
ФОрмы Приятные и ПОЛезные: ОбрабОтка ФОрм на СтОрОне Сервера
Вы заполнили таблицу следующим образом:
0
1
0
1
0
Лекция
Исходный код
Результат выполнения
Комментарии и пояснения
echo "
Пример 2
";
$arr2=array(0=>1,1=>2,2=>3,
3=>4,4=>5);
echo "
";
print_r($arr2);
echo "
";
Пример 2
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
Этот пример отличается от первого лишь явным заданием значений ключей echo "
Пример 3
";
$arr3=array(2=>1,0=>2,3=>3,
4=>4,10=>5);
echo "
";
print_r($arr3);
echo "
";
Пример 3
Array
(
[2] => 1
[0] => 2
[3] => 3
[4] => 4
[10] => 5
)
Начинаем знакомиться с “чудесами”. Ви- дим, что ключи, как и было обещано, вов- се не обязаны идти подряд echo "
Пример 4
";
$arr4[0]=array(1,2,4);
$arr4[1]=array(4,5,6);
$arr4[2]=array(7,8,9);
echo "
";
print_r($arr4);
echo "
";
Пример 4
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 4
)
[1] => Array
(
[0] => 4
[1] => 5
[2] => 6
)
[2] => Array
(
[0] => 7
[1] => 8
[2] => 9
)
)
Вариант организации двумерного мас- сива. Ключами являются числа, значе- ниями — массивы echo "
Пример 5
";
$arr5=array("abc"=>1,0=>2,
"#ffffff"=>3,4=>4,"Петя"=>5);
echo "
";
print_r($arr5);
echo "
";
Пример 5
Array
(
[abc] => 1
[0] => 2
[#ffffff] => 3
[4] => 4
[Петя] => 5
)
Смешанные ключи — числа и строки echo "
Пример 6
";
$arr6[0]=array(1,"Петя",true);
$arr6["Маша"]="Вася";
$arr6[5]=array(7,8,3.14); echo "
";
print_r($arr6);
echo "
";
Пример 6
Array
(
[0] => Array
(
[0] => 1
[1] => Петя
[2] => 1
)
[Маша] => Вася
[5] => Array
(
[0] => 7
[1] => 8
[2] => 3.14
)
)
Идейно этот пример не отличается от предыдущих. Только здесь еще больше вариантов
1
ФОрмы Приятные и ПОЛезные: ОбрабОтка ФОрм на СтОрОне Сервера
Исходный код
Результат выполнения
Комментарии и пояснения
echo "
Пример 7
(специально с ошибкой)
";
echo "
";
echo $arr6[1];
echo "
";
Пример 7
(специально с ошибкой)
Notice: Undefined offset: 1 in Q:\home\
forms\www\arrays.php
Чтобы увидеть
представленное здесь со- общение об ошибке
, необходимо подна- строить Denwer. Сделайте следующее:
1.
Остановите Denwer.
2.
Найдите файл
/usr/local/php5/php.ini
(вы уже делали это на прошлом занятии).
3.
Измените строку 305.
Вместо error_reporting = E_ALL &
E_NOTICE
оставьте error_reporting = E_ALL
Таким образом вы включите предуп- реждения. После этого снова запустите
Denwer.
Что касается смысла ошибки, то он прос- той: в предыдущем примере мы не задали значение элемента массива с ключом 1.
Вот нам об этом и говорят echo "
Пример 8
";
$arr8[1][1]=3.14;
echo "
";
echo $arr8[1][1]."
";
print_r($arr8);
echo "
";
Пример 8
3.14
Array
(
[1] => Array
(
[1] => 3.14
)
)
Ничего нового. Просто показано, что можно сразу присваивать значения эле- ментам “двумерных массивов”
echo "
Пример 9
";
$arr9[]=3.14;
$arr9[]=32767;
$arr9[]="php";
echo "
";
print_r($arr9);
echo "
";
Пример 9
Array
(
[0] => 3.14
[1] => 32767
[2] => php
)
Наиважнейший пример! Он демон- стрирует, что если присваивать значения элементам массива без явного указания ключей, элементы будут нумероваться подряд автоматически. Эта возможность активно используется как раз при обра- ботке чекбоксов echo "
Пример 10
";
echo "
";
foreach ($arr9 as $elem) echo "$elem
";
echo "
";
for ($i=0;$i
echo "$arr9[$i]
";
Пример 10
3.14 32767
php
3.14 32767
php
В этом примере показаны два способа об- хода массива. Второй — традиционный
(надо
лишь запомнить
, что функция count возвращает количество элементов в мас- сиве). Традиционный способ можно при- менять далеко не всегда. В частности, его нельзя использовать в массивах, в которых ключи не образуют упорядоченную после- довательность. Тогда остается только цикл foreach. Это специальный цикл, который позволяет перебрать элементы произволь- ного массива. На каждом шаге цикла из- влекается значение очередного элемента echo "
Пример 11
";
echo "
";
foreach ($arr5 as $elem) echo "$elem
";
Пример 11
1 2
3 4
5
Здесь это показано как раз применитель- но к неупорядоченному массиву $arr5
(см. пример 5)
echo "
Пример 12
";
echo "
Ключ
Значение
";
foreach ($arr5 as $key=>$value) echo "
$key
$value
";
echo "
";
Пример 12
Ключ
Значение
abc
1 0
2
#ffffff
3 4
4
Петя
5
Последний пример показывает, что foreach умеет извлекать не только зна- чения элементов, но и ключи
Реализация теста
посредством чекбоксов с использованием массивов
Воспользуемся приемом, показанным в примере 9. Назовем все поля, соответствующие чекбоксам,
одним и тем
2
Лекция
же
именем. Но только имя это не простое, а… нет, не золотое, но особенное. Оно имеет вид
$OR[]
. Посмотрите на соответствующий пример:
1
2
3
4
5
6
7
8
9
10
11
написать администратору сайта