Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   зависимые списки select (https://javascript.ru/forum/dom-window/47083-zavisimye-spiski-select.html)

zazula 08.05.2014 14:20

написала, все по-прежнему

zazula 08.05.2014 14:29

дак она и не может быть определена, пока не выбран параметр из первого списка, а как он может быть выбран, если списки select вообще не выводятся. Может быть нужно еще какое-то условие?

zazula 08.05.2014 14:30

добавила еще одно условие, теперь запрос не ругается, и зависимый список становится акивным, при выборе первого, но опять данные не видны

jsnb 08.05.2014 14:37

Я, если честно, уже не понимаю куда вы там чего надобавляли и чего у вас там где не выводится. Я просил вас только скопировать часть после return $arr в новый php файл и при этом ничего не менять в query.php и остальных файлах. Ну и в url параметре аякса написать имя файла в который был скопирован код. Но вы начали какие-то условия менять и еще чего-то непонтное делать. Я должен методом телепатии узнавать что вы там меняете что ли?

zazula 08.05.2014 14:55

Я разделила, но это не помогло. Теперь у меня 5 файлов. Добавила новое условие в query.php.
Теперь select второй становится активным, но параметры нужные не выводятся.
Вот что у меня получилось:
query.php
include('zapros.php');
// Проверяем наличие переменной, которая укажет данному сценарию какие именно данные нужны
if(isset($_POST['kat_id']))
{
if (!isset($_POST['query']) || !$_POST['query']) 
{
	exit("Нет данных определяющих тип запроса");
}
else {
	// Сохраняем строку запроса данных в отдельной переменной
	$query = trim($_POST['query']); // Очищаем от лишних пробелов
	
	// Определяем тип запроса
	switch($query) 
	{
	case 'getTip':	// Запрос на получение 
		// Сохраним в переменную значение выбранного типа транспорта
		$kat_id = trim($_POST['kat_id']); // Очистим его от лишних пробелов
		// Формируем массив с ответом
		
		$result = NULL;
		$i = 0;
		foreach ($arr as $tip_id => $tip) 
		{
			$result[$i]['tip_id'] = $tip_id;
			$result[$i]['tip'] = $tip;
			$i++;
		}
        
	break;
	
	default:
		// Если данные не определены
		$result = NULL;
	break;
	}
}
}
echo json_encode($result);

zapros.php
$stroka_zaprosa_kat="SELECT * FROM  kat";
		$dannye_kat=mysql_query($stroka_zaprosa_kat, $connect) or die(mysql_error()) ; 
		$kolvo_kat=mysql_num_rows($dannye_kat);	
		$kat_sel="";
		if(isset($_POST['kat']))
		{
			$kat_sel=$_POST['kat'];
		}

if(isset($_POST['kat_id']))
{
$tip = $mysqli->query("SELECT *
            FROM  `tip`
            WHERE  `id_kat` =  '".$_POST['kat_id']."'");       
        $arr = array();
        while($row = mysqli_fetch_assoc($tip))
		{
          $arr[$row['tid']] = $row['tname'];
        }
}

ну и скрипт остался прежним
(function () {	
	"use strict";
	jQuery(function () {
		
		$( '#kat' ).change(function () {
			
			$( '#tip').find( 'option:not(:first)' )	
				.remove()	
				.end()
				.prop( 'disabled',true );	
			var kat_id = $( this ).val();
			if (kat_id == 0) { return; }			
			$.ajax({
				type: "POST",	
				url: "query.php",	
				dataType: "json",	
				data: {query: 'getTip', kat_id: kat_id},	
				error: function (xhr, status, error) {   
  alert( status + ' | ' + error ); 
}
,				success: function ( data ) { 					
					for ( var i = 0; i < data.length; i++ ) {						
						$( '#tip' ).append( '<option value="' + data[i].tip_id + '">' + data[i].tip + '</option>' );
					}
					$( '#tip' ).prop( 'disabled', false );	
				}
			});
		});
	}); 
})();

jsnb 08.05.2014 15:26

В общем, так еще хуже стало. Возвращайте всё как было. Надо смотреть что конкретно в переменных на каждом этапе и что в конце возвращается. Я не могу узнать, что у вас там в базе, что выбирается и что в результате из этого получается. Вы сами можете посмотреть что у вас там в переменных? И я так и не понял зачем к index файлу подключается query.php?

zazula 08.05.2014 16:17

А куда подключать query если не к индексу? Пытаюсь вывести пост, но ничего не выводится, может быть первый select POST не передает? Еще все время выводится NULL, т.е. что данные не определены

jsnb 08.05.2014 16:45

Цитата:

Сообщение от zazula (Сообщение 310948)
А куда подключать query если не к индексу?

Еще раз, зачем он туда подключается? В чем его там роль состоит?

Цитата:

Сообщение от zazula (Сообщение 310948)
Пытаюсь вывести пост, но ничего не выводится, может быть первый select POST не передает? Еще все время выводится NULL, т.е. что данные не определены

Я не могу сказать, что у вас там передается, потому что у меня нет доступа к вашим данным. Откройте вкладку сеть в средствах разработчика браузера и посмотрите что у вас уходит на сервер в POST запросе.

zazula 08.05.2014 17:04

Цитата:

Сообщение от jsnb
Еще раз, зачем он туда подключается? В чем его там роль состоит?

Он нужен для вывода категорий в первый select

zazula 08.05.2014 17:06

Но в общем вы правы) Я перенесла запрос для первого select в index, убрала этот include и у меня исчез NULL)))


Часовой пояс GMT +3, время: 15:43.