Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / (Xajax, Smarty) передать полученный список из БД в форму в SELECT / 6 сообщений из 6, страница 1 из 1
26.09.2008, 11:55
    #35561711
однобитный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Xajax, Smarty) передать полученный список из БД в форму в SELECT
Здравствуйте! Решил поизучать Xajax. Пару примеров на практике просто меня поразили возможностям :) Решил сделать несколько фич на своём сайте...

Есть форма где два селекта: марка автомобиля и модель. Например марка Nissan, модель Sunny и т.д.
Я хочу, чтобы при выборе первого автоматически появлялся второй селект со списком моделей данной марки.

index.php


...
// список марок для отбора отзывов (для Ajax не использую)
function get_marki_for_otz()
{
$out = array();
$cnt = 0;
$q = db_query("SELECT DISTINCT(m.id), m.title FROM dorogi_marki as m, dorogi_otz as o WHERE m.id = o.id_marki ORDER BY m.title") or die (db_error());
while ($row = db_fetch_row($q))
{
$out[$cnt][0] = $row[0];
$out[$cnt][1] = $row[1];
$cnt++;
}
return $out;
}

// список моделей по марке для отзывов (для Ajax нужна обязательно!)
function get_model_for_otz($id)
{
$out = array();
$cnt = 0;
$q = db_query("SELECT DISTINCT(m.id), m.title FROM dorogi_models as m, dorogi_otz as o WHERE m.id = o.id_model ORDER BY m.title") or die (db_error());
while ($row = db_fetch_row($q))
{
$out[$cnt][0] = $row[0];
$out[$cnt][1] = $row[1];
$cnt++;
}

// $objResponse->addAssign("models", "innerHTML", $text);

$objResponse = new xajaxResponse("windows-1251");
return $objResponse;
}
...
$xajax->registerFunction("get_model_for_otz");
...


tpl:

<FORM action="/otz/" method="post">
Быстрый отбор: марка
<SELECT name="id_marki" onchange="xajax_get_model_for_otz(document.getElementById('id_marki').value);">
<OPTION value="0">все</OPTION>
{section name=i loop=$marki_for_otz}
<OPTION value="{$marki_for_otz [0]}"{if $marki_for_otz[0] == $id_marki} selected{/if}>{$marki_for_otz[1]}</OPTION>
{/section}
</SELECT>
модель
...


подскажите как граммотно можно передать данные с функции get_model_for_otz(), чтобы сформировался второй select со списком моделей выбранной марки...
...
Рейтинг: 0 / 0
26.09.2008, 12:49
    #35561927
Краказябл
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Xajax, Smarty) передать полученный список из БД в форму в SELECT
а что тут сложного?
Должно быть так: два селекта id="model" и id="mark", второму желательно поставить display: none;
выбераем модель машины, погружаем модели (я бы на Вашем месте отложил xajax на самую дальнюю полку и пользовался бы JQuery)
как толкьо подгрузили марки, создаем option'ы для каждой марки, для селекта с id="mark"
после делаем его видимым и всё:)
могу сделать рабочий пример на JQuery, нужно?:)
...
Рейтинг: 0 / 0
26.09.2008, 12:56
    #35561952
однобитный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Xajax, Smarty) передать полученный список из БД в форму в SELECT
можете сделать, посмотрю... просто для Smarty Xajax как-то блее удобен на первый взгляд, JQuery - впервые слышу :)
но щас буду читать...
P.S.: подскажите как передать данные во втрой селект рационально, плиз, кто знает Xajax :)
...
Рейтинг: 0 / 0
26.09.2008, 13:31
    #35562070
однобитный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Xajax, Smarty) передать полученный список из БД в форму в SELECT
сделал так. работает, но если есть идеи граммотнее - пишите ;)

// список моделей по марке для отзывов
function get_model_for_otz($id)
{
$out = "";
$q = db_query("SELECT DISTINCT(m.id), m.title FROM dorogi_models as m, dorogi_otz as o WHERE m.id = o.id_model ORDER BY m.title") or die (db_error());
while ($row = db_fetch_row($q))
{
$out .= "<OPTION value=\"$row[0]\">$row[1]</OPTION>";
}
$objResponse = new xajaxResponse("windows-1251");
$objResponse->addAssign("id_model", "innerHTML", $out);
return $objResponse;
}
...
Рейтинг: 0 / 0
26.09.2008, 14:34
    #35562279
Краказябл
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Xajax, Smarty) передать полученный список из БД в форму в SELECT
вот хорошая статья для начинающих http://www.rsdn.ru/article/inet/jQuery.xml
строить option'ы на серверной стороне (вообще по хорошему клиенту должен возвращаться ВСЕГДА массив значений, которые он уже будет строить сам) это не есть хорошо. передевайте массив обработанный функцией json_encode() и уже на клиентской стороне стройте option'ы и разлочивайте\показывайте второй селект.
мой вам совет :-)
...
Рейтинг: 0 / 0
29.09.2008, 14:15
    #35565292
однобитный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Xajax, Smarty) передать полученный список из БД в форму в SELECT
тему можно закрывать, нашёл два варианта как сделать через xajax
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / (Xajax, Smarty) передать полученный список из БД в форму в SELECT / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]