Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Список с многоуровневой зависимостью / 6 сообщений из 6, страница 1 из 1
21.01.2017, 11:50
    #39388870
dfii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список с многоуровневой зависимостью
Я не программист, я по железу.
Но прижало и возникла необходимость создать для поступающей на ремонт техники создать небольшую бд.
Для регистрации техники выбираем из динамических списков сначало отдел, далее с помощью javascript для второго окна формируется список категории техники отфильтрованный в запросе во выбранному ранее отделу, список для третьего окна должен фильтроваться как по выбранной категории, так и по выбранному отделу, но вот как получить значение выбраного отдела ума не приложу. Чтобы закончить свой проект, осталось решить только эту задачу, но времени в связи с загруженностью на изучение теории нет. Данные задачи приложил. Данные в бд для простоты урезал.
...
Рейтинг: 0 / 0
21.01.2017, 15:14
    #39388903
dfii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список с многоуровневой зависимостью
Попробую развернуть вопрос
="Код формы со списками 'addremont.php"
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
<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>


                
                <select name='sp_category_tech' id='sp_category_tech' disabled="disabled">
     		<option value="0"> - Выберите категорию - </option>
                </select>



                <select name='sp_num_tech' id='sp_num_tech' disabled="disabled">
	         	<option value="0"> - Выберите номер - </option>
                </select>


	</form>
</body>
</html>



В нём к первому и второму полям формы нет нареканий. Для третьего необходимо сформировать список, который будет зависеть от выбора значения в первом и втором полях.

="JavaScript для динамической обработки формы 'select.js'
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
$(document).ready(function () {
	$('#sp_otdel').change(function () {
		var sp_otdel = $('#sp_otdel').val();
		var url = 'get_category_tech.php';
		
		$.get(
			url,
			"sp_otdel=" + sp_otdel,
			function (result) {
				if (result.type == 'error') {
					alert('error');
					return(false);
				}
				else {
					var options = ''; 
					
					$(result.sp_category_tech).each(function() {
						options += '<option value="' + $(this).attr('id_category_tech') + '">' + $(this).attr('category') + '</option>';
					});
					
					$('#sp_category_tech').html('<option value="0"> - Выберите категорию - </option>'+options);
					$('#sp_category_tech').attr('disabled', false);
							
				}
			},
			"json"
		);
	});


$('#sp_category_tech').change(function () {
var sp_category_tech = $(this).val();
		 if (sp_otdel == '0') {
		$('#sp_num_tech').html('<option>- Выберите номер -</option>');
		$('#sp_num_tech').attr('disabled', true);
		return(false);
	}
	$('#sp_num_tech').attr('disabled', true);
		$('#sp_num_tech').html('<option>загрузка...</option>');
		 		var url = 'get_num_tech.php';
		
		$.get(
			url, 
			"sp_category_tech=" + sp_category_tech,
			
			function (result) {
				if (result.type == 'error') {
					alert('error');
					return(false);
				}
				else {
					var options = ''; 
					$(result.sp_num_tech).each(function() {
						options += '<option value="' + $(this).attr('id') + '">' + $(this).attr('num') + '</option>'; 
						
					});
					$('#sp_num_tech').html('<option value="0"> - Выберите номер - </option>'+options);		
					$('#sp_num_tech').attr('disabled', false);
					
	}
			},


			"json" 
		);
	});	
});



При выборе значения во втором окне JavaScript запускает файл sp_num_tech.php и передаёт ему это значение. Но список третьего окна зависит ещё и от значения первого окна, которое, к сожалению, я и не могу найти способ как отправить вместе со значением второго окна.

="Код для формирования третьего списка 'sp_num_tech.php'
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<?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); 
?>

...
Рейтинг: 0 / 0
23.01.2017, 15:28
    #39389567
mage.lan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список с многоуровневой зависимостью
dfii,

наверное надо так?
Код: javascript
1.
2.
3.
4.
5.
6.
$('#sp_category_tech').change(function () {
var sp_category_tech = $(this).val();

var sp_otdel = $('#sp_otdel').val();

		 if (sp_otdel == '0') {
...
Рейтинг: 0 / 0
24.01.2017, 03:53
    #39389981
dfii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список с многоуровневой зависимостью
Подобное я пробовал, даже уж и не помню, принималось ли значение переменная sp_otdel в данном случае, но вот отправить две переменных за раз с помощью get не получается. Попробую ещё раз такой вариант.
Кстате нашёл выход, можно создать табличку для хранения оперативных данных, заносить туда значение полей, пользоваться ими в процессе заполнения формы а при отправки данных с формы в бд табличку чистить DELETE FROM.
...
Рейтинг: 0 / 0
24.01.2017, 11:26
    #39390127
mage.lan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список с многоуровневой зависимостью
dfii,

так вы их просто не отправляете во втором случае, надо как-то так
Код: javascript
1.
2.
3.
$.get(
	url, 
	"sp_category_tech=" + sp_category_tech + "&sp_otdel=" + sp_otdel,
...
Рейтинг: 0 / 0
25.01.2017, 16:23
    #39391302
dfii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список с многоуровневой зависимостью
О, то что надо, я пробывал такое, но через запятую, да асперанд, или как его там, короче & не указывал.
Огромное спасибо!!!
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Список с многоуровневой зависимостью / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]