Динамическая генерация форм.


Прислал: Аркадий Бабулин [ 31.10.2001 @ 22:03 ]
Раздел:: [ Статьи по PHP ]


Динамическая генерация форм.

Иногда возникает необходимость в создании форм, содержание которых зависит от поведения пользователя или динамически изменяемых данных, которые берутся из базы данных. Как правило основную трудность на первых порах вызывает то, что содержимое тех же списков заранее неизвестно. Есть предложение рассмотреть пример, как это можно обойти.

Итак, вводная:
В некой БД существует таблица следующего вида:
NumberNameAddress
1AlexMoscow...
2PiterSt.Piter...
3PaulParis ...
.........

Соответственно в таблицу могут вноститься изменения со стороны пользователей. Задача состоит в том, чтовы вывести содержимое таболицы (размер которой заранее неизвестен) в список.
Итак приступим: <?php
...
// Процесс коннекта с базой опустим, это уже описано мною.
...
// Выбираем информацию из таблицы
$table = mysql_query("SELECT * FROM table" or die("Не могу сделать выборку из таблицы");
// Готовим форму
<form action="script.php">
<select name="list">
// Генерим список посредством цикла while
while ($res = mysql_fetch_array($table))
{
// Формируем строку списка
$out_string = $res["number"]." ".$res['Name"]." ".$res["Address"];
// Выводим сформированную строку
echo"<option value=".$res[number].">".$out_string."";
}
</select>
</form>
?>
Соответственно вид у нашего списка будет такой:

Таким приемом можно сгенерить любой список из любого источника, будь то база данных или обчный текстовый файл.
Код, для формирования списка из файла приведен ниже:
Робчее окно, сосвтоящее из двух фреймов:
<?php
<html>
<frameset rows="100,*" frameborder="1" bordercolor="#000000" framespacing="0">
<frame name="view" src="view.php">
<frame name="add" src="add.php">
</frameset>
</html>
?>
Скрипт для просмотра информации из файла (информация хранится в файле в виде <номер строки>:<Имя>. Как вы понимаете, формат записи может быть любым):
<?php
$viewfile = file("file.log");
echo"<html><head></head><body><form action=add.php method=POST>
<input type=hidden name=action value=del><select name=posist>";
for ($step=0;$step {
$positions = explode(":",$viewfile[$step]);
echo"