Создание выпадающего HTML списка с большим количеством записей с помощью PHP и MySQL

от автора

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

Мысль первая:

Использовать мультикрусор для добавления перед названиями городов тега:

<option> 

image

Возникает новая проблема: у данного тега есть атрибут «value=’ ‘», в который также необходимо вставить значение (в данном случае название города). Получается, выполняется почти двойная работа, и тут же вспоминаем что у нас не сотня записей, не две сотни а в перспективе тысячи. Данный метод для тех у кого есть вселенское терпение, а скорее всего даже для тех, кому просто нечем заняться.

Ладно, не будем об этом.

Мысль вторая:

Поискать готовое решение. Я искал, долго, настойчиво. Нашел кажется одно решение, и то, платное, но довольно качественное.

Мысль третья:

Написать самому, что я собственно и сделал. Далее я пошагово объясню что, как и куда.

Во-первых, нужно все-таки найти эти самые города. Лучше если это будет результат выведенный не в таблицах (например, с номерами регионов и с населением), а просто, в столбик.

Копируем вставляем в какой нибудь табличный процессор (например Excel). Я работаю под Ubuntu, поэтому покажу на примере LibreOffice Calc. Вставляем города во второй столбец, в первый столбец(во весь, как и в третий) вставляем символы " (‘ ", в третий " ‘) ". Должно получиться так:

image

Для чего все это? Объясню: все это нужно нам для SQL-запроса, который мы выполним чуть позже.

Далее, копируем все это и вставляем в редактор кода. Получается что-то на подобие этого:

image

Самое трудное позади. Теперь сформируем SQL запрос для создания таблицы в базе и занесения в нее наших данных. Выглядит он как-то так:

CREATE TABLE IF NOT EXISTS `city` (   `name` varchar(128) NOT NULL DEFAULT '' ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  INSERT INTO `city` (`name`) VALUES 

Далее вставляем ранее сформированный нами для запроса список городов. Должно получиться вот так:

image

Готовый файл прикреплен в конце статьи.
Просто импортируйте его например в 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

ссылка на оригинал статьи http://habrahabr.ru/post/266815/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *