Приемочный, сдаточный, контрольный и т.д. это гипотетические отделы. Писать реальные отделы посчитал не желательным. Извеняюсь что ввёл в заблуждение своей фантазией
Код формы:
[spoiler]
<html>
<head>
<meta charset="utf-8" />
<title>Ремонт - Поступление</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="selects.js"></script>
</head>
<body>
<?php
function sp_otdel() {
$dbc = mysqli_connect ('localhost', 'root', '', 'select3');
$query = "SELECT * FROM tbl_otdel ORDER BY name";
$query_res = mysqli_query ($dbc, $query);
$sp_otdel = array();
while($row = mysqli_fetch_assoc($query_res)) {
$sp_otdel[] = $row; }
return $sp_otdel; }
$sp_otdel = sp_otdel();
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<select name='sp_otdel' id='sp_otdel'>
<option value="0"> - Выберите отдел - </option>
<?php foreach($sp_otdel as $item) {echo "<option value='".$item['id']."'>".$item['name']."</option>";} ?>
</select><br /><br />
<select name='sp_category_tech' id='sp_category_tech' disabled="disabled">
<option value="0"> - Выберите категорию - </option>
</select><br /><br />
<select name='sp_num_tech' id='sp_num_tech' disabled="disabled">
<option value="0"> - Выберите номер - </option>
</select><br /><br />
</form>
</body>
</html>
[/spoiler]
Первый список формируется функцией при загрузке формы, после выбора значения в первом поле срабатывает скрипт и на основе этого значения формирует список категорий техники принадлежащий выбранному отделу. Второй список формируется кодом:
[spoiler]
<?php
$sp_otdel = @intval($_GET['sp_otdel']);
$dbc = mysqli_connect ('localhost', 'root', '', 'select3' );
$query = "SELECT tbl_number_tech.*, tbl_category.* FROM tbl_number_tech, tbl_category WHERE tbl_number_tech.id_location = $sp_otdel AND tbl_category.id = tbl_number_tech.id_category_tech GROUP BY tbl_category.category";
$regs = mysqli_query($dbc, $query);
if ($regs) {
$num = mysqli_num_rows($regs);
$i = 0;
while ($i < $num) {
$sp_category_tech[$i] = mysqli_fetch_assoc($regs);
$i++;
}
$result = array('sp_category_tech'=>$sp_category_tech);
}
else {
$result = array('type'=>'error');
}
print json_encode($result);
?>
[/spoiler]
Результат выборки возвращается обратно в JavaScript, откуда в форму в виде HTML кода.
После выбора категории техники на основе значения ПЕРВОГО и второго полей должен сформироваться третий список, НО значения второго поля я передаю по аналогии первой функции javascript'a, но вместе с со значением второго поля не могу передать значение ранее выбранного первого поля.
Этот код ждёт значения обеих предыдущих полей:
[spoiler]
<?php
$sp_category_tech = @intval($_GET['sp_category_tech']);
$sp_otdel = ; // Сюда нужно передать значение первого поля
$dbc = mysqli_connect ('localhost', 'root', '', 'select3' );
$query = "SELECT * FROM tbl_number_tech WHERE id_category_tech = $sp_category_tech AND id_location = $sp_otdel";
$regs = mysqli_query($dbc, $query);
if ($regs) {
$num = mysqli_num_rows($regs);
$i = 0;
while ($i < $num) {
$sp_num_tech[$i] = mysqli_fetch_assoc($regs);
$i++;
}
$result = array('sp_num_tech'=>$sp_num_tech);
}
else {
$result = array('type'=>'error');
}
print json_encode($result);
?>
[/spoiler]
Ещё меня немного удивила одно выражение в теме
Формирование связанных списков select произвольной вложенности, где в начале статьи приводится:
Цитата:
|
Для двух зависимых списков (я публиковал пример более 5 лет назад!) ситуация простая и понятная, но люди задают вопрос — а как развить пример для вложения 3х списков?
Ответ — никак. Придется менять практически все, потому слово — менять тут не подходит.
|
Более конкретно:
[spoiler]
$('#sp_category_tech').change(function () { // Функция запускает скрипт при изменении поля sp_category_tech
var sp_category_tech = $(this).val(); // Инициализирует переменную sp_category_tech и передаёт ей значение второго поля
var sp_otdel = $('sp_otdel').val(); // Тут переменной sp_otdel по замыслу должно быть передано значение первого поля, но этого не происходит.
... // тут всякий дисабл для полей
var url = 'get_num_tech.php'; // объявляется переменная url с именем скрипта для фомирования третьего списка
$.get(url, "sp_category_tech=" + sp_category_tech, // тут смутно представляю что с помощью get должен запуститься скрипт, которому передаются значения выбраных полей, но как это воплотить в код?
[/spoiler]