Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2015, 14:29   #21
Дамир193
Пользователь
 
Регистрация: 23.11.2015
Сообщений: 19
По умолчанию

Продолжение:
PHP код:
<script>
// формируем аналогичный массив городов для Javascript, формат массива: key => url
var cities = [];
<?php
foreach($cities as $key => $city) {
    echo 
"cities[" $key "] = \"" $city['url'] . "\";\n";
}
?>

// устанавливаем значение текущего города в action формы
document.getElementById('mainform').action = '/'+cities[<?=$t_of_gorod?>];

// функция отслеживает изменение города в списке формы
// и выполняет замену URL обработчика формы в соответствии с этими изменениями
function changeCity() {
    // получаем индекс выбранного элемента в списке
    var gorod_index = document.getElementById('t_of_gorod').selectedIndex;
    // получаем значение value для выбранного элемента в списке
    var gorod_option_value = document.getElementsByTagName("option")[gorod_index].value * 1;
    // устанавливаем новое значение URL города в action формы
    document.getElementById('mainform').action = '/'+cities[gorod_option_value];
}
</script>

            <script>
// формируем аналогичный массив городов для Javascript, формат массива: key => url
var vr = [];
<?php
foreach($vr as $key2 => $vak) {
    echo 
"vr[" $key2 "] = \"" $vak['url'] . "\";\n";
}
?>

// устанавливаем значение текущего города в action формы
document.getElementById('mainform').action = '/'+vr[<?=$t_of_v?>];

// функция отслеживает изменение города в списке формы
// и выполняет замену URL обработчика формы в соответствии с этими изменениями
function changeVak() {
    // получаем индекс выбранного элемента в списке
    var vak_index = document.getElementById('t_of_v').selectedIndex;
    // получаем значение value для выбранного элемента в списке
    var vak_option_value = document.getElementsByTagName("option")[vak_index].value * 1;
    // устанавливаем новое значение URL города в action формы
    document.getElementById('mainform').action = '/'+cities[vak_option_value];
}
</script>
Дамир193 вне форума Ответить с цитированием
Старый 07.12.2015, 15:10   #22
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Повторяю:
Функция при любом изменении в любом списке должна получать все выбранные значения во всех списках – и из них формировать URL вида /город/тип(вакансия|резюме).
Вообще же ничего сложного – просто получить значения из всех списков и сформировать из них URL.
Всё.
Функция должна быть одна, для всех списков.
Вызывается она по событию onchange в любом из списков.
Andkorol вне форума Ответить с цитированием
Старый 07.12.2015, 15:28   #23
Дамир193
Пользователь
 
Регистрация: 23.11.2015
Сообщений: 19
По умолчанию

Andkorol, в принципе понимаю твои слова, но сижу тут пытаюсь по разному, не получается, в синтаксисе js возможно ошибаюсь, помоги

Andkorol, уже два дня мучаюсь, если это на самом деле для тебя легкая задача, помоги

Последний раз редактировалось Stilet; 09.12.2015 в 10:00.
Дамир193 вне форума Ответить с цитированием
Старый 09.12.2015, 09:14   #24
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

помоги != сделай за меня
ADSoft вне форума Ответить с цитированием
Старый 09.12.2015, 09:26   #25
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Дамир193 Посмотреть сообщение
если это на самом деле для тебя легкая задача, помоги
Это непедагогично.
У тебя есть работающий пример для одного select-а.
Просто расширь его до двух селектов.
Вот из принципа код за тебя не напишу – именно потому, что задача плёвая.

Делай прям по шагам:
1. Установка в action формы текущих значений:
– если ранее в форме не указывались значения – просто получи значения первых элементов в обоих списках, и сформируй из них URL по принципу /город/тип(вакансия|резюме), и подставляем его в action формы.
– если существуют ранее переданные из формы значения для списков – формируй URL из этих значений.
Этот пункт делается средствами PHP – и результат подставляется в форму прям на этапе её формирования.

2. Формирование нового URL «на лету» при изменении выбора в списке (любом списке) при помощи вызова функции по событию onchange:
– получаем значения выбранных элементов из обоих списков.
– формируем из них URL, и подставляем его в action формы.
Этот пункт делается средствами Javascript – пример для одного списка у тебя есть, для второго всё аналогично. А уж слепить два результата в один адрес URL – здесь проблем быть не дожно.

Всё, дело-то плёвое совсем – просто ты думать не хочешь, а тупо ждёшь, когда тебе готовый код напишут.
При такой лёгкой задаче и имеющимся рабочим примером – других причин просто нет.
Andkorol вне форума Ответить с цитированием
Старый 09.12.2015, 12:41   #26
Дамир193
Пользователь
 
Регистрация: 23.11.2015
Сообщений: 19
По умолчанию

Andkorol, хорошо, давайте пойдем по пунктам:
1. - если ранее в форме не указывались значения – просто получи значения первых элементов в обоих списках, и сформируй из них URL по принципу /город/тип(вакансия|резюме), и подставляем его в action формы.
Получаем значения для вакансий или или резюме:
PHP код:
<select class="vybor" >
    <?php 
        
foreach ($vr as $key => $vak) {
        
$selected2 = ($key2 == $t_of_v) ? 'selected="selected"' '';
        echo 
'<option value="' $key2 '" ' $selected2 '>' $vak['title'] . '</option>';
        }
    
?>
</select>
Получаем значения для города:
PHP код:
<select name="t_of_gorod" id="t_of_gorod" onchange="changeCity();">
    <?php 
        
foreach ($cities as $key => $city) {
        
$selected = ($key == $t_of_gorod) ? 'selected="selected"' '';
        echo 
'<option value="' $key '" ' $selected '>' $city['title'] . '</option>';
        }
    
?>
</select>
- Формируем из них URL по принципу /город/тип(вакансия|резюме):
PHP код:
<form action="<?=$cities[$t_of_gorod]['url']; ?>/<?=$vr[$t_of_v]['url']; ?>"
Верно?

Последний раз редактировалось Дамир193; 09.12.2015 в 12:49.
Дамир193 вне форума Ответить с цитированием
Старый 09.12.2015, 13:05   #27
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Дамир193 Посмотреть сообщение
Верно?
Ну у тебя же глаза есть? Смотри исходный код страницы.
Правильные значения подставляются в action формы при запуске скрипта?
Те, что и должны туда подставляться?
Andkorol вне форума Ответить с цитированием
Старый 09.12.2015, 13:28   #28
Дамир193
Пользователь
 
Регистрация: 23.11.2015
Сообщений: 19
По умолчанию

Andkorol, че ты такой, я говорю же, что не понимаю до конца синтаксиса, а ты выеживаешься тут и корчишь из себя учителя, я же помощи прошу, а не нравоучений
Дамир193 вне форума Ответить с цитированием
Старый 09.12.2015, 13:30   #29
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Ну если ты написал код, и он работает правильно – чё спрашивать-то?!?
Ты спрашивай то, что не получается - а не то, что очевидно и работает уже так, как нужно.

P.S.:
Цитата:
Сообщение от Дамир193 Посмотреть сообщение
я говорю же, что не понимаю до конца синтаксиса
Так изучи сначала синтаксис и конструкции языка – а потом уже начинай какие-то реальные задачи решать.
Кто ж виноват-то, что ты пытаешься программировать, не зная синтаксиса?

Последний раз редактировалось Andkorol; 09.12.2015 в 13:36. Причина: PS
Andkorol вне форума Ответить с цитированием
Старый 09.12.2015, 15:17   #30
Дамир193
Пользователь
 
Регистрация: 23.11.2015
Сообщений: 19
По умолчанию

Andkorol, хорошо сделал, может где-то был не прав, что нагнал.
Но работает только при том, что если в селекте выбрать (вакансию|резюме), и в селекте городов выбрать город.
Если зайти на сайт и просто нажать на кнопку поиска с дефолтными значениями селектов, то не формирует url, как будто дефолтные значения не заданы, я ведь правильно понимаю, что вот так задаются деф. значения?
PHP код:
$t_of_gorod = (isset($_GET['t_of_gorod'])) ? (int)$_GET['t_of_gorod'] : 0;
$t_of_v = (isset($_GET['t_of_v'])) ? (int)$_GET['t_of_v'] : 1
Если причину знаете подскажите пожалуйста
Дамир193 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться МаксMorfey Общие вопросы по Java, Java SE, Kotlin 1 21.12.2009 13:15
Помогите разобраться pashka Общие вопросы C/C++ 9 31.05.2009 00:37
Помогите разобраться в С++ saleens7 Общие вопросы C/C++ 5 09.01.2009 17:08
Помогите разобраться! Кот Microsoft Office Excel 3 14.08.2007 19:48