52568.fb2 Курс "Язык программирования PHP" - читать онлайн бесплатно полную версию книги . Страница 73

Курс "Язык программирования PHP" - читать онлайн бесплатно полную версию книги . Страница 73

строка mysql_field_name (

ресурс result, целое field_offset)

строка mysql_field_type (

ресурс result, целое field_offset)

строка mysql_field_flags (

ресурс result, целое field_offset)

строка mysql_field_len (

ресурс result, целое field_offset)

Здесь result - это идентификатор результата запроса (например, запроса, отправленного функциями mysql_list_fields или mysql_query (о ней будет рассказано позднее)), а field_offset - порядковый номер поля в результате.

Вообще говоря, то, что возвращают функции типа mysql_list_fields или mysql_query, представляет собой таблицу, а точнее, указатель на нее. Чтобы получить из этой таблицы конкретные значения, нужно задействовать специальные функции, которые построчно читают эту таблицу. К таким функциям и относятся mysql_field_name и т.п. Чтобы перебрать все строки в таблице результата выполнения запроса, нужно знать число строк в этой таблице. Команда mysql_num_rows(ресурс result) возвращает число строк во множестве результатов result.

А теперь попробуем получить список полей таблицы Artifacts (коллекция экспонатов).

<?

$conn = mysql_connect(

"localhost","nina","123")

or die("Невозможно установить

соединение: ". mysql_error());

echo "Соединение установлено";

mysql_select_db("book");

$list_f = mysql_list_fields (

"book","Artifacts",$conn);

$n = mysql_num_fields($list_f);

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);

echo "<br>Имя поля: ". $name_f;

echo "<br>Тип поля: ". $type;

echo "<br>Длина поля: ". $len;

echo "<br>Строка флагов поля: ".

$flags_str . "<hr>";

}

?>

В результате должно получиться примерно вот что (если в таблице всего два поля, конечно):

Имя поля: id

Тип поля: int

Длина поля: 11

Строка флагов поля:

not_null primary_key auto_increment

Имя поля: title

Тип поля: string

Длина поля: 255

Строка флагов поля:

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

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

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

Синтаксис explode:

массив explode( строка separator,