Вопрос № 156372: Здравствуйте. У меня следующий вопрос: Мне необходимо именно с использованием библиотеки JsHttpRequest (сайт http://dklab.ru/lib/JsHttpRequest) сделать следующее : есть 2-а списка select ,- 1-й список это марки авто. <select size=&...
Вопрос № 156.372
Здравствуйте. У меня следующий вопрос: Мне необходимо именно с использованием библиотеки JsHttpRequest (сайт http://dklab.ru/lib/JsHttpRequest) сделать следующее : есть 2-а списка select ,- 1-й список это марки авто. <select size="1" id='car' name="car"> <option value='1'>ВАЗ</option ><option value='2'>Опель</option ><option value='1'>Тойта</option ></select > второй список это модели авто.
он пока не активный и установлен в положение "любая" <select size="1" id='model' name="model"><option value='1'>любая</option ></select> при выборе какого либо значения из первого списка, например ВАЗ, - идёт обращение к базе данных(c использованием библиотеки JsHttpRequest ) и выбираются все модели ВАЗ и после получения ответа сервера второй список (который был не активным readonly)становится активны
м и принимает вид <select size="1" id='model' name="model"> <option value='1'>любая</option ><option value='2'>Калина</option ><option value='3'>Приора</option ></select > Всё это происходит без перезагрузки страницы. Мне необходим код реализации этих действий с комментариями. Спасибо. p.s. Если Вам ,что либо не ясно в постановке задачи пожалуйста уточните у меня.
Отправлен: 31.12.2008, 17:19
Вопрос задал: Dima1967 (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Товарищ Бородин
Здравствуйте, Dima1967! Прежде всего давайте определимся с общей схемой работы такой связки (это будет полезно на тот случай, если что-то будет непонятно в моей реализации). 1) при выборе значения в 1-ом списке, мы посылаем соответствующее значение серверному скрипту. 2) Серверный скрипт обращается к базе данных и выбирает из таблицы моделей для соответствующей марки машины массив моделей со значением ее "родительской" марки, равным $_REQUEST['car']. Данный массив мы перекодируем в
JSON, и возвращаем клиенту. 3) JSON - отличный формат для передачи данных от сервера клиенту, потому что не требуется каких-либо дополнительных действий по перекодировке полученных данных. Мы получаем готовый объект Javascript. В цикле for - in значения свойств этого объекта перебираются и вставляются во второй вываливающийся список.
Глава 1. Хранение данных. Предполагаем, что данные о моделях машин хранятся в таблице car_models следующего вида
model_i
d - идентификатор модели машины(первичный ключ таблицы, автоинкрементное поле) car_id - идентификатор марки машины model_name - имя модели
Как при этом хранятся данные о марках машин - не суть важно, главное, чтобы у такой таблицы был первичный автоинкрементный ключ. Если в таблице марок машин ВАЗ имеет номер 1, то в таблице моделей 2105, 2107, 2109 и т. д. имели car_id = 1.
Глава 2. Серверный скрипт. require_once "JsHttpRequest.php"; $js = &new JsHttpRequest.php('windows.1251'); $query
= sprintf("SELECT `model_id`, `model_name` FROM car_models WHERE `car_id` = '%s';", $_REQUEST['car']); $result = mysql_query($query); $rows = mysql_fetch_array($result); global $_RESULT; $_RESULT = $rows;
Глава 3. Клиентская часть. В результате продолжительного тестирования и разбирательства с библиотекой JsHttpRequest получилось нечто следующее(в приложении).
С первого раза при переносе, ско
рее всего, не заработает, но Вы должны убедиться перед запуском, что скрипты "видят" подключаемые библиотеки (JsHttpRequest.php и JsHttpRequest.js), что на серверный скрипт приходит какое-либо значение, что к базе данных Вы подключаетесь успешно. Если вдруг что-то неясно, спрашивайте через личку, с удовольствием отвечу. С уважением, Товарищ Бородин
Приложение:
Ответ отправил: Товарищ Бородин (статус: Профессионал) Россия, Новосибирск Тел.: +7-923-245-3366 ICQ: 346988855 ---- Ответ отправлен: 31.12.2008, 19:47
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 240116 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.