[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Динамические select'ы (AJAX)
ityler
Есть отличный код для динамического вывода данных select'ов с без перезагрузки.

Код используется для поиска объектов. Все прекрасно работает, НО хоть убейте не могу понять как сделать, чтобы при показе результатов поиска в select'ы автоматически показывались (selected) выбраные ранее опшены..

Код
<script language=Javascript>

function Inint_AJAX() {
  try { return new ActiveXObject(\"Msxml2.XMLHTTP\");  } catch(e) {} //IE
  try { return new ActiveXObject(\"Microsoft.XMLHTTP\"); } catch(e) {} //IE
  try { return new XMLHttpRequest();          } catch(e) {} //Native Javascript
  alert(\"XMLHttpRequest not supported\");
  return null;
};

function dochange(src, val) {
    var req = Inint_AJAX();
    req.onreadystatechange = function () {
         if (req.readyState==4) {
              if (req.status==200) {
                   document.getElementById(src).innerHTML=req.responseText; //
              }
         }
    };
    req.open(\"GET\", \"/js/location/locale_ofc.php?data=\"+src+\"&val=\"+val); //
    req.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded;charset=windows-1251\"); // set Header
    req.send(null); //
}

window.onLoad=dochange('region', -1);
</script>


Код

    //
    header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header ("Cache-Control: no-cache, must-revalidate");
    header ("Pragma: no-cache");
    header("content-type: application/x-javascript; charset=windows-1251");
    $data=$_GET['data'];
    $val=$_GET['val'];

    //
$dbhost = "localhost";
$dbuser = "xxxxx";
$dbpass = "xxxxx";
$dbname = "xxxxx";
mysql_pconnect($dbhost,$dbuser,$dbpass) or die ("Unable to connect to MySQL server");  
    if ($data=='region') {
         echo "<select name='region' onChange=\"dochange('district', this.value), dochange('metro', this.value), dochange('name', this.value)\">\n";
         echo "<option value=''>-----Выбрать-----</option>\n";
         $result=mysql_db_query($dbname,"SELECT location_ID, location_name FROM Classificator_location WHERE location_comment LIKE 'reg' order by location_name");
         while(list($id, $name)=mysql_fetch_array($result)){
              echo "<option value=\"$id\">$name</option> \n";
     }
         }
 
if ($data=='district') {
         echo "<select name='district'>\n";
         echo "<option value=''>-----Выбрать-----</option>\n";
         $val2=$val;
         $val = substr($val,0,6);                                
         $result=mysql_db_query($dbname,"SELECT location_ID, location_name FROM Classificator_location WHERE location_ID != '$val2' AND location_ID LIKE '$val%' AND location_comment LIKE 'disreg' ORDER BY location_name");
         while(list($id, $name)=mysql_fetch_array($result)){
              if ($id==$sel2){
              echo "<option value=\"$id\">$name</option> \n";
     }
         }
 
   
 
else if ($data=='metro') {
         echo "<select name='metro'>\n";
         echo "<option value=''>-----Выбрать-----</option>\n";
         $val2=$val;
         $val = substr($val,0,6);                                
         $result=mysql_db_query($dbname,"SELECT location_ID, location_name FROM Classificator_location WHERE location_ID != '$val2' AND location_ID LIKE '$val%' AND location_comment LIKE 'met' ORDER BY location_name");
         while(list($ID, $name)=mysql_fetch_array($result)){      
              echo "<option value=\"$ID\">$name</option> \n";
         }
    }
  echo "</select>\n";







Спустя 1 час, 8 минут, 42 секунды (28.01.2009 - 16:54) twin написал(а):
Ничего не понял. Аякс для того и используется, что бы не изменять страницу целиком. Он не должен сбрасывать ранее выбранные опшены.
Кстати, Ваш скрипт не может работать, потому что там синтаксическая ошибка. Вот тут:
PHP
else if ($data=='metro') {
Нет в php оператора else if, как в js Нужно писать слитно. И скобки фигурной не хватает:
PHP
}
elseif (
$data=='metro')

Спустя 36 минут, 19 секунд (28.01.2009 - 17:30) dfsq написал(а):
да ладно! чем конструкция

if (....) { ... }
else if (....) { .... }

плоха?
никакой ошибки нет (скобки - да, не хватает, а конструкция нормальная)

Спустя 20 минут, 57 секунд (28.01.2009 - 17:51) twin написал(а):
Ну только если это стиль такой... Я одного не могу понять, кому то охота сидеть и разбираться, конструкция это или еще чего? Если для себя, то это одно дело, как и какие конструкции сочинять. Но если просят подсказки, потрудились бы сделать код читаемым. Ведь автор при таком стиле сам в скобках заблудился...

Спустя 17 часов, 59 минут, 27 секунд (29.01.2009 - 11:50) ityler написал(а):
Прошу прощения, если код некорректный, я просто совсем не силен в программировании. Этот код нарыл где-то в интернете и переделывал под себя. Кстати, скрипт работает в таком виде нормально.

twin, все селекты работают и взаимодействуют нормально, просто, когда нажимаешь кнопочку "искать" - страница перезагружается, ищутся объекты с введенными параметрами, а вот в форме поиска уже опшены сбрасываются.

Сохранить одно значение (select'а, который загружается первым) у меня получается, но есть еще 3 и с ними уже не справляюсь. Мучаюсь уже третий день((

Сейчас при загрузке страницы, по умолчанию загружается один-первый select. Вопрос в том, как сделать так, чтобы в случае, если выбраны 3 селекта, при выдаче результата поиска загружался не один select, а 3 связаных.

Спустя 2 часа, 9 минут, 43 секунды (29.01.2009 - 14:00) twin написал(а):
Так если страница перезагружается, значит аякс не работает. он и не может работать по этой схеме. базу скиньте, я посмотрю как помочь.

Спустя 1 час, 4 минуты, 24 секунды (29.01.2009 - 15:05) ityler написал(а):
Вот, к примеру страница, где это используется. http://ukrarenda.net/ofc/
При загрузке страницы связка селектов работает.
При выборе параметров и выдаче результатов поиска (т.е перезагрузке страницы) выбранные опшены не сохраняются.

twin, базу в смысле дамп сделать?

Спустя 10 минут, 34 секунды (29.01.2009 - 15:15) twin написал(а):
Да, дамп. Лень самому делать smile.gif

Спустя 1 день, 18 часов, 8 минут, 51 секунда (31.01.2009 - 09:24) twin написал(а):
Не смог я понять логики, написал простой пример поочередного выбора, может поможет. Если нет, тогда алгоритм пожалуйста. По каким критериям выбирать.
PHP
<?php
  
    header 
("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header ("Cache-Control: no-cache, must-revalidate");
    header ("Pragma: no-cache");
    header("content-type: application/x-javascript; charset=utf-8");
    $data = isset($_GET['data'])?$_GET['data']:hull;
    $val = isset($_GET['val'])?$_GET['val']:hull;

$dbhost = "localhost";
$dbuser = "test";
$dbpass = "test";
$dbname = "guest";
mysql_pconnect($dbhost,$dbuser,$dbpass) or die ("Unable to connect to MySQL server");

@
mysql_query("SET NAMES utf8");
  
if 
($data=='region') 
{ 
echo 
"<select name='region' onChange=\"dochange('district', this.value)\">\n";
echo "<option value=''>-----Выбрать-----</option>\n";
$result = mysql_db_query($dbname,"SELECT location_comment, location_name FROM Classificator_location 
order by location_name"
);
    while(list($location_comment, $name) = mysql_fetch_array($result))
    {
    echo "<option value=\"$location_comment\">$name</option> \n";
    }
}

 
if 
($data=='district') 
{
echo "<select name='district' onChange=\"dochange('metro', this.value) \">\n";
echo "<option value=''>-----Выбрать-----</option>\n";                               
$result 
= mysql_db_query($dbname,"SELECT location_Priority, location_name FROM Classificator_location 
WHERE  location_comment = '$val' ORDER BY location_name"
);
    while(list($location_Priority, $name) = mysql_fetch_array($result))
    {
    echo "<option value=\"$location_Priority\">$name</option> \n";
    }     
}


if ($data=='metro') 
{
echo "<select name='metro' onChange=\"dochange('name', this.value)\">\n";
echo "<option value=''>-----Выбрать-----</option>\n";                               
$result 
= mysql_db_query($dbname,"SELECT location_ID, location_name FROM Classificator_location 
WHERE location_Priority = '$val'  ORDER BY location_name"
);
    while(list($id, $name) = mysql_fetch_array($result))
    {       
    echo 
"<option value=\"$id\">$name</option> \n";
    }    
  echo 
"</select>\n";
}

if ($data=='name') 
echo $val
;


HTML
<script language=Javascript>

function Inint_AJAX() {
try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {} //IE
try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} //IE
try { return new XMLHttpRequest(); } catch(e) {} //Native Javascript
alert("XMLHttpRequest not supported");
return null;
};

function dochange(src, val) {
var req = Inint_AJAX();
req.onreadystatechange = function () {
if (req.readyState==4) {
if (req.status==200) {
document.getElementById(src).innerHTML=req.responseText; //
}
}
};
req.open("GET", "/js/location/locale_ofc.php?data="+src+"&val="+val); //
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); // set Header
req.send(null); //
}

window.onLoad=dochange('region', -1);
</script>
</head>
<body>
<form action="" method="get">
<div id="region"></div>
<div id="district"></div>
<div id="metro"></div>
<div id="name"></div></form>
</body></html>

Очень желательно обработать данные на предмет безопасности.
Да, и ещё. Кодировка - utf-8. Не ручаюсь, что будет работать под виндой.

Спустя 2 месяца, 12 дней, 8 часов, 49 минут, 50 секунд (13.04.2009 - 17:14) j0hndoe написал(а):
Доброго времени форумчане. Очень интересныя инфа, но у меня проблема: попытался использовать полученную инфу в создании динамических селектов с использованием базы geonames, но при попытке получить данные из переменной $val терплю неудачу - скрипт считывает значение полученное во втором запросе
пример можно увидеть здесь http://online-player.org/test/test.html
а это собственно сам код который не дает мне покоя уже битых две недели.
Если сможете подсказать или поправить буду очень благодарен

PHP
<?php

    header 
("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    
header ("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
    
header ("Cache-Control: no-cache, must-revalidate");
    
header ("Pragma: no-cache");
    
header("content-type: application/x-javascript; charset=windows-1251");
    
$data=$_GET['data'];
    
$val=$_GET['val'];
    
$dbhost "localhost";
$dbuser "geo";
$dbpass "test";
$dbname "geo";
mysql_pconnect($dbhost,$dbuser,$dbpass) or die ("Unable to connect to MySQL server");

@
mysql_query("SET NAMES windows-1251");

if (
$data=='region')
{
echo 
"<select name='region' onChange=\"dochange('district', this.value)\">\n";
echo 
"<option value=''>=====Выбрать=====</option>\n";
$result mysql_db_query($dbname,"SELECT country_code,name FROM geonames WHERE feature_code = 'PPLC' ORDER BY `geonames`.`name` ASC");
    while(list(
$country_code$name) = mysql_fetch_array($result))
    {
    echo 
"<option value=\"$country_code\">$name</option> \n";
    }
}


if (
$data=='district')
{
echo 
"<select name='district' onChange=\"dochange('metro', this.value) \">\n";
echo 
"<option value=''>=====Выбрать=====</option>\n";
$result mysql_db_query($dbname,"SELECT admin1_code,name FROM geonames WHERE country_code = '$val{$region}' AND feature_code = 'PPLA' ORDER BY `geonames`.`name` ASC");
    while(list(
$admin1_code$name) = mysql_fetch_array($result))
    {
    echo 
"<option value=\"$admin1_code\">$name</option> \n";
    }
}


if (
$data=='metro')
{
echo 
"<select name='metro' onChange=\"dochange('name', this.value)\">\n";
echo 
"<option value=''>=====Выбрать=====</option>\n";
$result mysql_db_query($dbname,"SELECT ansiname, name FROM geonames WHERE admin1_code = '$val{$district}' AND country_code = '$val{$region}' ORDER BY `geonames`.`name` ASC");
    while(list(
$ansiname$name) = mysql_fetch_array($result))
    {
    echo 
"<option value=\"$ansiname\">$name</option> \n";
    }
  echo 
"</select>\n";
}
//if ($data=='name')
phpinfo(32);


В примере, вернее в служебной информации видно что последнее значение которое выходит data = metro, а $val = admin1_code.


feature_code = 'PPLC' - столица страны
feature_code = 'PPLA' -административный центр
country_code - обозначение страны 2 буквы
admin1_code все города одного округа

Заранее спасибо

Спустя 3 часа, 47 минут, 30 секунд (13.04.2009 - 21:01) twin написал(а):
Чесно говоря я ничего не понял из этого. Как данные организованы в базе?

Спустя 11 часов, 13 минут, 25 секунд (14.04.2009 - 08:15) j0hndoe написал(а):
Сама таблица представляет собой следующее :

SQL
`geonameid` int(10) unsigned NOT NULL default '0',
`name` varchar(200) NOT NULL default '',
`ansiname` varchar(200) NOT NULL default '',
`alternatenames` varchar(2000) NOT NULL default '',
`latitude` double NOT NULL default '0',
`longitude` double NOT NULL default '0',
`feature_class` char(1) ,
`feature_code` varchar(10) ,
`country_code` char(2),
`cc2` varchar(60),
`admin1_code` varchar(20) default '',
`admin2_code` varchar(80) default '',
`admin3_code` varchar(20) default '',
`admin4_code` varchar(20) default '',
`population` bigint(11) default '0',
`elevation` int(11) default '0',
`gtopo30` int(11) default '0',
`timezone` varchar(40),
`modification_date` date default '0000-00-00',
PRIMARY KEY (`geonameid`)


где feature_code имеет несколько различных значений.

моя проблема заключается в том что в
PHP
$data == 'metro'

я хочу передать значения полученные из первого и второго запроса
SQL
'$val{$district}'SELECT ansiname, name FROM geonames WHERE admin1_code = AND country_code = '$val{$region}'

но они не передаются

Спустя 16 дней, 14 часов, 24 минуты, 39 секунд (30.04.2009 - 22:39) Гость_Владимир написал(а):
Цитата (twin @ 28.01.2009 - 13:54)
Ничего не понял. Аякс для того и используется, что бы не изменять страницу целиком. Он не должен сбрасывать ранее выбранные опшены.
Кстати, Ваш скрипт не может работать, потому что там синтаксическая ошибка. Вот тут:
PHP
else if ($data=='metro') {
Нет в php оператора else if, как в js Нужно писать слитно. И скобки фигурной не хватает:
PHP
}
elseif ($data=='metro')

Здравствуйте! Не работают динамические селекты в IE. Выдает ошибку 1072896658. Помогите!!!

Спустя 4 часа, 15 минут, 18 секунд (1.05.2009 - 02:55) twin написал(а):
Как то так

Спустя 2 дня, 13 часов, 6 минут, 4 секунды (3.05.2009 - 16:01) j0hndoe написал(а):
Блеск!!!
Респект twiny

Спустя 4 месяца, 18 дней, 2 часа, 42 минуты, 40 секунд (21.09.2009 - 18:43) benzapila написал(а):
Приклад хороший. Але є одна проблема: я цілий день грався і так і не зміг розширити це меню з трьох селекторів до 5 селек торів як то потрібно було мені. якщо якщо є запитання то пишіть на benza-pila[СОБАКА]mail.ru

Спустя 1 месяц, 25 дней, 18 часов, 57 минут, 6 секунд (17.11.2009 - 14:41) Гость_Саша написал(а):
Здравствуйте!
Подскажите пож.

как после выбора селектов и перезагрузке странички по нажатию кнопки присвоить всем селектам значение выбранные раньше взяв параметры из Get или Post

<form action="" method="get">
<div id="region" ></div>
<div id="city" ></div>
<input name="" type="submit" />
</form>

Спустя 4 месяца, 1 час, 50 минут (17.03.2010 - 16:31) MiGorsi написал(а):
Цитата (twin @ 1.05.2009 - 02:55)
Как то так

Привет твин класный скрипт. Вот только когда я его запускяю выходит ошибка:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\xampp\htdocs\select\select_country.php on line 10

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

Спустя 2 месяца, 7 дней, 24 минуты, 10 секунд (24.05.2010 - 15:55) Гость_Сергей написал(а):
Цитата (MiGorsi @ 17.03.2010 - 13:31)
Пытался найти коде ошибку, но не нашел... Не моглибы вы прояснить в чем проблема...

Имя базы данных нужно указать в connect.php то, куда вставил таблицы select_city, select_country и select_region

Спустя 8 дней, 3 часа, 57 минут, 11 секунд (2.06.2010 - 19:52) tolya написал(а):
Друзья подскажите. Пытался встроить скрипт в компонент adsmanager 2.5 на joomla, страна выводится, но не сохраняется, а регионы с городами вообще не выводятся. неделю мучаюсь ничего не получается.

Спустя 47 минут, 7 секунд (2.06.2010 - 20:39) twin написал(а):
Даж не знаю чем помочь... Не ставить же джумлу

Спустя 20 часов, 42 минуты, 37 секунд (3.06.2010 - 17:22) tolya написал(а):
ладно с джумлой сам разберусь, а можно хотя бы пошагово пояснить как скрипт встроить в сайт, ведь после установки скрипта; выбираешь - страна - область - город - информация меняется взависимости от выбраных значений, вот это и не получается.

Спустя 5 часов, 51 минута, 37 секунд (3.06.2010 - 23:13) twin написал(а):
Вот, маленько переделал, теперь будет проще разобраться.

Спустя 6 дней, 14 часов, 9 минут, 5 секунд (10.06.2010 - 13:22) zvezda_t написал(а):
Пытаюсь переделать под свою БД...
файл :select_country.php

 function country() 
{
$country_id = isset($_POST['country_id']) ? $_POST['country_id'] : NULL;

$res = mysql_query("SELECT * FROM `". IRB_PREFIX ."country`", IRB_CONNECT);

$select = "<select style=\"width:200px\" id=\"country_id\" name=\"country_id\" onchange=\"Country()\" >\n"
."<option value='0'>- Выберите страну -</option>\n";

while($row = mysql_fetch_assoc($res))
{
$select .= "<option ";
if($row['country_id'] == $country_id)
$select .="selected=\"selected\"";
$select .= " value=\"". $row['country_id'] ."\">". $row['name'] ."</option>\n";
}

$select .= "</select>";

return $select;
}


скажите пожалуйста, вызов onchange=\"Country()\" это вызов этой же функции??
если мне её переименовать нужно - в файле ajax.js также нужно изменения вносить?

Спустя 29 минут, 13 секунд (10.06.2010 - 13:52) Basili4 написал(а):
По первому вопросу скажу НЕТ событие onchange вызывает код написанный js
А эта фунция на php могу предположить что существует функция Country() на js поищи её в ajax.js

Спустя 7 минут, 46 секунд (10.06.2010 - 13:59) zvezda_t написал(а):
файл ajax.js очень странно - там сплошные регулярные выражения - при этом всё прекрасно работает...
два раза встречается слово Country, но описание функции я не нашла(( как так?

вот он:


/**
* Script of a consecutive choice selects
* NOTE: Requires PHP version 4.0 or later
* Info:
http://irbis-team.com
* @package irb_selects
* @author IT studio IRBIS-team
* @copyright © 2010 IRBIS-team
* @license
http://www.opensource.org/licenses/rpl1.5.txt
*/
//////////////////////////////////////////////////////////////



eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('1 6;1 q=g();2 5(l){e o.w(l)}2 v(){6="A";5(\'c\').m=\'\';1 a=5(\'i\').9;1 3="i="+a;7(3)}2 u(){6="c";1 a=5(\'h\').9;1 3="h="+a;7(3)}2 g(){j(y.t=="d z B"){0=f r("d.n")}p{0=f s()}e 0}2 7(3){0.F(\'P\',O+\'/N.C\',R);0.T=k;0.U("S-M","L/x-E-D-G; H=K-8");0.J(3)}2 k(){1 a,b;a=0.I;j(a==4){b=0.Q;5(6).m=b}}',57,57,'req|var|function|query||ge|irb_select|Request||value|||city|Microsoft|return|new|Create|region_id|country_id|if|Refresh|id|innerHTML|XMLHTTP|document|else|irb_req|ActiveXObject|XMLHttpRequest|appName|Region|Country|getElementById||navigator|Internet|region|Explorer|php|form|www|open|urlencoded|charset|readyState|send|utf|application|Type|selects|irb_path|post|responseText|true|Content|onreadystatechange|setRequestHeader'.split('|'),0,{}))



Спустя 2 минуты, 27 секунд (10.06.2010 - 14:02) zvezda_t написал(а):
О, Гуру, twin!!!!
возможно менять названия у функций? Или чайникам не дано в логике ajax разобраться?

Спустя 53 секунды (10.06.2010 - 14:03) Basili4 написал(а):
Этот код обработан обфускатором поэтому он такой

Спустя 1 минута, 50 секунд (10.06.2010 - 14:04) twin написал(а):
Этот скрипт абфусцирован просто. Я исходник найти не могу sad.gif

Спустя 37 секунд (10.06.2010 - 14:05) twin написал(а):
А для чего их менять?

Спустя 2 минуты, 18 секунд (10.06.2010 - 14:07) zvezda_t написал(а):
Цитата
Этот код обработан обфускатором поэтому он такой

значит он закодирован - и нельзя изменения вносить?

Еще вопрос вот если мне нужно несколько переменных в post передавать, и переименовать country_id:
$_POST['country_id']

для этого тоже соответствующие изменения в ajax файл нужно вносить?

Спустя 53 секунды (10.06.2010 - 14:08) zvezda_t написал(а):
Цитата
А для чего их менять?


потому что у меня нет стран, но зато есть еще улицы и дома...
хочу добавить селектов, при этом внести еще переменные (у меня будет несколько адресов- например домашний, рабочий и тд) и для каждого я хочу вызывать этот скрипт, при этом менять id и name у select- это возможно?

Спустя 56 минут, 4 секунды (10.06.2010 - 15:04) Gabriel написал(а):
оно?

Спустя 4 минуты, 32 секунды (10.06.2010 - 15:09) Basili4 написал(а):
Он я глянул в код очень мне заинтересовала эта функция

function Create(){
if(navigator.appName == "Microsoft Internet Explorer"){
req = new ActiveXObject("Microsoft.XMLHTTP");
}else{
req = new XMLHttpRequest();
}
return req;
}


Я видел различные способы создавать XMLHttpRequest так еще не видел. Надо будет попробывать

Спустя 3 часа, 57 минут, 43 секунды (10.06.2010 - 19:07) zvezda_t написал(а):
Цитата
оно?

Gabriel, да! оно! Большое спасибо!!! smile.gif

Спустя 4 минуты, 42 секунды (10.06.2010 - 19:11) zvezda_t написал(а):
а для чего нужен файл .htaccess?? rolleyes.gif

Спустя 1 минута, 37 секунд (10.06.2010 - 19:13) Gabriel написал(а):
zvezda_t
незачто.
в данном случае устанавливает кодировку.

Спустя 56 минут, 32 секунды (10.06.2010 - 20:09) zvezda_t написал(а):
вот и он:
ajax.js
var d = document; 
var div_select;
var req = Create();

function Country()
{
div_select = "region";
d.getElementById('city').innerHTML = '';
var a = d.getElementById('country_id').value;
query = "country_id="+a;
Request(query);
}

function Region()
{
div_select = "city";
var a = d.getElementById('region_id').value;
query = "region_id="+a;
Request(query);
}

function Create(){
if(navigator.appName == "Microsoft Internet Explorer"){
req = new ActiveXObject("Microsoft.XMLHTTP");
}else{
req = new XMLHttpRequest();
}
return req;
}
function Request(query)
{
req.open('post', 'selects.php' , true );
req.onreadystatechange = Refresh;
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
req.send(query);
}
function Refresh()
{
var a,b;
a = req.readyState;
if( a == 4 )
{
b = req.responseText;

d.getElementById(div_select).innerHTML = b;
}
}


честно говоря страшно выглядит...
скажите пожалуйста, почему в функции Refresh() сравнение с 4? что это означает?

Спустя 1 час, 6 минут, 30 секунд (10.06.2010 - 21:16) Gabriel написал(а):
это ответ сервера сообщающий, что скрипт закончил свою работу и отдал все данные.

Спустя 11 секунд (10.06.2010 - 21:16) twin написал(а):
Ничего страшного... Тут почитай.

Спустя 9 часов, 21 минута, 32 секунды (11.06.2010 - 06:38) zvezda_t написал(а):
Цитата
twin Ничего страшного... Тут почитай.


ух ты! почитала! мне нравится!!! user posted image
СПАСИБО ОГРОМНОЕ!!!

Спустя 4 дня, 2 часа, 30 минут, 19 секунд (15.06.2010 - 09:08) zvezda_t написал(а):
Еще вопрос появился rolleyes.gif

Вот при выборе элемента списка в значении, отправляется код $row['country_id']:

$res = mysql_query("SELECT * FROM `". IRB_PREFIX ."country`", IRB_CONNECT); 

$select = "<select style=\"width:200px\" id=\"country_id\" name=\"country_id\" onchange=\"Country()\" >\n"
."<option value='0'>- Выберите страну -</option>\n";

while($row = mysql_fetch_assoc($res))
{
$select .= "<option ";
if($row['country_id'] == $country_id)
$select .="selected=\"selected\"";
$select .= " value=\"". $row['country_id'] ."\">". $row['name'] ."</option>\n";
}
$select .= "</select>";

скажите пожалуйста, а если я хочу чтобы сразу после выбора страны, внизу прописывался адрес - страна такая то (вот как на сайте кладр) мне что всю информацию в value записывать, а потом регулярными выражениями разбивать? или код передается с помощью функции Country() в файл selects.php и уже там нужно делать запрос к БД и извлекать данные, но тогда вопрос - как мне их вывести в поле
<input type='text' id='adres' name='adres' value='".@$_POST['adres']."'> которое находиться в основном скрипте? rolleyes.gif

Спустя 2 часа, 16 минут, 12 секунд (15.06.2010 - 11:24) twin написал(а):
Тут придется возвращать множественные данные. Потому что один запрос - один ответ. А на стороне клиента разбирать. Можно с помощью JSON к примеру.

Спустя 2 минуты, 37 секунд (15.06.2010 - 11:27) zvezda_t написал(а):
JSON-про такое еще не слышала! пошла читать cool.gif
спасибочки!!!


Спустя 1 час, 47 минут, 6 секунд (15.06.2010 - 13:14) zvezda_t написал(а):
Скажите пожалуйста, вот если я несколько раз в скрипт вставлю эти селекты, у меня не будет ошибок из за одинаковых айдишников?
Ведь скрипт selects.php через ajax запускается... или это не имеет значения? нужно менять id и name для селектов, при повторном использовании?

Спустя 17 часов, 30 минут, 55 секунд (16.06.2010 - 06:45) zvezda_t написал(а):
ответьте мне пожалуйста, можно ли этот скрипт несколько раз в одной форме использовать?

Спустя 3 часа, 51 минута, 22 секунды (16.06.2010 - 10:36) twin написал(а):
Немного модифицировать и можно. ID естественно должны быть разными, на то они и идентификаторы.

Спустя 20 часов, 42 минуты, 44 секунды (17.06.2010 - 07:19) zvezda_t написал(а):
спасибо twin)
попыталась модифицировать, заменив id- переменными, всё получилось до момента, когда в файле selects.php нужно поймать значение POST, не знаю как в этом случае country_id, заменить на $country_id blink.gif

if(!empty($_POST['country_id'])) 
echo region($_POST['country_id']);

Спустя 1 час, 59 минут, 11 секунд (17.06.2010 - 09:18) zvezda_t написал(а):
глобальную переменную никак нельзя объявить? huh.gif

Спустя 1 день, 3 часа, 17 минут, 39 секунд (18.06.2010 - 12:36) zvezda_t написал(а):
еще вопрос появился:
после отправки формы исчезают все селекты кроме первого, с этим можно что нибудь сделать?

Спустя 1 час, 58 минут, 47 секунд (18.06.2010 - 14:35) zvezda_t написал(а):
twin, просто скажи - это невозможно?

Спустя 12 минут, 1 секунда (18.06.2010 - 14:47) tomash написал(а):
Цитата (zvezda_t @ 17.06.2010 - 06:18)
глобальную переменную никак нельзя объявить? huh.gif

$_POST['a']='a';
- вот так

Спустя 2 минуты, 47 секунд (18.06.2010 - 14:49) Basili4 написал(а):
Цитата (zvezda_t @ 17.06.2010 - 10:18)
глобальную переменную никак нельзя объявить?

А сессионые переменные чем тебе не глобальные по мне так глобальней не бывают можно еще в кук

Спустя 3 минуты, 28 секунд (18.06.2010 - 14:53) twin написал(а):
Нет ничего невозможного... Я не совсем правда понял задачу. Попробуй поподробнее описать, что ты делаешь.

Спустя 1 минута, 19 секунд (18.06.2010 - 14:54) Gabriel написал(а):
конечно они буду исчезать. ведь они добавляются после выбора опции первого, второго и тд.

Спустя 30 минут, 41 секунда (18.06.2010 - 15:25) zvezda_t написал(а):
с переменными, для использования этого кода несколько раз, разобралась, так:

for($i=1; $i<=2; $i++)	
{
if(!empty($_POST["country_id$i"]))
echo region($_POST["country_id$i"]);
}


остался вопрос с исчезновением селектов.

Цитата
Нет ничего невозможного... Я не совсем правда понял задачу. Попробуй поподробнее описать, что ты делаешь.


У меня есть анкета, пользователь заполняет в одной форме несколько адресов: домашний, рабочий и т.д.
Для выбора адреса - я использую связанные селекты и БД КЛАДР.
Заполнив все данные пользователь сохраняет анкету, но если анкета заполнена с ошибками - то предлагается откорректировать форму повторно, ранее введенные значения не пропадают, так как стоит везде:
<input type='text' name='name1' value='".@$_POST['name1']."'>


но адресные значения пропадают, так как исчезают сами селекты после отправки формы.
вот. как быть?

Спустя 32 минуты, 31 секунда (18.06.2010 - 15:57) twin написал(а):
Ну если взялась юзать аякс, не проподать же добру... Делай валидацию тоже на аяксе. Тем более JSON тебя не пугает уже...
А вернуть отмеченные селекты можно конечно, но поверь, это не проще будет.

Спустя 3 минуты, 6 секунд (18.06.2010 - 16:00) zvezda_t написал(а):
Цитата
Ну если взялась юзать аякс, не проподать же добру... Делай валидацию тоже на аяксе.

попроще скажи пожалуйста... rolleyes.gif

Спустя 9 минут, 11 секунд (18.06.2010 - 16:10) twin написал(а):
Ну смотри. Вот допустим сайтец
там как раз этот скрипт и валидация на аяксе.

Спустя 3 часа, 18 минут, 8 секунд (18.06.2010 - 19:28) zvezda_t написал(а):
ничего себе, я только страничку открыла - а там мой регион уже автоматически выбрался blink.gif

я даже не спрашиваю - как это сделано так сразу...
скажите как выбранный результат не потерять rolleyes.gif

Спустя 3 минуты, 29 секунд (18.06.2010 - 19:31) Basili4 написал(а):
на onchange событие поставь отправку AJAX ом на сервер выбраного значения

Спустя 1 день, 13 часов, 34 минуты, 53 секунды (20.06.2010 - 09:06) zvezda_t написал(а):
Задача такая:
необходимо не только позволять выбирать локации, но и верно отображать их, в такой, например, ситуации как редактирование, когда все селекты уже означены, а соответствующие списки в них уже загружены.

В версии которую twin дал, селекты поочереди появлялись - в этих методах(метод1, метод2) селекты уже все стоят, только их значания меняются, а как быть если мне какой-то из селектов не нужен - допустим не будет списка домов или такой момент:
для города регионального значения можно выбрать или населённый пункт или сразу улицу,
если выбрали населённый пункт - то мне еще раз список улиц нужен для него
если выбрали улицу - то переходим к домам

Но как же мне сразу отобразить для редактирования все выбранные селекты в версии twinа, если они там поочереди грузяться?

совсем я запуталась(((

Спустя 52 минуты, 12 секунд (20.06.2010 - 09:58) Lenarfate написал(а):
псевдокод)

function result()
{
var first_select = document.getElementById('first_select').value;
var second_select = document.getElementById('second_select').value;

var res = document.getElementById('result').innerHTML = 'Вы выбрали то-то';
}

как-то так

Спустя 2 минуты, 14 секунд (20.06.2010 - 10:01) zvezda_t написал(а):
просто текстом вывести то что ранее выводилось? а открыть в селектах не возможно?

Спустя 15 минут, 24 секунды (20.06.2010 - 10:16) Lenarfate написал(а):
то есть открыть в селектах?в них же итак остаются значения

Спустя 7 минут, 37 секунд (20.06.2010 - 10:24) zvezda_t написал(а):
нужно повторно анкету для редактирования открыть

Спустя 23 минуты, 51 секунда (20.06.2010 - 10:47) Lenarfate написал(а):
ну ты сохраняй полученные данные в массив и потом выводи где тебее нужно

Спустя 34 минуты, 15 секунд (20.06.2010 - 11:22) zvezda_t написал(а):
первый селект я могу вывести, а другие как?
они же формируются через событие onchange() - там аякс используется...

Спустя 18 минут, 4 секунды (20.06.2010 - 11:40) Lenarfate написал(а):
как указал выше. берешь значения по id элемента

Спустя 19 минут, 49 секунд (20.06.2010 - 12:00) zvezda_t написал(а):
значения то я беру. а куда выведу????
вместо селектов в форме стоит же:

<div id="region" ></div>
<div
id="city" ></div>


и селекты там появляются только после вызова двух функций
ajax.js
function Country() 
{
div_select = "region";
d.getElementById('city').innerHTML = '';
var a = d.getElementById('country_id').value;
query = "country_id="+a;
Request(query);
}


select.php


if(isset($_POST['country_id']))
echo region();

function region()
{
$country_id = isset($_POST['country_id'])?$_POST['country_id']:NULL;
$query = "SELECT * FROM `".PREFIX."region` WHERE `country_id`='".(int)$country_id."'";
$res = mysql_query($query);
$select = "<select id=\"region_id\" name=\"region_id\" onchange=\"Region()\" >
<option value='0'>- Выберите pегион -</option>"
;

while($row = mysql_fetch_array($res))
{
$select .= "<option value='".$row['region_id']."'>".$row['name']."</option>\r\n";
}
$select .= "</select>";
return $select;
}

Спустя 19 минут, 34 секунды (20.06.2010 - 12:19) zvezda_t написал(а):
я могу функцию echo region(); которая в файле select.php
вызвать из index.php???

Спустя 6 минут, 13 секунд (20.06.2010 - 12:25) zvezda_t написал(а):
Цитата (twin @ 18.06.2010 - 13:10)
Ну смотри. Вот допустим сайтец
там как раз этот скрипт и валидация на аяксе.

после нажатия "зарегистрироваться" если не все поля заполнены - выбранные селекты остаются.

как это сделано? форма не отправляется пока все поля не заполнены?
а если отправляется? rolleyes.gif

Спустя 4 часа, 32 минуты, 14 секунд (20.06.2010 - 16:58) zvezda_t написал(а):
Мне же самое главное открыть анкету для редактирования, вот тут как быть? как мне по ранее выбранным значениям- установить все селекты???
twin-чик вся надежда на тебя... user posted image

Спустя 15 часов, 56 минут, 37 секунд (21.06.2010 - 08:54) zvezda_t написал(а):
после того как вставила на страницу Динамические селекты, она стала грузится на 6 сек дольше ohmy.gif !!! что делать???

Спустя 5 часов, 39 минут, 8 секунд (21.06.2010 - 14:33) twin написал(а):
Ну вряд ли это из-за них. А чтобы установить их для редактиования, нужно симитировать выбор. Я делал прозрачную гифку 1х1 пиксель, которую подгружал вместе с селектами. А на онлоад картинки - вызов функции. Ну а начальное значение из базы.

Спустя 36 минут, 36 секунд (21.06.2010 - 15:10) zvezda_t написал(а):
Цитата (twin @ 21.06.2010 - 11:33)
Ну вряд ли это из-за них. А чтобы установить их для редактиования, нужно симитировать выбор. Я делал прозрачную гифку 1х1 пиксель, которую подгружал вместе с селектами. А на онлоад картинки - вызов функции. Ну а начальное значение из базы.

как рада, что Вы мне ответили!!!))))
а я прям из div вызываю функции хранящиеся в selects.php, сам файл selects.php немножко изменила и вставляю его прям в свой код, чтоб функции были видны...

У меня проблема сейчас - я видимо не правильно этот код размножила, как только еще один набор селектов подключаю - начинается торможение. как правильно несколько раз селекты вставить???



Спустя 50 минут, 43 секунды (21.06.2010 - 16:01) twin написал(а):
Ну код то покажи. Я начинаю подозревать, что ты на каждый опшен запрос делаешь. Тогда конечно тормозить будет.

Спустя 9 минут, 58 секунд (21.06.2010 - 16:11) zvezda_t написал(а):
внесла такие изменения:

1) в форме id для div сделала переменными
задаю разные $i и вставляю эту форму несколько раз куда нужно

<?php echo country($i); 

<
div id="region$i" ></div>

<
div id="city$i" ></div>
?>



2)
в файле selects.php зменила, чтоб все переменные проверить

for($j=1; $j<=2; $j++)
{
if(!empty($_POST["country_id$j"]))
echo region($_POST["country_id$j"]);

if(!empty($_POST["region_id$j"]))
echo city($_POST["region_id$j"]);
}



3)
и конечно сам ajax.js

function Country(i) 
{
div_select = "region"+i;
d.getElementById('city'+i).innerHTML = '';
var a = d.getElementById('country_id'+i).value;
query = "country_id"+i+"="+a;
Request(query);
}

function Region(i)
{
div_select = "city"+i;
var a = d.getElementById('region_id'+i).value;
query = "region_id"+i+"="+a;
Request(query);
}

Спустя 3 минуты, 5 секунд (21.06.2010 - 16:14) zvezda_t написал(а):
Цитата
Я начинаю подозревать, что ты на каждый опшен запрос делаешь.


а как иначе??? rolleyes.gif

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

Спустя 25 секунд (21.06.2010 - 16:14) twin написал(а):
а это как?
Цитата
а я прям из div вызываю функции хранящиеся в selects.php, сам файл selects.php немножко изменила и вставляю его прям в свой код, чтоб функции были видны...

Спустя 2 минуты, 43 секунды (21.06.2010 - 16:17) zvezda_t написал(а):
Цитата
а это как?


require_once "../www/irb_selects/fun_selects.php";

if(isset($hcod_kladr[$i]))
{
print "
<br/>
<table><tr><td>
<div id='district"
.$i."'>".fn_district($hcod_kladr[$i], $i)."</div></td></tr>
<tr><td><div id='city"
.$i."'>".fn_city($hcod_kladr[$i], $i)."</div></td></tr>
<tr><td><div id='populated"
.$i."'>".fn_populated($hcod_kladr[$i], $i)."</div></td></tr>
<tr><td><div id='street"
.$i."'>".fn_street($hcod_kladr[$i], $i)."</div></td></tr>
<tr><td><div id='house"
.$i."'>".fn_house($hcod_kladr[$i], $i)."</div>
</td></tr></table>"
;
}
else
{
print "
<br/>
<table><tr><td>
<div id='district"
.$i."'></div></td></tr>
<tr><td><div id='city"
.$i."'></div></td></tr>
<tr><td><div id='populated"
.$i."'></div></td></tr>
<tr><td><div id='street"
.$i."'></div></td></tr>
<tr><td><div id='house"
.$i."'></div>
</td></tr></table>"
;
}

Спустя 2 минуты, 49 секунд (21.06.2010 - 16:20) twin написал(а):
Ну и саму функцию... Что стесняешься))

Спустя 1 минута, 53 секунды (21.06.2010 - 16:21) zvezda_t написал(а):
не хочется публичного позора, можно в личку?

Спустя 1 минута, 51 секунда (21.06.2010 - 16:23) twin написал(а):
Давай давйй. Мож кому пригодится. А позор, это когда тыришь код, а ты разрабатываешь. Тут гордится надо, а не стыдиться.

Спустя 9 минут, 36 секунд (21.06.2010 - 16:33) zvezda_t написал(а):
извините, сюда - пока Духу не хватило... rolleyes.gif

Спустя 3 минуты, 10 секунд (21.06.2010 - 16:36) qpayct написал(а):
правильно, украдут идею однозначно я их давно знаю tongue.gif

Спустя 2 минуты, 7 секунд (21.06.2010 - 16:38) Basili4 написал(а):

qpayct сам наверно ждал когда запостишь что бы код спереть для нашего сайта. Домовитый товарищЪ

Спустя 7 минут, 59 секунд (21.06.2010 - 16:46) qpayct написал(а):
раскусили....... чувствую себя, как мышь под колпаком unsure.gif

Спустя 1 час, 18 минут, 2 секунды (21.06.2010 - 18:04) zvezda_t написал(а):
а если я полностью отдельный код для каждых селектов сделаю, это поможет? rolleyes.gif

Спустя 4 месяца, 9 дней, 19 часов, 24 минуты, 8 секунд (31.10.2010 - 14:28) Stranger написал(а):
Цитата (twin @ 30.04.2009 - 23:55)
Как то так

А пример то не рабочий..

Ну например файл selects.php там нигде не вызывается.

Спустя 1 час, 13 минут, 42 секунды (31.10.2010 - 15:42) twin написал(а):

Спустя 1 час, 9 минут, 53 секунды (1.11.2010 - 16:52) asiret написал(а):
Цитата (twin @ 31.10.2010 - 12:42)
все работает...

Привязывается к id зарегистрированного юзера и выводит его ранее выбранные пункты.


И как это сделать, может кодом поделитесь?

Спустя 50 минут, 11 секунд (1.11.2010 - 17:42) asiret написал(а):
Поискала немногов инете, это надо делать с помощью ip2long и базы ip? Правильно понимаю!!!
Может подскажите базу по ip данным.

Спустя 26 минут, 51 секунда (1.11.2010 - 18:09) twin написал(а):
Щас я причешу немного и выложу

Спустя 30 минут, 37 секунд (1.11.2010 - 18:40) asiret написал(а):
Цитата (twin @ 1.11.2010 - 15:09)
Щас я причешу немного и выложу

Класс!!! Жду!!!

Спустя 6 дней, 19 часов, 56 минут, 26 секунд (8.11.2010 - 14:36) asiret написал(а):
Цитата (twin @ 1.11.2010 - 15:09)
Щас я причешу немного и выложу

А я все жду!!!

Спустя 1 час, 52 минуты, 22 секунды (8.11.2010 - 16:28) twin написал(а):
А вот и не выходит.
Нужна новая база, а её нет. Та, которая была год назад (я у заказчика спер) не канает. А новая денажкоф чтоит. Так что обманул я надежды. sad.gif

Спустя 23 дня, 53 минуты, 13 секунд (1.12.2010 - 17:22) Гость_Илья написал(а):
Спасибо! Очень помогло

Спустя 4 месяца, 3 дня, 8 часов, 41 минута, 52 секунды (5.04.2011 - 01:03) Сашок написал(а):
Присоединяюсь! Респект twiny!

Спустя 2 дня, 9 часов, 57 минут, 15 секунд (7.04.2011 - 11:01) zvezda_t написал(а):
по просьбе трудящихся выкладываю свою функцию :)
как я уже показывала вывод своих функций здесь
то сама функция выглядит так:

function fn_district($region_id, $i) 
{
$cod_region=substr($region_id,0,2);
$cod_district=substr($region_id,2,3);

//если нет района, ничего не выводим
if($cod_district=='000')
{
$select='';
}
else
{
$res = mssql_query("SELECT * FROM ".DATABASE_KLADR.".dbo.kladr WHERE CODE LIKE '".$cod_region."%00000000'
AND CODE<>'"
.$cod_region."00000000000' ORDER BY name");

$select='';
$kv=mssql_num_rows($res);
if(!empty($kv))
{
$sel=$cod_region.substr($region_id,2,3)."00000000";//код выбранного района

$select = "<select style=\"width:300px\" id=\"district_id$i\" name=\"district_id$i\" onchange=\"fnDistrict('$i')\" >\n"
."<option value='0'>- Выберите pайон -</option>\n";

while($row = mssql_fetch_assoc($res))
{
$district_name=$row['name'];
$district_socr=$row['socr'];
$district_name=iconv("cp1251","UTF-8", $district_name);
$district_socr=iconv("cp1251","UTF-8", $district_socr);
if(trim($district_socr)=== 'г' || strcmp(trim($district_socr), 'с/с')==0)
$district_name_kl=trim($district_socr).". ".$district_name;
else
$district_name_kl=$district_name."".trim($district_socr).".";

$select .= "<option ";
if($row['code'] == $sel)
$select .="selected=\"selected\"";

//формат JSON
$value_json="{\"code\":\"". $row['code']."\", \"index\": \"".$row['index']. "\"}";
$select .= " value='". $value_json . "'>". $district_name_kl ."</option>\r\n";

}
$select .= "</select>";//.(microtime(true) - $start)."";
}

}


return $select;
}


те всё тоже, только открываем уже выбранное значение (это необходимо для редактирования например.)
вот :)

Спустя 43 минуты, 1 секунда (7.04.2011 - 11:44) Nikitian написал(а):
Как раз недавно одному заказчику сделал общий вид, чтобы можно было легко изменять количество селектов:
Свернутый текст

Все данные для последующего селекта аяксом запрашиваются у скрипта getdata.php передавая ему имя выбранного селекта и его значение. Вызов скрипта осуществляется при смене значений у селектов с class="activeselect". Они привязываются к дочерним селектам по rel, в котором id дочернего селекта,
Таким образом можно делать сколь угодно длинные цепочки.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta
http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script
type="text/javascript" src="http://yandex.st/jquery/1.5.1/jquery.min.js"></script>
<script
type="text/javascript">
$(document).ready(function(){
$(".activeselect").bind("change",function(){
var value = $(this).val();
var next = $(this).attr("rel");
var current = $(this).attr("id");
if(next==""){
return;
}
$("#"+next).attr("disabled","disabled");
var next_=next;
var el;
while(next_!=undefined){
$("#"+next_).attr("disabled","disabled");
$("#"+next_).empty();
el = document.createElement("option");
el.setAttribute("value", "");
el.innerHTML = "Выберите";
$("#"+next_).append(el);
next_=$("#"+next_).attr("rel");
}
if(value==""){
return;
}
$(this).attr("disabled","disabled");
$.getJSON(
"./getdata.php",
{
field:$(this).attr("name"),
value:value
},
function(data){
var el;
for(var i=0;i<data.length;i++){
el = document.createElement("option");
el.setAttribute("value", data[i].id);
el.innerHTML = data[i].name;
$("#"+next).append(el);
}
$("#"+current).attr("disabled","");
$("#"+next).attr("disabled","");
}
);
});
});
</script>
</head>
<body>
<form
action="">
<select
name="mark" id="select1" rel="select2" class="activeselect">
<option
value="">Выберите</option>
<option
value="qwefdd">qwefwef</option>
<option
value="qwef">qwefwqef</option>
</select><br />
<select
name="model1" id="select2" rel="select3" disabled="disabled" class="activeselect">
<option
value="">Выберите</option>
</select><br />
<select
name="model2" id="select3" rel="select4" disabled="disabled" class="activeselect">
<option
value="">Выберите</option>
</select><br />
<select
name="model3" id="select4" rel="select5" disabled="disabled" class="activeselect">
<option
value="">Выберите</option>
</select><br />
<select
name="model4" id="select5" disabled="disabled">
<option
value="">Выберите</option>
</select>
</form>
</body>
</html>


Для примера getdata.php, который формирует случайные значения для селектов - чтобы показать как работает

<?php
$out=array();
$max=mt_rand(5,20);
for($i=0;$i<$max;$i++){
$out[]=array(
'id'=>mt_rand(2000,5000),
'name'=>mt_rand(1,1000)
);

}
header("Content-Type: application/x-javascript");
if(array_key_exists('jsoncallback',$_GET)){
echo $_GET['jsoncallback'];
}
echo json_encode($out);
die;


Спустя 5 месяцев, 21 день, 16 минут, 46 секунд (28.09.2011 - 12:01) Гость_Андрей написал(а):
irbis -КРАСАВЧИК
Большое спасибо - реально помог.
Быстрый ответ:

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