Мысль первая:
Использовать мультикрусор для добавления перед названиями городов тега:
<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.
Все необходимые файлы я прикрепляю ниже. Спасибо за внимание! Успехов!
Файл city.php
Файл city.sql
Комментарии (14)
amstr1k
14.09.2015 14:33+2это просто гениально! Данная статья действительно заслуживает инвайта! Спасибо, ждём еще :D
Lisio
14.09.2015 14:43Уж если используете Sublime Text и в курсе про мультикурсор, то зачем вообще надо было использовать LibreOffice Calc?
la0
14.09.2015 14:46+1Ладно, абстрагируюсь от «это что, серьезно, статья на Хабре» и добавлю комментарий по сути дела:
СУБД в такой постановке задачи совершенно не нужен, проще уж сгенерировать php-файлик $a=array('a','b'.....); или не php, а JS и собирать селект на клиенте.
А еще лучше: прикрутить автокомплит
Плюс есть еще куча решений, намного лучше как описанного в посте, так и в и в этом комментарии.
amstr1k
14.09.2015 14:50Есть же прекрасная замена в которой можно использовать регулярки. Давайте следующий экстеншен в студию с автокомплитом
kentastik
14.09.2015 14:51+1Статья оправдана, если автору 12 лет.
Посмотрел профиль… нет, это всё же фэил.
webportal
14.09.2015 14:55+1О господи! http://joxi.ru/QY2LOqMSaNbOm6 http://joxi.ru/L4AkDO5hZ4YDrq
Можно было в один твит уместить!berezuev
14.09.2015 14:58+1Там еще нужно букву ё к «а-я» дописать, ибо саблайм ее не распознает просто так…
Core2Duo
14.09.2015 15:04+1Саблайм тут ни при чем, это проблема регулярных выражений в принципе. А если быть точнее, то кодировок, которые ими используются.
Отдельное внимание следует уделять буквам с диакритическими знаками, наподобие русских Ё/ё, которые, как правило, разбросаны вне основных диапазонов символов.
WebMonet
Эпик Фейл…