Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вывод второго ниспадающего меню в соответствии, с выбором первого... 
:(
    Опции темы
anurbol
Дата 22.7.2007, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 30.5.2007
Где: Алматы, Казахстан

Репутация: нет
Всего: нет



Я только недавно выучил PHP и скоро заканчиваю сайт. Но вот проблема - мне в одном месте сайта нужно использовать что-то вроде ajax. И у меня нет времени только из-за одной менюшки учить новые языки. Вобщем задача стоит такая - После того как пользователь сделал выбор в ниспадающем меню (например страну), нужно ему предостаить второе меню "города" чтобы города соответствовали стране. На самом деле у меня не город и страну нужно выбрать, а другое, но долго объяснять. Просто, люди добрые покажите несведущему в js как это реализовать на этом примере.
PM MAIL   Вверх
anurbol
Дата 23.7.2007, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 30.5.2007
Где: Алматы, Казахстан

Репутация: нет
Всего: нет



если вы когда нибудь регистрировались нa vkontakte.ru то там наверно видели такую фичу. Неужели никто не знает?
PM MAIL   Вверх
Golda
Дата 24.7.2007, 06:33 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 5
Всего: 42



http://www.w3schools.com/ajax/ajax_server.asp - хороший пример js-стороны кода
А лучше прочитать весь короткий и несложный тьюториал
http://www.w3schools.com/ajax/default.asp


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
nerezus
  Дата 24.7.2007, 06:47 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Качай либу и юзай. Я юзал sajax.


P.S. 
Цитата

выучил PHP
 доо?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
anurbol
Дата 25.7.2007, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 30.5.2007
Где: Алматы, Казахстан

Репутация: нет
Всего: нет



Сэнкс smile 
PM MAIL   Вверх
anurbol
Дата 28.7.2007, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 30.5.2007
Где: Алматы, Казахстан

Репутация: нет
Всего: нет



вот сделал менюшку ajax'ом. А теперь другая проблема. в ie все ок. А вот в опере и фф - выпадающее меню не передает значения. то есть само меню нормально показывается и значения для него из базы данных извлекаюься, однако при переходе на следующую страницу переходят все данные, кроме сгенерированных аяксом.
Код
var xmlHttp
function showSubctg(str)
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
 {
 alert ("Browser doesnt support ajax")
 return
 }
var url="goroda.php"
url=url+"?strany="+str
url=url+"&goroda="
var strany = document.getElementById("strany").value;
xmlHttp.open("GET",url + escape(strany),true)
xmlHttp.onreadystatechange=stateChanged
xmlHttp.send(null)
}
function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 {
 document.getElementById("goroda").innerHTML=xmlHttp.responseText
 }
}


function GetXmlHttpObject()
{
var xmlHttp=null;
try
 {
 // Firefox, Opera 8.0+, Safari
 xmlHttp=new XMLHttpRequest();
 }
catch (e)
 {
 //Internet Explorer
 try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }

return xmlHttp;
}


вот пхп
Код
<?php
require_once("db.php");
$strany=$_GET["strany"];
$sql="SELECT * FROM geo WHERE strany = '".$strany."'";
$result = mysql_query($sql);
echo "<select name=goroda>";
while($row = mysql_fetch_array($result)) {
    echo "<option value=$row[goroda]>$row[goroda]</option>";
    }
echo "</select>";
?>

Вопрос:
что не так с совместимостью с фф и оперой? smile 
PM MAIL   Вверх
nerezus
  Дата 28.7.2007, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Код

$strany=$_GET["strany"];
$sql="SELECT * FROM geo WHERE strany = '".$strany."'";
 руки за такое отрывать. Иди срочно читать, как работать с базой.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
anurbol
Дата 29.7.2007, 03:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 30.5.2007
Где: Алматы, Казахстан

Репутация: нет
Всего: нет



А что там не так? Все там правильно. Я же говорю в ie все работает на ура. А вот в опере и файрфоксе нет. Я наверное недостаточно ясно осветил проблему. Итак, есть выпадающее меню(dropdown)"страны"со списком стран. При совершении выбора страны, ajax генерирует второе выпадающее меню "города". Это все сделано, как вы понимаете для того чтобы в США не оказалось Минска, а в Беларуси Вашингтона. Тут проблем нет, все работает во всех браузерах. Но дальше этого в опере и фф дело не идет... form action="1.php" этот скрипт сделан просто для теста и выглядит таким образом:
Код

$strany=$_GET['goroda'];
$goroda=$_GET['strany'];
echo $strany;
echo $goroda;

в ie выводит: RussiaMoscow
в опере и firefox: Russia
для полной ясности покажу урл в iexplorer:1.php?strany=Russia&goroda=Moscow&submit=Go%21
и урл в opera и firefox:1.php?strany=Russia&submit=Go%21
иными словами значение из меню не передается. пожалуйста, умные люди, покажите как решить проблему? два дня над ней сижу smile  smile  smile  smile

Добавлено через 8 минут и 45 секунд
Цитата(nerezus @ 24.7.2007,  06:47)
Качай либу и юзай. Я юзал sajax.


кстати, а что за sajax? во всех браузерах работает?
PM MAIL   Вверх
nerezus
Дата 29.7.2007, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



anurbol, sql-inj у тебя. И справляй
более того, возьми за правило писать скрипт так, чтобы он не выдавал варнингов и нотайсов при любых условиях.
Будет время - гляну твою страничку.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
anurbol
Дата 30.7.2007, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 30.5.2007
Где: Алматы, Казахстан

Репутация: нет
Всего: нет



Спасибо за замечание по безопасности smile но все же мою проблему это не решает. Так как пока еще в интернет я не выпустил сайт, то посмотреть его не удастся, ну только если Вы не хакер  smile 
PM MAIL   Вверх
nerezus
Дата 30.7.2007, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



sajax работает во всех. Там насколько помню раньше было 2 ошибки - с кириллицей и с пост-запросами, но исправлялись элементарно. Попробуй ее юзать.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Golda
Дата 31.7.2007, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 5
Всего: 42



anurbol, покажите html-код формы. Что собой представляет элемент с id='strany'? Если select - то у него не гарантированно поле value (посмотрите в спецификации на w3.org). Занчение из select нужно доставать конструкцией 

Код

var objStrany = document.getElementById("strany"); 
var strany = objStrany.options[objStrany.selectedIndex].value;


Это может быть причиной Вашей проблемы.


nerezus, ИМХО sajax неудобен. Он ограничивает Вас в использовании буферизации. Если Вы попытаетесь использовать sajax в проекте, использующем функции из серии ob_start(), ob_end_flush(), сталкнетесь с проблемами


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
anurbol
Дата 31.7.2007, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 30.5.2007
Где: Алматы, Казахстан

Репутация: нет
Всего: нет



в index.php включен хедер, а в него включен файл js(<script src=ajax.js></script>форма в index.php выглядит следующим образом
Код
<td align=\"left\">
<select name=\"strany\" id=\"strany\" onchange=\"showStrany(this.value)\">
<option>"._SELECTCOUNTRY."</option>
<option value=\"armenia\">"._ARMENIA."</option>
<option value=\"azerbaijan\">"._AZERBAIJAN."</option>
<option value=\"belarus\">"._PEOPLE."</option>
<option value=\"georgia\">"._GEORGIA."</option>
</select></td></tr>
<tr><td>"._SELECTCITY."</td>
<td id=\"goroda\">
</td>

выше было все остальное(в  js должно быть не function showSubctg(str), а function showStrany, опечатка smile). пробовал вставить Вашу конструкцию(в ajax.js), ничего не изменилось 
сейчас уже думаю, лучше бы не было ни оперы ни ff
PM MAIL   Вверх
Golda
Дата 1.8.2007, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 5
Всего: 42



anurbol, это все внутри какого-то тега <form>? В action этого <form> не передаются занчения? Я не вижу в Вашем коде <input> или <select> с name='goroda'. Передается только то, что в активных эоементах. Дайте больший кусок кода, от <form> до </form>.

P.S. в onchange тожу лучше поставить showCountry(this.options[this.selectedIndex].value


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
anurbol
Дата 3.8.2007, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 30.5.2007
Где: Алматы, Казахстан

Репутация: нет
Всего: нет



Вобщем, долго бившись об клавиатуру головой, я уже отказался от этой затеи smile однако если когда-нибудь эта тайна разгадается, буду рад smile У меня была такая схема: Есть страница. На странице - выпадающее меню с небольшим списком стран. и все. Так как эта страница - подключаемый к php-nuke модуль, то есть include("header.php") в начале и include("footer.php") в конце файла. Так как мне джаваскрипт желательно написать в head, я в header.php в head сделал ссылку на ajax.js, текст которого показан сверху. А там в свою очередь есть ссылка на goroda.php. В Этом файле запрос из бд генерирует выпадающее меню "города", которые отправляются аяксом в специально предназначенную для этого ячейку с id=goroda. Все возможные скрипты я уже дал выше. обычно я ничего не бросаю, и все довожу до конца, даже если придется сидеть не одну ночь. но тут...
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: X технологии | Следующая тема »


 




[ Время генерации скрипта: 0.1066 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.