Есть 2 ниспадающих списка 1. список выводит список отделов организации (делается запрос к бд и выводим инфу) 2. список ДОЛЖЕН выводить должности конкретного выбранного отдела..... как это можно релизовать? тобишь я кликаю в первом списке на отдел формируется запрос к базе с id отдела и выводится из бд список должностей во второй ниспадающий список
Так-с, ну вроде, работает. Будут проблемы, пиши PHP: <? $countries = array('Россия', 'США', 'Германия'); $cities = array(array('Москва', 'Тверь', 'Уфа'), array('Нью-Йорк', 'Сан-Франциско', 'Бостон'), array('Берлин', 'Гамбург')); if (isset($_GET['do']) && $_GET['do'] === 'getcities') { $cid = intval($_GET['cid']); echo '<option value="-1">Выберите город...'."\n"; for ($i = 0; $i < count($cities[$cid]); $i++) echo '<option value="'.$i.'">'.$cities[$cid][$i]."\n"; exit; } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> </head> <body> <script> function GetXmlHttpObject() { var objXMLHttp=null; if (window.XMLHttpRequest) { objXMLHttp=new XMLHttpRequest(); } else if (window.ActiveXObject) { objXMLHttp=new ActiveXObject('Microsoft.XMLHTTP'); } return objXMLHttp; } function OnChangeCountry() { if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete') { forma.city.innerHTML = xmlHttp.responseText; forma.city.disabled = false; } } function ChangeCountry() { cid = forma.country.value; if (cid == -1) { forma.city.disabled = true; } else { xmlHttp = GetXmlHttpObject(); url = "/test.php?do=getcities&cid=" + cid; xmlHttp.onreadystatechange = OnChangeCountry; xmlHttp.open("GET", url, true); xmlHttp.send(null); } } </script> <form name="forma" method="post"> <select name="country" onchange="ChangeCountry()"> <option value="-1">Выберите страну... <? for ($i = 0; $i < count($countries); $i++) echo '<option value="'.$i.'">'.$countries[$i]."\n"; ?> </select> <select name="city" disabled> <option value="-1">Выберите город... </select> </form> </body> </html>
Борода в IE. Он не хочет innerHTML в select пихать. Пришлось сделать через DOM. Не совсем красиво, но мысль ты должен уловить: PHP: <? $countries = array('Россия', 'США', 'Германия'); $cities = array(array('Москва', 'Тверь', 'Уфа'), array('Нью-Йорк', 'Сан-Франциско', 'Бостон'), array('Берлин', 'Гамбург')); if (isset($_GET['do']) && $_GET['do'] === 'getcities') { $cid = intval($_GET['cid']); echo '-1;Выберите город...'."\n"; for ($i = 0; $i < count($cities[$cid]); $i++) { echo $i.';'.$cities[$cid][$i]; if ($i < count($cities[$cid]) - 1) echo "\n"; } exit; } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> </head> <body> <script> function GetXmlHttpObject() { var objXMLHttp=null; if (window.XMLHttpRequest) { objXMLHttp=new XMLHttpRequest(); } else if (window.ActiveXObject) { objXMLHttp=new ActiveXObject('Microsoft.XMLHTTP'); } return objXMLHttp; } function OnChangeCountry() { if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete') { opts = xmlHttp.responseText.split("\n"); forma.city.options.length = 0; for (i = 0; i < opts.length; i++) { opt = opts[i].split(";"); forma.city.options[i] = new Option(opt[1], opt[0]); } //forma.city.innerHTML = xmlHttp.responseText; forma.city.disabled = false; } } function ChangeCountry() { cid = forma.country.value; if (cid == -1) { forma.city.disabled = true; } else { xmlHttp = GetXmlHttpObject(); url = "/test.php?do=getcities&cid=" + cid; xmlHttp.onreadystatechange = OnChangeCountry; xmlHttp.open("GET", url, true); xmlHttp.send(null); } } </script> <form name="forma" method="post"> <select name="country" onchange="ChangeCountry()"> <option value="-1">Выберите страну... <? for ($i = 0; $i < count($countries); $i++) echo '<option value="'.$i.'">'.$countries[$i]."\n"; ?> </select> <select name="city" disabled> <option value="-1">Выберите город... </select> </form> </body> </html>
Еще вариант Две таблицы Таблица Отделы - поля ид отдела, название отдела. Таблица Должности - ид должности, ид отдела, название должности. PHP: <?php $connect = pg_connect ('host=xxx.xxx.xxx.xxx dbname=xxx user=xxx password=xxx'); if (!$connect) { echo 'Fuck'; } else { pg_query ($connect, 'set client_encoding=utf8'); $text = "<html>\n<head>\n<title>Page Title</title>\n"; $text .= "</head>\n"; $text .= "<body>\n"; $text .= "<form name=\"frm\">\n"; $text .= "<select id=\"sel1\" onClick=\"location.href = '/test_a.php?otd_id=' + this.value\">\n"; $otd = pg_query ($connect, 'select id, name from otd order by id'); if (isset ($_GET['otd_id']) && !empty ($_GET['otd_id'])) $otd_id = intval ($_GET['otd_id']); else $otd_id = -1; while ($otd_res = pg_fetch_array ($otd)) { $text .= "<option value=\"{$otd_res['id']}\" " . ($otd_id >= 0 && $otd_res['id'] == $otd_id ? 'selected' : '') . ">{$otd_res['name']}</option>\n"; } $text .= "</select><br><br><br>\n"; $text .= "<select id=\"sel2\">\n"; if ($otd_id >= 0) { $dolg = pg_query ($connect, 'select id, otd_id, name from dolg where otd_id = ' . $otd_id); while ($dolg_res = pg_fetch_array ($dolg)) { $text .= "<option value={$dolg_res['id']}>{$dolg_res['name']}</option>\n"; } } $text .= "</select>"; $text .= "</form>\n"; $text .= '</body></html>'; echo $text; pg_close ($connect); } ?> Для постгреса, но не думаю, что возникнет проблема перевести на мускуль. Тестилось на FF & O.
Во на пыхе немного понятней для меня спс,щас буду его под себя крутить! один вопрос,когда идет выбор из списка почемуто если просто кликнем на раскрытие то сразу идет выборка 0 ид,но если зажать кнопку и выбрать нужный отдел то выбирает то что надо.....мб баг?