Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Отображение списка полей в html-форму



Теперь немножко подкорректируем предыдущий пример. Будем не просто выводить информацию о поле, а отображать его в подходящий элемент html-формы. Так, элементы типа BLOB переведем в textarea (заметим, что поле description, которое мы создавали с типом TEXT, отображается как имеющее тип BLOB), числа и строки отобразим в текстовые строки ввода<input type=text>, а элемент, имеющий метку автоинкремента, вообще не будем отображать, поскольку его значение устанавливается автоматически.

Все это решается довольно просто, за исключением выделения из списка флагов флага auto_increment. Для этого нужно воспользоваться функцией explode.

Синтаксис explode:

массив explode(строка separator, строка string [, int limit])

Эта функция разбивает строку string на части с помощью разделителя separator и возвращает массив полученных строк.

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

Итак, создадим форму для ввода данных в таблицу Artifacts:

<?$conn=mysql_connect("localhost","nina","123"); // устанавливаем соединение$database = "book";$table_name = "Artifacts";mysql_select_db($database); // выбираем базу данных для // работы$list_f = mysql_list_fields($database,$table_name); // получаем список полей в таблице$n = mysql_num_fields($list_f); // число строк в результате // предыдущего запроса (т.е. сколько всего // полей в таблице Artifacts) echo "<form method=post action=insert.php>"; // создаем форму для ввода данныхecho "&nbsp;<TABLE BORDER=0 CELLSPACING=0 width=50% ><tr> <TD BGCOLOR='#005533' align=center><font color='#FFFFFF'> <b> Add new row in $table_name</b></font></td></tr><tr><td></td></tr></TABLE>";echo "<table border=0 CELLSPACING=1 cellpadding=0 width=50% >";// для каждого поля получаем его имя, тип, длину и флагиfor($i=0;$i<$n; $i++){ $type = mysql_field_type($list_f, $i); $name_f = mysql_field_name ($list_f,$i); $len = mysql_field_len($list_f, $i); $flags_str = mysql_field_flags ($list_f, $i); // из строки флагов делаем массив, // где каждый элемент массива - флаг поля $flags = explode(" ", $flags_str); foreach ($flags as $f){ if ($f == 'auto_increment') $key = $name_f; // запоминаем имя автоинкремента }/* для каждого поля, не являющегося автоинкрементом, в зависимости от его типа выводим подходящий элемент формы */if ($key <> $name_f){ echo "<tr><td align=right bgcolor='#C2E3B6'><font size=2> <b>&nbsp;". $name_f."</b></font></td>";switch ($type){ case "string": $w = $len/5; echo "<td><input type=text name=\"$name_f\" size = $w ></td>"; break; case "int": $w = $len/4; echo "<td><input type=text name=\"$name_f\" size = $w ></td>"; break; case "blob": echo "<td><textarea rows=6 cols=60 name=\"$name_f\"></textarea></td>"; break; } } echo "</tr>";}echo "</table>";echo "<input type=submit name='add' value='Add'>";echo "</form>";?>

Листинг 11.0.1. Форма для ввода данных в таблицу Artifacts





Дата публикования: 2015-01-24; Прочитано: 160 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...