[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Чтение из БД зависимого select'а
alsio
Есть форма с полями, в т.ч. селект. В зависимости от выбора его значений появляются зависимые поля (input, select, hidden и т.п.).

Приведу часть формы, для примера.

index.php:

<head>
<
script src="JsHttpRequest.js"></script>
<
script>
function doload(value){
var req=new JsHttpRequest();
req.onreadystatechange=function(){
if(req.readyState==4) document.getElementById("result").innerHTML=req.responseText;}
req.open(null,"product2.php",true);
req.send({product:value});}
</script>
</
head>
<
select name="product" onchange="doload(this.value);">
<
option value="Прочее" selected="selected">Прочее</option>
<
option value="Овощи">Овощи</option>
<
option value="Фрукты">Фрукты</option>
</
select> <span id="result"></span>




product2.php:

<?
require("JsHttpRequest.php"); //Подключаем библиотеку
$JsHttpRequest=new JsHttpRequest("utf-8"); //Создаем экземпляр класса, указываю рабочую кодировку.

//В зависимости от выбранного параметра в первом select`e, заполняем переменную $html необходимым кодом.


switch($_REQUEST["product"]):

case "Прочее":
$html="<input type="hidden" name="product2" value="Прочее">";
break;

case "Овощи":
$html="> <select name="product2">
<option>Картошка</option>
<option>Капуста</option>
<option>Морковка</option>
</select>"
;
break;

case "Фрукты":
$html="> <select name="product2">
<option>Банан</option>
<option>Апельсин</option>
<option>Ананас</option>
</select>"
;
break;

default: $html=null;
endswitch;

//Выводим переменную $html, которую успешно "поймает" наша функция doload().

echo $html;
?>




Все это дело успешно работает, отображается и соответствующие значения записываются в БД MySQL. Затем их можно просмотреть в сводной таблице, типа: "Иванов купил Овощи Картошка" или "Петров купил Прочее".

Проблемы следующие:
1. В БД не записывается значение "Прочее" из product2.php, т.к. "Прочее" в главном селекте стоит по умолчанию, и события onchange не происходит. Соответственно будет "Петров купил [пусто]". По-идее можно сделать первое значение селекта пустым, чтобы всегда был выбор. Но хотелось бы, чтобы по умолчанию стояло "Прочее", т.к. оно наиболее востребованное. Есть ли другие варианты?
2. Сложнее. Записи из сводной таблицы надо редактировать, т.е. открываем "Иванов" и видим селекты "Овощи -> Картошка". Затем меняем на любые другие значения и снова сохраняем в БД. Получилось сделать форму с заполненными полями из БД, но без зависимого селекта. Т.е. видим только "Овощи". Как быть?

Помогите, чем сможете, а то тут я уже бессилен.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.