|
|
|
| Есть два выпадающих списка, значения в которые передаются из базы MySQL. Надо чтобы при выборе конкретного значения из первого списка, формировался второй список, т.е. выбирались те поля для которых параметр из первого списка равен выбранному значению.. Это все на одной странице. | |
|
|
|
|
|
|
|
для: Trischa
(15.06.2005 в 17:38)
| | Это нужно реализовать при помощи JavaScripnt (если, конечно, нельзя перегружать страницу при выборе из первого списка) - обычно выводят первый список, всевозможные комбинации второго списка. При этом элементы второго списка скрывают и отображают по событию выбора из первого списка. Как это реализовать лучше спросить в разделе, специально, посвящённом JS http://www.softtime.ru/forum/index.php?id_forum=4 | |
|
|
|
|
|
|
|
для: cheops
(15.06.2005 в 20:53)
| | Я скачала скрипты с форума по JavaScript. Работает только первый <select>, а второй присутствует в коде страницы, но на самой странице он не отображается. В коде выведена вся база данных по каждому значению предыдущего <select>.Кажется не работает функция echo "if(this.form.id_theme.options[".$list['id_theme']."].selected){"; | |
|
|
|
|
автор: Саня (15.06.2005 в 23:12) |
|
|
для: Trischa
(15.06.2005 в 17:38)
| | Такая фишка есть на сайте [url]www.litra.ru[/url] | |
|
|
|
|
|
|
|
для: Саня
(15.06.2005 в 23:12)
| | Да, только там весь код этого фрагмента находится в файле *.js. И там скорее всего массивы JavaScript, а у меня БД MySql.
Посмотрите пожалйста код:
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
nomoactive="-1";
function tkchange()
{ document.getElementById("selecttkfr").src="selecttk.php?rowcolor=<?=$rowcolor1?>&tknum="+document.getElementById("newpresencegr_tknum").value;
}
function nomochange()
{ document.getElementById("newpresencegr_placenomo").src="selecttk.php?rowcolor=<?=$rowcolor1?>&tknum="+document.getElementById("newpresencegr_tknum").value;
}
function nomochange()
{
a=document.getElementById("newpresencegr_placenomo").options[document.getElementById("newpresencegr_placenomo").selectedIndex].value;
if (nomoactive!="-1") document.getElementById("newpresencegr_placedimo_"+nomoactive).style.display="none";
if (a!="-1") document.getElementById("newpresencegr_placedimo_"+a).style.display="inline";
nomoactive=a;
}
//-->
</SCRIPT>
<table>
<TR>
<TD valign=top class=ff_name ><NOBR>Alena</NOBR></TD>
<TD class=ff_name >
<SELECT name=newpresencegr_placenomo class=ff_select id=newpresencegr_placenomo onchange="nomochange()">
<OPTION value="-1">no selected
<SCRIPT LANGUAGE='php'>
if (!$link)
{
echo 'Ошибка: не удалось связаться с базой данных; ';
exit;
}
print"Connect succesfully <br>";
// Формируем тело скрипта JavaScript средствами PHP
$SQL="SELECT * FROM proizvoditel ORDER BY name_proizvoditel;";
$rs_nomo=mysql_query($SQL);
if(!$rs_nomo)
{
echo "Ошибка при выполенении выборки из таблицы proizvoditel";
exit();
}
while ($rs_nomo && $row_nomo=mysql_fetch_assoc($rs_nomo))
{
print "<OPTION value=".$row_nomo["proizvoditel_id"].">".$row_nomo["name_proizvoditel"];
}
</SCRIPT>
</SELECT>
<SCRIPT LANGUAGE='php'>
if (!$link)
{
echo 'Ошибка: не удалось связаться с базой данных; ';
exit;
}
print"Connect succesfully <br>";
// Формируем тело скрипта JavaScript средствами PHP
$SQL="SELECT * FROM models ORDER BY proizvoditel_id;";
$rs_dimo=mysql_query($SQL);
$prevnomo="";
if(!$rs_dimo)
{
echo "Ошибка при выполнении выборки из таблицы model";
exit();
}
while ($rs_dimo && $row_dimo=mysql_fetch_assoc($rs_dimo))
{
$nownomo=$row_dimo["proizvoditel_id"];
if (!$nownomo!=!$prevnomo)
{
if ($prevnomo!="") print "</SELECT>";
print "<SELECT name=newpresencegr_placedimo_".$nownomo." class=ff_select id=newpresencegr_placedimo_".$nownomo." style=\"display: none;\">";
print "<OPTION value=\"-1\">ÅðéëÝîôå";
$prevnomo=$nownomo;
}
print "<OPTION value=".$row_dimo["proizvoditel_id"].">".$row_dimo["name_model"];
}
print "</SELECT>";
</SCRIPT>
|
| |
|
|
|
|
|
|
|
для: Trischa
(15.06.2005 в 17:38)
| | Trischa, у вас 2 варианта.
Первый. Тупой. Сделали 1-ый SELECT, вывели в первый список. Когда оттуда выбрали что-то, нажали кнопку, сделали 2-ой SELECT по результатам выбора пользователя, вывели во второй список (то есть это он по смыслу второй, а на странице может быть и единственным).
Второй. По умному. Делаете оба SELECTа. Первый -- как вам надо, второй содержит всё что туда только может попасть. То есть все записи независимо от значения параметра из первого списка. Дальше JavaScript. Иначе -- только первый вариант. | |
|
|
|
|
|
|
|
для: Whitish Smoke
(16.06.2005 в 23:30)
| | Первый вариант отпадает изначально, т.к. страница не должна перезагружаться.
Второй вариант - код второго варианта приведен выше, но только одна проблема.
Что он не отображает второго<select> на странице, хотя в исходном коде(на этой странице) выводит всю БД по нужному запросу.
Проверьте пожалуйста код, может что-то не так как я думаю? | |
|
|
|
|
|
|
|
для: Trischa
(17.06.2005 в 07:28)
| | у меня похожая проблема 2 день ищу в инете.
таблица :
id|code|..| город | район|
1 |сумы| |глухов |
2 |киев | |бровары|
3 |сумы| |шостка|
надо чтоб выбирались соответствующие районы через select для город .
Например для город суммы отбирались глухов шостка если в mysql базе они прописаны для сумы.
Если использовать приведенныый выше скрипт то выбирается
сумы =>глухов шостка бровары - что неправильно
а при выборе киев - вообще ничего не происходит.
Закоментировал строку if из кода приведенного выше....
//if (!$nownomo!=!$prevnomo)
//{
if ($prevnomo!="")
print "</SELECT>";
print "<SELECT name=newpresencegr_placedimo_".$nownomo." class=ff_select id=newpresencegr_placedimo_".$nownomo." style=\"display: none;\">";
print "<OPTION value=\"-1\">выбор";
$prevnomo=$nownomo;
//}
|
....Заработало , для сумы-> глухов
для киев выбирается -> бровары
но выбирается только первое значение для города сумы ->глухов и нижняя позиция тоже сумы ->глухов | |
|
|
|
|
|
|
|
для: oppo
(06.10.2005 в 21:05)
| | вот тут это сделано http://etalon.aval.ua/online/ а тут JS но без php ht[url]tp://htmlcoder.visions.ru/JavaScript/?17[/url] .... | |
|
|
|