Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Двойной выпадающий список
 
 автор: lena52   (25.03.2010 в 21:01)   письмо автору
 
 

Здравствуйте!
В книге Кузнецова и Симдянова представлен листинг двойного выпадающего списка без перезагрузки.
Имеется три базы:
brand (id_brand, brand) - производитель
model (id_model, model, id_brand) - модель
product (id_product, title, id_brand, id_model) - продукт
Прошу помощи в выводе поля title из таблицы product после выбора производителя и модели.

<?php
// Начало HTML-формы
echo "<form action=handler.php method=post>";

// Формируем первый выпадающий список
$query = "SELECT * FROM 52a_brand
ORDER BY brand";
$cat = mysql_query($query);
if(!$cat) exit(mysql_error());
// Если имеется хотя бы одна запись,
// формируем выпадающий список
if(mysql_num_rows($cat) > 0)
{
echo "<select name=id_brand
onchange='show(this.form.id_brand)'>";
echo "<option value=0>Выберите производителя</option>";
while($brand = mysql_fetch_array($cat))
{
if($_POST['id_brand'] == $brand['id_brand']) $selected = "selected";
else $selected = "";
echo "<option value=$brand[id_brand] $selected>
$brand[brand]</option>";

// Формируем массив первичных ключей элементов каталога
$array_brand[] = $brand['id_brand'];
}
echo "</select>";
}

// Формируем второй выпадающий список
$query = "SELECT * FROM 52a_brand";
$ctg = mysql_query($query);
if(!$ctg) exit(mysql_error());
// Если имеется хотя бы одна запись,
// формируем выпадающий список
if(mysql_num_rows($ctg) > 0)
{
while($brand = mysql_fetch_array($ctg))
{
// Формируем скрытые списки
$query = "SELECT * FROM 52a_model
WHERE id_brand = $brand[id_brand]
ORDER BY model";
$prd = mysql_query($query);
if(!$prd) exit(mysql_error());
// Если для текущего элемента каталога имеется хотя бы
// одна товарная позиция, формируем выпадающий список
if(mysql_num_rows($prd) > 0)
{
echo "<select id=$brand[id_brand]
style=\"display:none\" name=model$brand[id_brand]>";
echo "<option value=0>Выберите модель</option>";
while($model = mysql_fetch_array($prd))
{
if($_POST['id_model'] == $model['id_model']) $selected = "selected";
else $selected = "";
echo "<option value=$model[id_model] $selected>
$model[model]</option>";
}
echo "</select>";

}

}

}
echo "</br><input type=submit name=send value=Отправить>";
// Конец HTML-формы
echo "</form>";
?>

<script language='JavaScript1.1' type='text/javascript'>
<!--
var messageIdList = new Array(<?= implode(",", $array_brand) ?>);
function show(sel)
{
for (i = 0; i < messageIdList.length; i++)
{
document.getElementById(messageIdList[i]).style.display = "none";
}
document.getElementById(sel.options[sel.selectedIndex].value).style.display = "block";
}
//-->
</script>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования