Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LABS-all-OTIS.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.43 Mб
Скачать

2.3. Відображення списку полів у 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 "<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> ". $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>";

?>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]