Красносельский
Константин
Константинович

Компьютер и программы

Веб-дизайн

Справочники

Документация по CSS1

Настройка файла .htaccess

Коды ошибки http сервера

Подстановочные символы и регулярные выражения

Спецификация файла robots.txt

SSI – Server Side Includes

Таблица кодировки символов кириллицы

Нестандартные символы в HTML

Вторая таблица символов HTML

MIME Types (типы файлов)

 

Советы начинающим

Как в PHP поместить enum в массив

Советы начинающим Веб-дизайнерам: Что, где и зачем.

Правила плохого тона

WEB-уловки

Камень предкновения: верстка таблицами или блоками?

Рекомендации по разработке веб сайта

 

Анализ WEB-конъюнктуры. Создание лучшего сайта и его раскрутка.

Анализ WEB-конъюнктуры

Предисловие

Приручение поисковых машин

Уровень документа - все гениальное просто

Благоустройство нор для поисковых червей или как водить пауков по нашей паутине

Ускорение индексации сайта

Если гора не идет к Магомету

Индекс цитирования

Что это такое и с чем его едят

Приобретение веса в глазах общественности

Послесловие

Последние замечания по интернет-раскрутке

 

Приложения

А: «Рекомендации лучших пауководов»

Краткий комментарий.

Советы специалистов поисковой системы Rambler.

Использование файлов robots.txt.

Часто задаваемые вопросы.

Советы специалистов поисковой системы Aport.

Регистрация сайта в Апорте.

Советы специалистов поисковой системы Yandex.

Добавление страниц

Индексирование

Положение страницы на выдаче

Поиск со своей страницы

Ответы на часто задаваемые вопросы

 

Б: «1000 сверх-сайтов Рунета»

1000 сверх-сайтов Рунета

 

В: «Сто наиболее популярных поисковых слов»

Сто наиболее популярных поисковых слов

 

Г: «Где это сделать?»

Где это сделать?

 

Д: «Практическое руководство!!!»

Краткий комментарий.

Окна, ссылки и меню.

Ссылки и окна. Внешний вид и внутреннее содержание.

Организация ссылок. Всевозможные оглавления.

Если вам не нравятся фреймы, значит, вы не умеете их готовить.

Меню из выпадающих списков (javascript и CSS).

Многоуровневое раскрывающееся меню (javascript и CSS).

Работа с базами данных.

Обработка баз данных браузером посетителя

Обработка баз данных сервером (PHP)

Взаимодействие с посетителем

Отправка писем с веб-страницы.

Формы

Методы форм.

Создание на сайте PHP голосования.

Регистрация и контроль посетителей (PHP).

Интерактивность материала.

Создание гостевой книги на PHP.

Удаление записей из текстовых баз (PHP).

Заргузка файлов на сервер по HTTP-протоколу (PHP).

Разное.

Псевдослучайные элементы (PHP, javascript).

Точное определение имени и версии браузера с помощью JavaScript, SSI или PHP

Клоакинг и технология «Входных дверей».

Отложенное выполнение и выполнение с заданным интервалом (javascript)

Информация о размере, дате, собственные счетчики и протоколы посещений

 

 

 

Консультации

Экспорт и импорт новостей

PHP chmod – права доступа к файлам

WEB 2.0 – миф, или реальность?

Давно забытый AJAX

Способы хранения веб-страниц: документы FrontPage или базы данных

Как заработать на своем сайте?

FTP клиент, как настроить Total Commander

Знак собаки @ и подавление ошибок в PHP

AJAX

AJAX с точностью до наоборот, или как научить AJAX сохранять историю в браузере

 

Мониторинг веб сайтов и анализ поисковых запросов

Документация по Веб-дизайну

Желающим скачать PHP скрипт или JavaScript

 

Литература и поэзия

Гуманитарные науки

Мастерская

Хронология материалов

Обращение к посетителям

Скачать шрифты

Скачать рефераты

Создание web сайта на заказ

Создание веб сайтов (цены)

Веб-сайты, созданные мной (потенциальным заказчикам)

Полезные ссылки

Об авторе

Статистика сайта

 

Web На сайте

 

 

 

ТаблицейБлоками.

Как в PHP поместить enum в массив?

Последняя модификация: 10.08.2014 г

Страница загружена с адреса: http://webdesign.site3k.ru/sovet/enum_to_php_array.html

Моя студия веб-дизайна

Как в PHP поместить enum в массив

В очередной раз, работая с SQL-типом данных enum, решил посмотреть, как другие люди в PHP преобразуют тип enum в массив. Задал запрос в поиск гугла «php enum в массив» и начал просматривать результаты. После десятого стало грустно, и я решил написать об этом небольшую статью – ну нет в сети нормального алгоритма преобразования enum в массив средствами PHP!

Во-первых, что за запрос:

$sql = "show columns from $table like '$column'";

ну это же… нет слов, одни местоимения. Еще бы REGEXP применили, чтоб сервер загрузить по полной программе.

Но это далеко не все извращения, проделываемые ради превращения enum в массив PHP. Однако, не буду их перечислять, так как число бредовых решений множество, в то время, как правильных всего три.

Во-первых, для получения всех значений поля типа enum с именем «enum_field» из базы, имя которой хранится в константе basename, нужно выполнить запрос типа:

$sql="DESCRIBE ".basename." `enum_field`";// создать запрос для enum-поля enum_field
$result=mysql_query($sql) or die(mysql_error());// получить ответ
$records=mysql_num_rows($result);// получить количество записей
if($records){// если записи есть
	@$enum_ar=mysql_fetch_assoc($result);// получить запись в массив
	/* тут будет код для превращения enum в массив */
}
mysql_free_result($result);// освободить память от результатов SQL-запроса.

Во-вторых, можно применить один из трех методов преобразования enum в PHP-массив.

Метод первый:

	preg_match_all("/'(.*?)'/i", $enum_ar['Type'], $ar);

В итоге, в элементе массива $ar с индексом 1, содержится массив всех значений enum-поля. Указанную выше строку нужно вставлять вместо «тут будет код…». Результат можно проверить, поместив в самом конце кода три строки:

echo '<pre>';
print_r($ar[1]);
echo '</pre>';

Метод второй:

Чтобы не менять проверочный код, а возможно и другие места программы, где использовался $ar[1] из первого метода, используем в нем тот же первый индекс массива $ar.

$ar[1]=explode(',',preg_replace('/^enum\((.*)\)$/i','${1}',str_replace("'",'',$enum_ar['Type'])));

Этот вариант более громоздкий по коду, но позволяет, при желании, обходиться без лишних индексов (использовать не $ar[1], а $ar).

Метод третий:

Так же позволяет использовать не $ar[1], а $ar, но использует жудкий eval, которого начинающие программисты боятся, как черт ладана.

eval('$ar[1]='.str_replace('enum','array',$enum_ar['Type']).';');

Таким образом, полный PHP код для получения enum в массив может выглядеть так:

<?php
$sql="DESCRIBE ".basename." `enum_field`";
$result=mysql_query($sql) or die(mysql_error());
$records=mysql_num_rows($result);
if($records){
	@$enum_ar=mysql_fetch_assoc($result);// получить запись в массив
	eval('$ar='.str_replace('enum','array',$enum_ar['Type']).';');
}
mysql_free_result($result);
// только для того, чтобы убедиться, что значения enum действительно попали в массив
echo '<pre>';
print_r($ar);
echo '</pre>';
?>

 

Комментарии к странице (всего 1)

 

 

 


На главную страницу сайта