|
|
|
| На HTML-форме находится два "выпадающих списка", с помощью php-скрипта первый наполняется определенными значениями из таблицы БД, а каким образом можно реализовать, чтобы во время выбора значения в первом второй список наполнялся соответствующими значениями из другой таблицы??? | |
|
|
|
|
|
|
|
для: paulluk
(29.07.2008 в 15:19)
| | Аяксом это делается.
На чистом js писать долго. Могу, если надо, на jquery показать. | |
|
|
|
|
|
|
|
для: Axxil
(29.07.2008 в 15:25)
| | Покажи пожалуйста!!! | |
|
|
|
|
1.8 Кб |
|
|
для: paulluk
(29.07.2008 в 15:27)
| | Клиентский код. На коленке написал, не тестил. Пример классический, города по стране.
<html>
<head>
<script src="jquery.js"></script>
$(document).ready(function(){
$('#country').change(function(){
var country_id = this.options[this.selectedIndex].value;
loadCitiestList(country_id);
})
})
function loadCitiesList(country_id){
$.getJSON('getCitiesList.php',
{country_id:country_id},
function(data){
var str = '<select name="city">';
$.each(data,function(i,n){
str += '<option value="'+i+'">'+n+'</option>';
})
str += '</select>';
$('#country').append(str);
})
}
</head>
<body>
<select id="country">
<option>USA</option>
<option>Canada</option>
</select>
</body>
</html>
|
Далее надо нам заиметь преобразователь php array -> json . Есть куча методов, но я вытащил функцию из класса Д. Котерова (www.dklab.ru) и получил соотетствующий класс helper_jquery.php (в аттаче). Этот метод хорош тем, что не требует никаких расширений к php
Теперь есть всё для написания серверной стороны (файл getCitiesList.php):
<?
require_once "helper_jquery.php";
$jHelper = new jquery_helper();
// Функция выдаёт массив городов (из БД) в виде array(1=>'New York',2=>'Atlanta')
// Где гключ - id города в справочнике.
$list = getCitiesListByCountryId($_REQUEST['country_id']);
// преобразовываем php массив в JSON вид и возвращаем его обратно в Front end
echo $jHelper->php2js($list);
?>
|
Вот и всё. По аналогии можно реализовывать любые зависимые справочники
PS Для работоспособности, все файлы из этого примера должны лежать в одной папке. Или можно расставить пути самостоятельно. | |
|
|
|
|
|
|
|
для: Axxil
(29.07.2008 в 15:35)
| | готово. | |
|
|
|
|
|
|
|
для: Axxil
(29.07.2008 в 16:37)
| | Большое спасибо!!! | |
|
|
|
|