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

HTML+CSS+JavaScript

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

 

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

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

тема: Помогите решить задачку с combobox-ом?
 
 автор: Михаил   (02.05.2005 в 10:52)   письмо автору
 
 

есть форма c двумя combox, первый заполняется названиями стран (из базы MySQL), а второй - названиями курортов (тоже из базы MySQL), соответствующих выбранной стране. Не могу реализовать связку: combobox(страны)->выбор страны->заполнение combobox(курорты).
cheops, подсказал, что можно это реализовать на JavaScript "Обычно поступают так, вытаскивают из базы данных первый список и вторые списки для каждого варианта из первого списка - всё средствами JavaScript скрывают и отображают только один вариант, при выборе друго значения опять всё скрывают и отображают нужный". Как добиться этого эффекта? Друзья, подскажите!!!

   
 
 автор: elenaki   (02.05.2005 в 12:04)   письмо автору
 
   для: Михаил   (02.05.2005 в 10:52)
 

создаете такие таблицы для стран и курортов. это минимальные требования. если вам нужны другие данные, конечно, можете добавлять


#
# Table structure for table 'kurort'
#

CREATE TABLE 'kurort' (
  'kurort_id' int(11) NOT NULL default '0',
  'kurort_name' char(100) NOT NULL default '',
  'country_id' int(11) NOT NULL default '0',
  PRIMARY KEY  ('kurort_id')
) TYPE=MyISAM;

#
# Dumping data for table 'kurort'
#
INSERT INTO kurort VALUES("1","Co4u","1");
INSERT INTO kurort VALUES("2","Loutraki","2");
#
# Table structure for table 'strana'
#
CREATE TABLE 'strana' (
  'country_id' int(11) NOT NULL default '0',
  'country_name' char(50) NOT NULL default '',
  PRIMARY KEY  ('country_id')
) TYPE=MyISAM;

#
# Dumping data for table 'strana'
#
INSERT INTO strana VALUES("1","Russia");
INSERT INTO strana VALUES("2","Greece");



а вот сам скрипт:


<?php
require ("dbconnect.inc.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Combo-box</title>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1253">
</head>

<body>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
nomoactive="-1";
function nomochange()
{a=document.getElementById("country").options[document.getElementById("country").selectedIndex].value;
    if (nomoactive!="-1") document.getElementById("kur_"+nomoactive).style.display="none";
    if (a!="-1") document.getElementById("kur_"+a).style.display="inline";
    nomoactive=a;
}
//-->
</SCRIPT>
<TR>
    <TD valign=top class=ff_name ><NOBR>CTPAHA/KypopT  </NOBR></TD>
    <TD class=ff_name ><SELECT name=country  id=country onchange="nomochange()">
    <OPTION value="-1">BbI6epuTe cTpaHy
<?    $SQL="SELECT * FROM strana ORDER BY country_name;";
    
$rs_nomo=mysql_query($SQL);
    while (
$rs_nomo && $row_nomo=mysql_fetch_assoc($rs_nomo))
    {
    print 
"<OPTION value=".$row_nomo["country_id"].">".$row_nomo["country_name"];
    }
?>
    </SELECT>
<?    $SQL="SELECT * FROM kurort ORDER BY kurort_id, kurort_name;";
    
$rs_dimo=mysql_query($SQL);
    
$prev_kur="";
    while (
$rs_dimo && $row_dimo=mysql_fetch_assoc($rs_dimo))
    {
    
$now_kur=$row_dimo["kurort_id"];
        if (
$now_kur!=$prev_kur)
        {
            if (
$prev_kur!="") print "</SELECT>";
            print 
"<SELECT name=kur_".$now_kur." id=kur_".$now_kur." style=\"display: none;\">";
            print 
"<OPTION value=\"-1\">BbI6epuTe KypopT";
            
$prev_kur=$now_kur;
        }
        print 
"<OPTION value=".$row_dimo["kurort_id"].">".$row_dimo["kurort_name"];
    }
    print 
"</SELECT>";
?></TD>
</TR>

</body>
</html>



надеюсь, там все понятно. я его подсократила немного. проверила - работает.
если что - спрашивайте. пример - по ссылке

   
 
 автор: Михаил   (02.05.2005 в 18:43)   письмо автору
 
   для: elenaki   (02.05.2005 в 12:04)
 

Большущая благодарность, спасибо. Весь инет перелазил но ничего не нашел. Твой совет и пример помог. Ух, все получилось. Но теперь возник вопрос при отсылке серверу (php обработчику) данных. Передается строчка типа kur_1=-1$kur_2=-1$kur_9=9 и т.п(в зависимости от количества курортов страны). Как это обработать на стороне сервера и вытащить нужный kur ?

   
 
 автор: elenaki   (02.05.2005 в 20:05)   письмо автору
 
   для: Михаил   (02.05.2005 в 18:43)
 

может, разделить их сплином по символу &, они попадут в массив парами параметр=значение, потом разбить эти пары, присваивая параметру конкретный номер (вместо kur_что-то получится 0,1,2,...), а потом выбрать те, у которых значение не равно -1.
я это не проверяла. надо еще подумать.

   
Rambler's Top100
вверх

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