Язык программирования PHP



         

Решение задачи - часть 2


$num = $_GET["numbers"][$type]; // сколько элементов каждого типа нужно for ($i=1;$i<=$num;$i++){ // создаем $num строк для ввода $st.= "Введите имя $i-го элемента типа $type: "; $st.= "<input type=text name=names[$type][]><br>"; } // сохраняем тип и число необходимых // элементов ввода этого типа $st.= "<input type=hidden name=types[] value=$type>"; $st.= "<input type=hidden name=numbers[] value=$num><br>"; } $st .= "<input type=submit name=send value=send></form>"; return $st; // в переменной $st содержится код формы // для запроса имен } else echo "Select type"; } echo Ask_names(); // вызываем функцию и выводим // результаты ее работы ?>

Листинг 5.13. ask_names.php

Допустим, нужно создать два элемента типа «текстовая строка» и один элемент типа «текстовая область», как и отмечено в форме выше. Тогда скрипт ask_names.php обработает ее таким образом, что мы получим такую форму:


Рис. 5.2.  Форма для ввода названий создаваемых элементов

Введем в эту форму, например, строки «Название», «Автор» и «Краткое содержание». Эти данные будет обрабатывать скрипт task.php.

<? $show_file = "task_show.php"; /* файл, который будет обрабатывать данные созданной этим файлом формы */

function Create_element($type,$name){ // функция создает элемент ввода // по типу и названию switch($type){ case"string": $str .= "$name: <input type=text name=string[]><br>"; break; case "text": $str .= "$name: <textarea name=text[]></textarea><br>"; break; } return $str; } function Create_form(){ // функция создает форму // с нужными элементами global $show_file; $str = '<form action="'.$show_file.'">'; foreach ($_GET["types"] as $k => $type){ // перебираем типы элементов $num = $_GET["numbers"][$k]; // число элементов этого типа

for ($i=1;$i<=$num;$i++){ $arr = $_GET["names"][$type][$i-1]; // имя создаваемого элемента

$str .= Create_element($type,$arr); // вызываем функцию для // создания элемента } } $str .= "<input type=submit value=send></form>"; echo $str; } $crt = "Create_form"; $crt(); // вызываем функцию создания // формы Create_form ?>

Листинг 5.14. task.php

Результатом работы этого скрипта с входными данными, приведенными выше, будет следующая форма:


Рис. 5.3.  Пример формы, сгенерированной нашей программой




Содержание  Назад  Вперед