Буквально сегодня, столкнулся с небольшой проблемой. Необходимо было создать выпадающий список городов России. На первый взгляд ничего сложного, но, когда речь идет о тысячах записей, на ум приходят мысли, что это может немного притормозить проект. По ходу статьи рассмотрим очень интересный метод, по созданию списка, с большим количеством записей в короткие сроки.
Мысль первая:
Использовать мультикрусор для добавления перед названиями городов тега:
<option>
Возникает новая проблема: у данного тега есть атрибут «value=’ ‘», в который также необходимо вставить значение (в данном случае название города). Получается, выполняется почти двойная работа, и тут же вспоминаем что у нас не сотня записей, не две сотни а в перспективе тысячи. Данный метод для тех у кого есть вселенское терпение, а скорее всего даже для тех, кому просто нечем заняться.
Ладно, не будем об этом.
Мысль вторая:
Поискать готовое решение. Я искал, долго, настойчиво. Нашел кажется одно решение, и то, платное, но довольно качественное.
Мысль третья:
Написать самому, что я собственно и сделал. Далее я пошагово объясню что, как и куда.
Во-первых, нужно все-таки найти эти самые города. Лучше если это будет результат выведенный не в таблицах (например, с номерами регионов и с населением), а просто, в столбик.
Копируем вставляем в какой нибудь табличный процессор (например Excel). Я работаю под Ubuntu, поэтому покажу на примере LibreOffice Calc. Вставляем города во второй столбец, в первый столбец(во весь, как и в третий) вставляем символы " (‘ ", в третий " ‘) ". Должно получиться так:
Для чего все это? Объясню: все это нужно нам для SQL-запроса, который мы выполним чуть позже.
Далее, копируем все это и вставляем в редактор кода. Получается что-то на подобие этого:
Самое трудное позади. Теперь сформируем SQL запрос для создания таблицы в базе и занесения в нее наших данных. Выглядит он как-то так:
CREATE TABLE IF NOT EXISTS `city` ( `name` varchar(128) NOT NULL DEFAULT '' ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `city` (`name`) VALUES
Далее вставляем ранее сформированный нами для запроса список городов. Должно получиться вот так:
Готовый файл прикреплен в конце статьи.
Просто импортируйте его например в phpMyAdmin.
Создаем файл «city.php». Содержание файла:
<?php $cities_db = mysqli_connect ("localhost"," *Имя_пользователя* "," *Пароль* "," *Название_Базы* "); mysqli_query($cities_db,"SET NAMES 'utf8'"); $result = mysqli_query($cities_db,"SELECT name FROM city ORDER BY name"); while ($row = mysqli_fetch_assoc($result)) { $city = $row['name']; echo "<option value='$city'>$city</option>"; } ?>
Подключаемся к базе, «вытаскиваем» записи и в цикле, создаем записи выпадающего списка вставляя название города и в атрибут value и между тегами. И, в необходимом месте нашего главного документа, просто подключим все это через include.
<select name="city" id="" name="city"> <?php include('city.php') ?> </select>
Результат, меня, честно, очень порадовал. Не смотря на то, что нужно затронуть PHP и MySQL, затрачивается в сотни раз меньше времени, чем просто «клепать» все это на HTML.
Все необходимые файлы я прикрепляю ниже. Спасибо за внимание! Успехов!
ссылка на оригинал статьи http://habrahabr.ru/post/266815/
Добавить комментарий