|
|
|
| Здравствуйте.
Вопрос на засыпку.
Как сделать так чтобы при выборе элемента из такого поля :
<SELECT size=1>
<OPTION selected value=1>Выберите:</OPTION>
<OPTION value=2> Первый</OPTION>
<OPTION value=3> Второй</OPTION>
<OPTION value=4>Третий</OPTION>
<OPTION value=5> Четвертый</OPTION>
</SELECT>
|
в следующем поле (таком же) изменялся бы список в зависимости от того что выбрано в первом поле. При этом Список элементов чтобы брался из базы MySQL в обоих полях, и все это по возможности без перезагрузки страници.
PS: По возможности чтобы все это работало на php (если возможно конечно) , ну а если нет то тогда как вообще можно ? | |
|
|
|
|
|
|
|
|
для: cheops
(14.12.2004 в 09:44)
| | Привет.
Я сделал вот так:
<?php
include "connect.php";
$ath = mysql_query("select * from baza_podrazd");
if($ath)
{
while($List = mysql_fetch_array($ath))
{
print "<form action='' method='post'>";
print "<select name='podr_in' size='1'>";
echo "<option value=".$List['id_group'].">".$List['znachenie']."</OPTION><br>";
}
}
else
{
echo "<p><b>Error: ".mysql_error()."</b><p>";
exit();
}
print "</select><br><br>";
#print $podr_in;
//////////////////////////////////////////////////////////////////////////
$tbl = mysql_query("select * from baza_uchastkov WHERE id_group='$podr_in'");
if($tbl)
{
while($Lit = mysql_fetch_array($tbl))
{
print "<select name='uch_in' size='1'>";
echo "<option value=".$Lit['shifr'].">".$Lit['znachenie']."</OPTION><br>";
}
}
else
{
echo "<p><b>Error: ".mysql_error()."</b><p>";
exit();
}
print"</select><br><br><input type='submit' value='Отправить'></form>";
#print $uch_in;
?>
|
а как теперь сделать чтобы при выборе в первом селекте происходил переход без нажатия на кнопку submit ? | |
|
|
|
|
|
|
|
для: Felix
(15.12.2004 в 07:18)
| |
<select name="podr_in" onChange="redirect(this.options.selectedIndex)">
|
function redirect(x){
for (m=temp.options.length-1;m>0;m--)
temp.options[m]=null
for (i=0;i<group[x].length;i++){
temp.options[i]=new Option(group[x][i].text,group[x][i].value)
}
temp.options[0].selected=true
}
|
| |
|
|
|
|
|
|
|
для: Felix
(15.12.2004 в 07:18)
| | Поставьте на событие изменения выбранного значения (onchange) отсылку формы submit()
onchange='this.form.submit()'
<?
echo "
<form name=frm action='action.php' method=post>
<select name=3 onchange='this.form.submit()'>
<option value='1'> 1</option>
<option value='2'> 2</option>
<option value='3'> 3</option>
</select>
</form>";
?>
|
Аа-а, нужно на вторую форму перейти. Извините, не понял.
PS: Свой код стирать не буду - вдруг тоже пригодится. | |
|
|
|
|
|
|
|
для: Felix
(15.12.2004 в 07:18)
| | [поправленно] | |
|
|
|
|
|
|
|
для: Crux
(15.12.2004 в 11:32)
| |
<?php
include "html/in.html";
include "connect.php";
print "<form action='' method='post'>";
//Дата
print "<INPUT type='TEXT' name='date' maxlength='10' size='20' value=''><BR><BR>";
//выбор позразделения предоставляющего услуги
print "<select name='podr_in' size='1' onchange='this.form.submit()'>";
$ath = mysql_query("select * from baza_podrazd");
if($ath)
{
while($List = mysql_fetch_array($ath))
{
echo "<option value=".$List['id_group'].">".$List['znachenie']."</OPTION>";
}
if($podr_in === '')
{
print "Хрен";
}
Else
{
$r=mysql_query("SELECT znachenie FROM baza_podrazd WHERE id_group='$podr_in'");
$f=mysql_result($r,znachenie);
echo "<option selected value=".$podr_in.">".$f."</OPTION>";
}
}
else
{
echo "<p><b>Error: ".mysql_error()."</b><p>";
exit();
}
print "</select><br><br>";
//Выбор участка предоставляющего услуги
$tbl = mysql_query("select * from baza_uchastkov WHERE id_group='$podr_in'");
if($tbl)
{
while($Lit = mysql_fetch_array($tbl))
{
print "<select name='uch_in' size='1'>";
echo "<option value=".$Lit['shifr'].">".$Lit['znachenie']."</OPTION><br>";
}
}
else
{
echo "<p><b>Error: ".mysql_error()."</b><p>";
exit();
}
print"</select><br><br>";
//выбор механизмов
print "<select name='mehan' size='1'>";
$tble = mysql_query("select * from baza_mehanizm");
if($tble)
{
while($Lite = mysql_fetch_array($tble))
{
echo "<option value=".$Lite['shifr'].">".$Lite['znachenie']."</OPTION><br>";
}
}
else
{
echo "<p><b>Error: ".mysql_error()."</b><p>";
exit();
}
print"</select><br><br>";
//выбор м/ч
print "<INPUT type='TEXT' name='times' maxlength='5' size='20' value=''><BR><BR>";
//выбор подразделения заказчика
print "<select name='podr_out' size='1' onchange='this.form.submit()'>";
$athi = mysql_query("select * from baza_podrazd");
if($athi)
{
while($Listi = mysql_fetch_array($athi))
{
echo "<option value=".$Listi['id_group'].">".$Listi['znachenie']."</OPTION>";
}
if(!isset($podr_out))
{
print "Хрен";
}
Else
{
$r=mysql_query("SELECT znachenie FROM baza_podrazd WHERE id_group='$podr_out'");
$f=mysql_result($r,znachenie);
echo "<option selected value=".$podr_out.">".$f."</OPTION>";
}
}
else
{
echo "<p><b>Error: ".mysql_error()."</b><p>";
exit();
}
print "</select><br><br>";
//выбор уастка заказчика
$tbls = mysql_query("select * from baza_uchastkov WHERE id_group='$podr_out'");
if($tbls)
{
while($Lits = mysql_fetch_array($tbls))
{
print "<select name='uch_out' size='1'>";
echo "<option value=".$Lits['shifr'].">".$Lits['znachenie']."</OPTION><br>";
}
}
else
{
echo "<p><b>Error: ".mysql_error()."</b><p>";
exit();
}
print"</select><br><br>";
//кнопка отправки
print"<INPUT type='submit' value='послать'>";
print "</form>";
include "html/out.html";
?>
|
Как сделать так чтобы после того как были выбраны подразделения и участок заказчики,
выбранные ранее подразделения и участок предоставляющие услуги не пропадали а были видны те которые были выбраны. ???? | |
|
|
|
|
|
|
|
для: Felix
(16.12.2004 в 06:42)
| | Сложно тестировать PHP-код без базы данных. Лучше положите сюда сгенерированный HTML-код. У нас же все равно на JavaScript задача. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(17.12.2004 в 01:55)
| | Вот сгенерированный html код:
<html>
<title></title>
<head>
</head>
<body background="img/13.gif"><center><form action='' method='post'>
<table bgcolor='#c0c0c0' cellspacing='0' border='2' bordercolor='#000000'>
<tr><td>Подразделение<br>предоставляющее услуги</td><td>
<select name='podr_in' size='1' onchange='this.form.submit()'>
<option value=0></OPTION>
<option value=1>Аппарат управления</OPTION>
<option value=2>СМУ ГЭС</OPTION>
<option value=3>СМУ КНП</OPTION>
<option value=4>СМУ ПГС</OPTION>
<option value=5>УАТ</OPTION>
<option value=6>КЗСМ</OPTION>
<option value=7>УМТС (УПТК)</OPTION>
<option value=8>ЭНЕРГОПРЕДПРИЯТИЕ</OPTION>
<option value=9>УСМ</OPTION>
<option value=10>Торговое управление</OPTION>
<option value=11>Прочие</OPTION>
<option selected value=0></OPTION>
</select>
</td></tr>
<tr><td>Подразделение заказчик</td>
<td>
<select name='podr_out' size='1' onchange='this.form.submit()'>
<option value=0></OPTION>
<option value=1>Аппарат управления</OPTION>
<option value=2>СМУ ГЭС</OPTION>
<option value=3>СМУ КНП</OPTION>
<option value=4>СМУ ПГС</OPTION>
<option value=5>УАТ</OPTION>
<option value=6>КЗСМ</OPTION>
<option value=7>УМТС (УПТК)</OPTION>
<option value=8>ЭНЕРГОПРЕДПРИЯТИЕ</OPTION>
<option value=9>УСМ</OPTION>
<option value=10>Торговое управление</OPTION>
<option value=11>Прочие</OPTION>
<option selected value=0></OPTION>
</select>
</td></tr>
<tr>
<td>Участок<br>предоставляющий услуги</td>
<td>
<select name='uch_in' size='1'></select>
</td></tr>
<tr>
<td>Участок заказчик</td>
<td>
<select name='uch_out' size='1'></select>
</td>
</tr>
<tr>
<td>Механизмы</td>
<td>
<select name='mehan' size='1'>
<option value=1>Экскаватор ЭО-3322 на пневмоходу</OPTION><br>
<option value=2>Экскаватор ЭО-4225 на гусеничном ходу</OPTION><br>
<option value=3>Экскаватор ЭО-5124 на гусеничном ходу</OPTION><br>
<option value=4>Экскаватор ЭКГ-5 электропневмотический</OPTION><br>
<option value=5>Бульдозер на базе Т-130, Т-170</OPTION><br>
<option value=6>Бульдозер на базе Т-330</OPTION><br>
<option value=7>Бульдозер ДЭТ-250</OPTION><br>
<option value=8>Трактор колесный К-701</OPTION><br>
<option value=9>Виброкаток ДУ-85</OPTION><br>
<option value=10>Виброкаток ДУ-47, ДУ-62</OPTION><br>
<option value=11>Виброкаток ВК-24</OPTION><br>
<option value=12>Фронтальный погрузчик ТО-18</OPTION><br>
<option value=13>Фронтальный погрузчик ПК-2202</OPTION><br>
<option value=14>Фронтальный погрузчик ЗТМ-216</OPTION><br>
</select>
</td>
</tr>
<tr>
<td>Моточасы м/ч</td>
<td><INPUT type='TEXT' name='times' maxlength='5' size='20' value=''></td></tr>
<tr>
<td>Дата (дд.мм.гггг)</td>
<td><INPUT type='TEXT' name='date' maxlength='10' size='20' value=''></td></tr>
<tr>
<td colspan='2' align='center'><INPUT type='submit' value='Выбрать'>
</form>
<form action='scripts.php' method='POST'
><INPUT type='submit' value='послать'></td></tr></table></center></body>
</html><!-- Kerio Popup Killer - script has been appended by KPF -->
<iframe id="kpfLogFrame" src="http://127.0.0.1:44501/pl.html?START_LOG" onload="destroyIframe(this)" style="display:none;">
</iframe>
|
И еще, когда я пытаюсь создать сессию и занести переменные из формы в сессию то у меня форма отказывается работать/
PS. Я вроде бы разобрался маленько.
Теперь мне нужна подсказка как сделать чтобы после того как данные были внесены в форму и отправлены обработчику в другой файл, при нажатии в эксплорере на кнопку "назад" и переходе обратно в форму, чтобы в этой форме уже были внесены те данные которые вносились перед отправкой. Тоесть чтобы можно было не забивать снова всю форму а только подправить нужный элемент.
Как это сделать ? | |
|
|
|
|
|
|
|
для: Felix
(17.12.2004 в 04:02)
| | Ага, вот что имелоссь ввиду.
Значит по onchange вы перегружаете страницу. И заново формируете выпадающие списки по уточненным данным. Это уже работает?
>И еще, когда я пытаюсь создать сессию и занести переменные из формы в сессию то у меня форма отказывается работать/
В чем это выражается? Я не нашел у Вас кода заносящего данные в сессию.
>Теперь мне нужна подсказка как сделать чтобы после того как данные были внесены в форму и отправлены обработчику в другой файл, при нажатии в эксплорере на кнопку "назад" и переходе обратно в форму, чтобы в этой форме уже были внесены те данные которые вносились перед отправкой.
Вообще то это должно работать и без всяких хитростей.
Но вот там на странице у Вас много JavaScript-ов.
причем функции...
function nullWindow()
function my_onload()
function my_unload()
|
И внизу страницы вызов
<script type="text/javascript">
<!--
nopopups();
//-->
</script>
|
Они действительно нужны? Скорее всего они и чистят страницу.
PS:
Кстати, смотрел HTML-код...
Последняя форма, отправляющая данные скрипту-обработчику стоит обособленно и не содержит полей формы, заполняемых выше.
<form action='scripts.php' method='POST'><INPUT type='submit' value='послать'>
|
Ведь данные из выпадающих списков в таком случае не должны посылаться скрипту-обработчику scripts.php....
Или Вы хотите сохранить значения выпадающих списков в сессиях?
Можно решить это и через формы. Если не хотите возиться с одной формой, то можно в последней форме формировать скрытые поля, которые будут содержать значения выбранных элементов в списках выше. Вы же все равно на PHP формируете списки.
PS: Хм, смотрю PHP-код и не вижу вывода строчки
<form action='scripts.php' method='POST'>
|
PPS: У последней формы нет закрывающегося тега </form> (HTML-код) | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(17.12.2004 в 10:05)
| | Привет.
Представляете, оказалось что это мой файервол вносил в код все ява скрипты, у меня ведь в коде кроме onchange ничего подобного нет. Стоило отключить в нем галочку блокировки поп-уп окон и все встало на свои места :)
В итоге у меня получилось вот что :
<?
include "html/in.html";
include "connect.php";
print "<center><form action='' method='post'>";
print"<table bgcolor='#c0c0c0' cellspacing='0' border='2' bordercolor='#000000'>";
//выбор позразделения предоставляющего услуги
print "<tr><td>Подразделение<br>предоставляющее услуги</td><td>
<select name='podr_in' size='1' onchange='this.form.submit()'>";
$ath = mysql_query("select * from baza_podrazd");
if($ath)
{
while($List = mysql_fetch_array($ath))
{
echo "<option value=".$List['shifr'].">".$List['znachenie']."</OPTION>";
}
if($podr_in === '')
{
print "@";
}
Else
{
$r=mysql_query("SELECT znachenie FROM baza_podrazd WHERE shifr='$podr_in'");
$f=mysql_result($r,znachenie);
echo "<option selected value=".$podr_in.">".$f."</OPTION>";
}
}
else
{
echo "<p><b>Error: ".mysql_error()."</b><p>";
exit();
}
print "</select></td></tr><tr><td>Подразделение заказчик</td><td>";
print "<select name='podr_out' size='1' onchange='this.form.submit()'>";
$athi = mysql_query("select * from baza_podrazd");
if($athi)
{
while($Listi = mysql_fetch_array($athi))
{
echo "<option value=".$Listi['shifr'].">".$Listi['znachenie']."</OPTION>";
}
if(!isset($podr_out))
{
print "@";
}
Else
{
$t=mysql_query("SELECT znachenie FROM baza_podrazd WHERE shifr='$podr_out'");
$f1=mysql_result($t,znachenie);
echo "<option selected value=".$podr_out.">".$f1."</OPTION>";
}
}
else
{
echo "<p><b>Error: ".mysql_error()."</b><p>";
exit();
}
print "</select></td></tr><tr><td>Участок<br>предоставляющий услуги</td><td>";
//Выбор участка предоставляющего услуги
print "<select name='uch_in' size='1'>";
$tbl = mysql_query("select * from baza_uchastkov WHERE id_group='$podr_in'");
if($tbl)
{
while($Lit = mysql_fetch_array($tbl))
{
echo "<option value=".$Lit['shifr'].">".$Lit['znachenie']."</OPTION><br>";
}
}
else
{
echo "<p><b>Error: ".mysql_error()."</b><p>";
exit();
}
print"</select></td></tr><tr><td>Участок заказчик</td><td>";
//выбор уастка заказчика
print "<select name='uch_out' size='1'>";
$tbls = mysql_query("select * from baza_uchastkov WHERE id_group='$podr_out'");
if($tbls)
{
while($Lits = mysql_fetch_array($tbls))
{
echo "<option value=".$Lits['shifr'].">".$Lits['znachenie']."</OPTION><br>";
}
}
else
{
echo "<p><b>Error: ".mysql_error()."</b><p>";
exit();
}
print"</select></td></tr><tr><td>Механизмы</td><td>";
//выбор механизмов
print "<select name='mehan' size='1'>";
$tble = mysql_query("select * from baza_mehanizm");
if($tble)
{
while($Lite = mysql_fetch_array($tble))
{
echo "<option value=".$Lite['shifr'].">".$Lite['znachenie']."</OPTION><br>";
}
}
else
{
echo "<p><b>Error: ".mysql_error()."</b><p>";
exit();
}
print"</select></td></tr><tr><td>Моточасы м/ч</td><td>";
//выбор м/ч
print "<INPUT type='TEXT' name='times' maxlength='5' size='20' value='$times'>";
//Дата
print "</td></tr><tr><td>Дата (дд.мм.гггг)</td><td>";
$dat=date("d.m.Y");
print "<INPUT type='TEXT' name='date' maxlength='10' size='20' value='$dat'></td></tr>";
//кнопка отправки
print"<tr><td colspan='2' align='center'>";
print"<INPUT type='submit' value='Выбрать'></form><form action='scripts.php' method='POST'>
<input type=hidden name=podr_in value='$podr_in'>
<input type=hidden name=podr_out value='$podr_out'>
<input type=hidden name=uch_in value='$uch_in'>
<input type=hidden name=uch_out value='$uch_out'>
<input type=hidden name=mehan value='$mehan'>
<input type=hidden name=times value='$times'>
<input type=hidden name=date value='$date'>
<INPUT type='submit' value='послать'></form></td></tr></table>";
print "</center>";
include "html/out.html";
?>
|
Все прекрасно работает но нужно еще чтобы при нажатии кнопки "Выбрать" выбранные участки (предост. услуги и заказчик) и механизмы не обнулялись в форме. То есть то что выбрал пишется в переменную но на экране при этом они обнуляются (ведь происходит перезагрузка страници) а нужно чтобы и на экране они тоже оставались на месте.
Как это провернуть ? | |
|
|
|
|
|
|
|
для: Felix
(17.12.2004 в 11:26)
| | Ну подскажет мне кто-нибудь или нет ? | |
|
|
|