Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Зависимый select

19K
29 ноября 2009 года
bulat
29 / / 02.12.2007
Как сделать в файле cities.php так чтобы 2ой <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 &#111;&#110;change="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>";
}
?>
19K
29 ноября 2009 года
bulat
29 / / 02.12.2007
НУ хоть кто-нибудь поможет
244
29 ноября 2009 года
UAS
2.0K / / 19.07.2006
Совсем обленились? Вам в одной тебе отвечали, так теперь другую же, почти клон сделали.

Чтобы "(список городов) появился сразу, а не после выбора страны" надо сразу при формировании страницы города заносить в список.
19K
29 ноября 2009 года
bulat
29 / / 02.12.2007
Да я в Java вообще не разбираюсь поэтому и прошу примера
244
29 ноября 2009 года
UAS
2.0K / / 19.07.2006
Ну и что? Я тоже в Java не силен. Да и не реализовать Вам это на яве, потому что тут уже вам прийдется писать не на PHP, а на JSP, использовать сервлетты и прочее :(

Для начала откройте
http://ru.wikipedia.org/wiki/Java и http://ru.wikipedia.org/wiki/JavaScript и найдите 50 отличий.

Посчет вашего вопроса - я вам ответил. Хотите, чтобы список городов всегда был во втором селекте, так и грузите сразу список городов туда. Тут вам JS не будет нужен.

Если нужно с помощью AJAX, что подсказывает мне, что именно это и надо (хотя первый пост говорит об обратном), то формируйте на сервере ответ в виде JSON. Приняв на JavaScript ответ, распарьсте его с помощью eval. И далее работайте с полученными данными, как с обычным массивом. Так будет правильней.
Вы же возвращаете текст. Так для начала смотрите, что возвращает вам сервер (использовать alert(переменная) или юзать firebug от Мозиллы). Если возвращает ваш текст, то значит скрипт отработал норм. Теперь надо только вставить его в select.
И нафиг уберите @ в коде.

Цитата:
Да я в Java вообще не разбираюсь поэтому и прошу примера


Примеров по использованию AJAX в сети навалом, я уже писал. ПРосто искать и разбираться Вам лень.
Ну что поделать :( А надо :( Мне вот тоже почему-то никто не хочет лабу по асме для процессора 80-ой серии делать, приходится самому разбираться и без примеров :(

19K
29 ноября 2009 года
bulat
29 / / 02.12.2007
Подскажи хоть здесь:
Почему в "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();

}
}
?>
7
29 ноября 2009 года
@pixo $oft
3.4K / / 20.09.2006
Если вы под "выбирается" понимаете "выводится",то код
 
Код:
switch($_GET['model']) {

case 'Toyota' : echo " $model "; break;

}
только эту модель и будет выводить.1 вариант же
244
29 ноября 2009 года
UAS
2.0K / / 19.07.2006
Боже.. Естественно у вас будет выводиться одна запись. Потому что в есть die(), который тут же прерывает цикл. Вот вам и вывод всего лишь одного результата.
Также, повторю, уберите @ в коде, это пример унылого и неправильного программирования.

Да и какая цель у вашего кода? Если честно, то там бред какой-то написан. Все должно быть проще, чем то, что там есть.
19K
29 ноября 2009 года
bulat
29 / / 02.12.2007
Цель все та же самая сделать зависимый список.. Нашел пример только там в селект вставлялось вот так:
 
Код:
case 'Toyota' : echo " Allion; Corolla; Mark II "; 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' &#111;&#110;change='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' &#111;&#110;click='java script:carprint();' value='Search'>
<br>
 
<span id='car'></span>
92
30 ноября 2009 года
Тень Пса
2.2K / / 19.10.2006
у тебя die В ЦИКЛЕ.
die убери... сколько раз сказать надо?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог