Возможно, вы захотите использовать AJAX для этого. Это техника, использующая PHP и Javascript, которая позволяет вашей странице получать новые данные с сервера без перезагрузки страницы. Это позволит вашей странице изначально получать только состояния с сервера, а затем получать соответствующие города и их данные из сценария PHP.
Итак, вам понадобится
Первая HTML-страница. Может быть статическим или сгенерированным PHP, но потребуется некоторый javascript, чтобы после выбора состояния из раскрывающегося списка состояний генерировался раскрывающийся список города.
a- Исходная HTML-страница с раскрывающимся списком состояний
b- Javascript, описанный выше
PHP-скрипт. Эта страница никогда не перейдет на «прямую» (скорее всего, вы не введете ее URL в браузер), но она будет целью запроса к серверу.
Ввод - параметр, указывающий, в каком состоянии
Output - выпадающий список городов, принадлежащих этому государству, и их значений.
Вы не указываете, в какой форме находятся ваши данные (я догадываюсь / надеюсь, что реляционная БД? БД документов не будет плохой, но CSV будет довольно сложной), но я постараюсь нарисовать грубый набросок описываемого мной PHP-скрипта на шаге 2.
getcities.php
<?php
$state = $_GET['state'];
$cityArray = getCityArray($state); //i won't delve into details here, but probably takes some database calls
echo "<select name='citySelect'>";
foreach($cityArray as $cur)
{
list($x,$y,$name) = array($cur['x'].$cur['y'],$cur['name']); //this is just to make the next line simpler. PHP extract function can do something similar too
echo "<option value='$x,$y'>$name</option>";
}
echo "</select>";
?>
Вы можете видеть, как это создает раскрывающийся список выбора / опции только с необходимыми элементами.
Javascript будет ответственным за вызов чего-то вроде getcities.php?state='NY'
и размещение вывода в элементе вашей страницы (вероятно, div)
Посмотрите основы Ajax, как это сделать. Такие библиотеки, как jQuery, могут значительно упростить Ajax.
РЕДАКТИРОВАТЬ - в ответ на ваши комментарии
Так что на своей странице вы можете сделать что-то вроде
<select name='state' id='stateSelect' onchange='loadCities()'>
<option value='' select='selected'>Please select a state</option>
<option value='alabama.html'>Alabama</option>
OPTIONS FOR EACH STATE HERE
</selecT>
<select name='city' id='citySelect'> //blank initially. gets filled when you pick a state
</select>
<script type='text/javascript'>
function loadCities()
{
$('#citySelect').load($('#stateSelect').val()); //this assumes files in same place. otherwise you might need to put a path here
}
</script>
По сути, если формат такой, как вы описали, все, что вам нужно сделать, это загрузить содержимое определенного файла HTML в <select>
i call citySelect
выше. Это может быть сделано полностью с помощью javascript, и с использованием библиотеки jQuery это довольно тривиально.