Зависимый select
ВОТ ИСХОДНИКИ
index.php
Код:
<script type="text/javascript">
function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == 'Microsoft Internet Explorer'){
ro = new ActiveXObject('Microsoft.XMLHTTP');
}else{
ro = new XMLHttpRequest();
}
return ro;
}
var http = createRequestObject();
function get_cities(country) {
http.open('get', 'cities.php?country=' + country
);
http.onreadystatechange = handleResponse;
http.send(null);
}
function handleResponse() {
if(http.readyState == 4){
var response = http.responseText;
document.getElementById("cities").innerHTML = response;
}
}
</script>
...
<select onchange="get_cities(this.value);">
<option value="russia">Россия</option>
<option value="belorussia">Беларусь</option>
</select>
<div id="cities"></div>
<select name="city" class="select_geo">
<option value="0" selected>--Выберете--</option>
</select>
...
function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == 'Microsoft Internet Explorer'){
ro = new ActiveXObject('Microsoft.XMLHTTP');
}else{
ro = new XMLHttpRequest();
}
return ro;
}
var http = createRequestObject();
function get_cities(country) {
http.open('get', 'cities.php?country=' + country
);
http.onreadystatechange = handleResponse;
http.send(null);
}
function handleResponse() {
if(http.readyState == 4){
var response = http.responseText;
document.getElementById("cities").innerHTML = response;
}
}
</script>
...
<select onchange="get_cities(this.value);">
<option value="russia">Россия</option>
<option value="belorussia">Беларусь</option>
</select>
<div id="cities"></div>
<select name="city" class="select_geo">
<option value="0" selected>--Выберете--</option>
</select>
...
И CITIES.PHP
Код:
<?
$db=@mysql_connect ('localhost', 'root', '');
mysql_select_db(gorodaistrani,$db);
$result = @mysql_query("SELECT * FROM cities WHERE `country`='russia'");
if (@mysql_num_rows($result) == 0) {
echo "NICHEGO NET";
}
else
{
echo"<select>";
while(list($country, $city) = mysql_fetch_row($result)) {
echo " <option value=''>$city </option> <br>"; }
echo"</select>";
}
?>
$db=@mysql_connect ('localhost', 'root', '');
mysql_select_db(gorodaistrani,$db);
$result = @mysql_query("SELECT * FROM cities WHERE `country`='russia'");
if (@mysql_num_rows($result) == 0) {
echo "NICHEGO NET";
}
else
{
echo"<select>";
while(list($country, $city) = mysql_fetch_row($result)) {
echo " <option value=''>$city </option> <br>"; }
echo"</select>";
}
?>
НУ хоть кто-нибудь поможет
Чтобы "(список городов) появился сразу, а не после выбора страны" надо сразу при формировании страницы города заносить в список.
Да я в Java вообще не разбираюсь поэтому и прошу примера
Для начала откройте
http://ru.wikipedia.org/wiki/Java и http://ru.wikipedia.org/wiki/JavaScript и найдите 50 отличий.
Посчет вашего вопроса - я вам ответил. Хотите, чтобы список городов всегда был во втором селекте, так и грузите сразу список городов туда. Тут вам JS не будет нужен.
Если нужно с помощью AJAX, что подсказывает мне, что именно это и надо (хотя первый пост говорит об обратном), то формируйте на сервере ответ в виде JSON. Приняв на JavaScript ответ, распарьсте его с помощью eval. И далее работайте с полученными данными, как с обычным массивом. Так будет правильней.
Вы же возвращаете текст. Так для начала смотрите, что возвращает вам сервер (использовать alert(переменная) или юзать firebug от Мозиллы). Если возвращает ваш текст, то значит скрипт отработал норм. Теперь надо только вставить его в select.
И нафиг уберите @ в коде.
Цитата:
Да я в Java вообще не разбираюсь поэтому и прошу примера
Примеров по использованию AJAX в сети навалом, я уже писал. ПРосто искать и разбираться Вам лень.
Ну что поделать :( А надо :( Мне вот тоже почему-то никто не хочет лабу по асме для процессора 80-ой серии делать, приходится самому разбираться и без примеров :(
Почему в "case 'Toyota' : echo " $model "; break;" $model выбирается из базы данных только первая, а не все
<?PHP
if(isset($_GET['model'])) {
$db=@mysql_connect ('localhost', 'root', '');
mysql_select_db(vibormodeli,$db);
$result = @mysql_query("SELECT * FROM modeli");
while(list($id, $id_mark, $model) = mysql_fetch_row($result)) {
# - - - - -
switch($_GET['model']) {
case 'Toyota' : echo " $model "; break;
}
# - - - - -
die();
}
}
?>
Код:
switch($_GET['model']) {
case 'Toyota' : echo " $model "; break;
}
case 'Toyota' : echo " $model "; break;
}
Также, повторю, уберите @ в коде, это пример унылого и неправильного программирования.
Да и какая цель у вашего кода? Если честно, то там бред какой-то написан. Все должно быть проще, чем то, что там есть.
Код:
case 'Toyota' : echo " Allion; Corolla; Mark II "; break;
case 'Mitsubishi : echo " Lancer; Land Cruiser "; break;
и т.д
case 'Mitsubishi : echo " Lancer; Land Cruiser "; break;
и т.д
А я хочу что бы эти модели брались из базы данных, а получилось, что выбирается только одна
Вот весь код
Код:
<?PHP
if(isset($_GET['model'])) {
$db=@mysql_connect ('localhost', 'root', '');
mysql_select_db(vibormodeli,$db);
$result = @mysql_query("SELECT * FROM modeli");
while(list($id, $id_mark, $model) = mysql_fetch_row($result)) {
# - - - - -
switch($_GET['model']) {
case 'Toyota' : echo " $model "; break;
}
# - - - - -
die();
}
}
?>
<script language="javascript" type="text/javascript">
var request = false;
var flag = false;
try { request = new XMLHttpRequest(); }
catch (trymicrosoft) {
try { request = new ActiveXObject("Msxml2.XMLHTTP");}
catch (othermicrosoft) {
try { request = new ActiveXObject("Microsoft.XMLHTTP");}
catch (failed) { request = false; }
}
}
if (!request) alert("Error initializing XMLHttpRequest!");
function get(url) { document.getElementById('car').innerHTML = '';
request.open("GET","<?PHP echo $_SERVER['PHP_SELF'].'?model='; ?>" + url, true);
request.onreadystatechange = updatePage;
request.send(null);
}
function updatePage() {
if (request.readyState == 4 && request.status == 200) {
var q = new Array();
q = request.responseText.split (";");
while(document.getElementById('mark').item(0))
if(document.all) document.getElementById('mark').options.remove(0);
else document.getElementById('mark').options[0] = null;
if(!flag){
if(document.all) document.getElementById('model').options.remove(0);
else document.getElementById('model').options[0] = null;
flag = true;
}
for(i=0;i<q.length;i++) {
var newElem = document.createElement("option") ;
newElem.text = q;
newElem.value = q;
document.getElementById('mark').options.add(newElem)
}
document.getElementById('mark').disabled = false;
}
}
function carprint() {
val = document.getElementById('model').value + " " +document.getElementById('mark').value;
document.getElementById('car').innerHTML = "You've selected " + val;
}
</script>
<select name='model' onchange='get(this.value)' id='model' style='width:100px;'>
<option disabled='disabled' selected='selected'>Select</option>
<option value='Toyota' >Toyota</option>
<option value='Folzvagen'>Folzvagen</option>
<option value='Pego'>Pego</option>
<option value='Subaru'>Subaru</option>
<option value='Honda'>Honda</option>
</select>
<select name='mark' id='mark' disabled='disabled' style='width:100px;'>
<option disabled='disabled' selected='selected'>Select</option>
</select>
<input type='button' onclick='java script:carprint();' value='Search'>
<br>
<span id='car'></span>
if(isset($_GET['model'])) {
$db=@mysql_connect ('localhost', 'root', '');
mysql_select_db(vibormodeli,$db);
$result = @mysql_query("SELECT * FROM modeli");
while(list($id, $id_mark, $model) = mysql_fetch_row($result)) {
# - - - - -
switch($_GET['model']) {
case 'Toyota' : echo " $model "; break;
}
# - - - - -
die();
}
}
?>
<script language="javascript" type="text/javascript">
var request = false;
var flag = false;
try { request = new XMLHttpRequest(); }
catch (trymicrosoft) {
try { request = new ActiveXObject("Msxml2.XMLHTTP");}
catch (othermicrosoft) {
try { request = new ActiveXObject("Microsoft.XMLHTTP");}
catch (failed) { request = false; }
}
}
if (!request) alert("Error initializing XMLHttpRequest!");
function get(url) { document.getElementById('car').innerHTML = '';
request.open("GET","<?PHP echo $_SERVER['PHP_SELF'].'?model='; ?>" + url, true);
request.onreadystatechange = updatePage;
request.send(null);
}
function updatePage() {
if (request.readyState == 4 && request.status == 200) {
var q = new Array();
q = request.responseText.split (";");
while(document.getElementById('mark').item(0))
if(document.all) document.getElementById('mark').options.remove(0);
else document.getElementById('mark').options[0] = null;
if(!flag){
if(document.all) document.getElementById('model').options.remove(0);
else document.getElementById('model').options[0] = null;
flag = true;
}
for(i=0;i<q.length;i++) {
var newElem = document.createElement("option") ;
newElem.text = q;
newElem.value = q;
document.getElementById('mark').options.add(newElem)
}
document.getElementById('mark').disabled = false;
}
}
function carprint() {
val = document.getElementById('model').value + " " +document.getElementById('mark').value;
document.getElementById('car').innerHTML = "You've selected " + val;
}
</script>
<select name='model' onchange='get(this.value)' id='model' style='width:100px;'>
<option disabled='disabled' selected='selected'>Select</option>
<option value='Toyota' >Toyota</option>
<option value='Folzvagen'>Folzvagen</option>
<option value='Pego'>Pego</option>
<option value='Subaru'>Subaru</option>
<option value='Honda'>Honda</option>
</select>
<select name='mark' id='mark' disabled='disabled' style='width:100px;'>
<option disabled='disabled' selected='selected'>Select</option>
</select>
<input type='button' onclick='java script:carprint();' value='Search'>
<br>
<span id='car'></span>
die убери... сколько раз сказать надо?