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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2015, 10:47   #11
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Вариант на чистом Javascript:
Код:
<?php
header("Content-type: text/html; charset=utf-8");
// массив данных о городах
$cities = array(
    0 => array('title' => 'Москва', 'url' => 'moskva'),
    1 => array('title' => 'Санкт-Петербург', 'url' => 'sankt-peterbugr'),
    2 => array('title' => 'Казань', 'url' => 'kazan'),
);
// определяем текущий город, по умолчанию это будет просто первый город из списка
$t_of_gorod = (isset($_GET['t_of_gorod'])) ? (int)$_GET['t_of_gorod'] : 0;
?>

<form action="<?=$cities[$t_of_gorod]['url']; ?>" id="mainform">
    <label for="t_of_gorod">Город:</label><br/>
    <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><br/><br/>
    <input type="submit" value="Send" />
</form>

<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>
Вариант обработки с использованием jQuery (нужно убрать из списка onchange="changeCity();"):
Код:
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
// формируем аналогичный массив городов для Javascript, формат массива: key => url
var cities = [];
<?php
foreach($cities as $key => $city) {
    echo "cities[" . $key . "] = \"" . $city['url'] . "\";\n";
}
?>
$(document).ready(function() {
    // устанавливаем значение текущего города в action формы
    $('#mainform').attr('action', '/'+cities[<?=$t_of_gorod; ?>]);

    // при изменении города в списке
    // выполняем замену URL обработчика формы в соответствии с этим изменением
    $('#t_of_gorod').change(function() {
        // получаем значение нового выбранного option (индекс города)
        var gorod_option_value = $('#t_of_gorod option:selected').val();
        // устанавливаем новое значение URL города в action формы
        $('#mainform').attr('action', '/'+cities[gorod_option_value]);
    });
});
</script>

Последний раз редактировалось Andkorol; 25.11.2015 в 10:59.
Andkorol вне форума Ответить с цитированием
Старый 04.12.2015, 08:38   #12
Дамир193
Пользователь
 
Регистрация: 23.11.2015
Сообщений: 19
По умолчанию

Andkorol, не работает код, может ошибка где-то у меня?
PHP код:
<?

# Соединямся с БД
mysql_connect
mysql_select_db



        
list ($arr$send_id$send_login$send_password$type_of_client) = asd();
        echo 
$arr;
        
//echo $send_login.'<br>'.$send_password;
#динамическая форма

    
$t_o_w= array("Сфера деятельности""IT, компьютеры, интернет""Без опыта, подработка, стажировки, прочее""Бухгалтерия, кассовый учет""Врачи, фармацевты, медицинские работники""Дизайн, творческие профессии""Директора и руководители""Инженеры, проектировщики""Логистика, снабжение, перевозки, склад""Маркетинг, PR-служба""Менеджеры по персоналу, HR-служба""Образование, наука, тренинги""Охрана, служба безопасности, полиция""Повара, официанты, бармены, сомелье""Продавцы, менеджеры по продажам, торговые представители""Производство и строительство, рабочие специальности""Редакторы, журналисты, переводчики""Секретари, офис-менеджеры, операторы""Услуги для населения, персонал для дома, спорт""Финансы, экономика, аудит, банк""Юристы, коллекторы, приставы"); 
    
$cities = array(
    
=> array('title' => 'Москва''url' => 'moskva'),
    
=> array('title' => 'Санкт-Петербург''url' => 'sankt-peterbugr'),
    
=> array('title' => 'Казань''url' => 'kazan'),
    ); 
    
$t_of_gorod = (isset($_GET['t_of_gorod'])) ? (int)$_GET['t_of_gorod'] : 0;
    
$adress=$_SERVER['REQUEST_URI']; 
    
$a1=explode('?'$adress); 
    if(
$a1[0]=='/vacancy'){ 
        
$sel='<option value="1" selected>Вакансии</option><option value="2" >Резюме</option>'
    } 
    elseif(
$a1[0]=='/resumes'){ 
        
$sel='<option value="1" >Вакансии</option><option value="2" selected >Резюме</option>'
    } 
    else{ 
        
$sel='<option value="1" >Вакансии</option><option value="2">Резюме</option>'
    } 
    
$t_of_work='<select class="vybor_sferi" name="t_of_work">'
        for (
$g 0$g <= 20$g++){ 
            if((isset(
$_GET['t_of_work'])) && ($_GET['t_of_work']==$g)) $t_of_work .='<option value="'.$g.'" selected>'.$t_o_w[$g].'</option>'
            else                        
$t_of_work .='<option value="'.$g.'">'.$t_o_w[$g].'</option>'
        } 
    
$t_of_work .='</select>'
    
    if(isset(
$_GET['likesearch'])) 
    { 
        
$likesearch=$_GET['likesearch']; 
    } 
    else 
    { 
        
$likesearch=''
    } 
    if(isset(
$_GET['sort_by'])) 
    { 
        
$sort_by1=$_GET['sort_by']; 
    } 
    else 
    { 
        
$sort_by1=0
    } 
    if(isset(
$_GET['education_level'])) 
    { 
        
$education_level1=$_GET['education_level']; 
    } 
    else 
    { 
        
$education_level1=1
    } 
#динамическая форма
?>


    </script>
Дамир193 вне форума Ответить с цитированием
Старый 04.12.2015, 08:39   #13
Дамир193
Пользователь
 
Регистрация: 23.11.2015
Сообщений: 19
По умолчанию

прододжение ...


Код HTML:
<div class="info">
		<a href="/"><div class="logologo"></div></a>
			<form action="<?=$cities[$t_of_gorod]['url']; ?>" method="GET" id="mainform" style="margin:2em 0 0;">
				<input class="button" type="submit" style="background: url(/images/search_button.png) no-repeat #00AAD1; background-position: center; background-size: 80px;" value="" />
				<div class="poisk" style="border: 2px solid #00AAD1;">
					<div class="vybor" style="border-right: 1px solid #00AAD1;">
						<select class="vybor" id="target" ><? echo $sel;?></select>
						<div class="minibut"></div>
					</div>
					<div class="vybor_sferi" style="border-right: 1px solid #00AAD1;">
						<? echo $t_of_work;?>
						<div class="minibut"></div>
					</div>
					<div class="vybor_gorod" style="border-right: 1px solid #00AAD1;">
						<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>
						<div class="minibut"></div>
					</div>
					<input class="search1" type="text" name="likesearch" placeholder="Поиск..." value="<?echo $likesearch;?>"/>
					<div style="display:none;">
						<input type="text" name="sort_by" value="<?echo $sort_by1;?>">
						<input type="text" name="education_level" value="<?echo $education_level1;?>">
					</div>
				</div>
				<input class="button" id="srccc" type="send" value="" />
			</form>
			<script>
PHP код:
// формируем аналогичный массив городов для 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>
Код HTML:
<div class="all_block">
				<!--<a href="#" class="extended_src">Расширенный поиск</a>-->
				<?locate_resume_or_vacancy($send_login, $send_password, $type_of_client);?>
			</div>
	</div>
	<div class="navigation">
		<? navigation($navigation);?>
	</div>
PHP код:
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
  $( "#target" ).change(function () {
    var str = "";
    $( "#target option:selected" ).each(function() {
      str += $( this ).val() + " ";
    });
    if(str==1)
    {
        $("#mainform").attr("action","<?=$cities[$t_of_gorod]['url']; ?>");
        
    }
    else
    {
        $("#mainform").attr("action","<?=$cities[$t_of_gorod]['url']; ?>");
        
    }
  })
  .change();
</script>
если выбираю москву, то подставляется москва, если санкт-петербург, то подставляется казань, если казань, то снова москва

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

Казань рулит )))))
ADSoft вне форума Ответить с цитированием
Старый 04.12.2015, 09:32   #15
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Старый код свой убери из скрипта – он уже не нужен, но его действия перебивают action формы:
Цитата:
Сообщение от Дамир193 Посмотреть сообщение
PHP код:
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
  $( "#target" ).change(function () {
    var str = "";
    $( "#target option:selected" ).each(function() {
      str += $( this ).val() + " ";
    });
    if(str==1)
    {
        $("#mainform").attr("action","<?=$cities[$t_of_gorod]['url']; ?>");
        
    }
    else
    {
        $("#mainform").attr("action","<?=$cities[$t_of_gorod]['url']; ?>");
        
    }
  })
  .change();
</script>
Andkorol вне форума Ответить с цитированием
Старый 04.12.2015, 11:15   #16
Дамир193
Пользователь
 
Регистрация: 23.11.2015
Сообщений: 19
По умолчанию

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

Код работает, 100%.
Вот смотри – я просто скопировал фрагменты из твоего же кода в отдельный скрипт:
PHP код:
<?php
$cities 
= array( 
    
=> array('title' => 'Москва''url' => 'moskva'), 
    
=> array('title' => 'Санкт-Петербург''url' => 'sankt-peterbugr'), 
    
=> array('title' => 'Казань''url' => 'kazan'), 
);  
$t_of_gorod = (isset($_GET['t_of_gorod'])) ? (int)$_GET['t_of_gorod'] : 0
?>

<form action="<?=$cities[$t_of_gorod]['url']; ?>" method="GET" id="mainform" style="margin:2em 0 0;">
    <div class="vybor_gorod" style="border-right: 1px solid #00AAD1;">
        <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>
        <div class="minibut"></div>
    </div>
</form>

<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>
Всё работает.
Повторю – это фрагменты из твоего кода, и они отлично работают.
Andkorol вне форума Ответить с цитированием
Старый 04.12.2015, 12:28   #18
Дамир193
Пользователь
 
Регистрация: 23.11.2015
Сообщений: 19
По умолчанию

Andkorol, спасибо большое, точно, нашел, сделал.

PHP код:
if($a1[0]=='/vacancy'){  
        
$sel='<option value="1" selected>Вакансии</option><option value="2" >Резюме</option>';  
    }  
    elseif(
$a1[0]=='/resumes'){  
        
$sel='<option value="1" >Вакансии</option><option value="2" selected >Резюме</option>';  
    }  
    else{  
        
$sel='<option value="1" >Вакансии</option><option value="2">Резюме</option>';  
    } 
Мешался вот этот код, который подставляет в url /vacancy или /resumes в зависимости от выбранного.
Как теперь возможно, чтобы после названия города подставлялось vacancy или резюме при выборе в select

Andkorol, помоги снова пожалуйста

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

Не вижу твоих попыток.
У тебя же есть пример уже, как это реализовано.
Сделай функцию, которая будет формировать action для формы при изменении в любом из списков – получать выбранные в списках значения, и из них формировать URL.
Andkorol вне форума Ответить с цитированием
Старый 07.12.2015, 14:25   #20
Дамир193
Пользователь
 
Регистрация: 23.11.2015
Сообщений: 19
По умолчанию

Попытки были, и не одна. вот пытаюсь по аналогии сделать, но не выходит, подставляет просто /vacancy без городов

Andkorol, вот код:
PHP код:
 $t_o_w= array("Сфера деятельности""IT, компьютеры, интернет""Без опыта, подработка, стажировки, прочее""Бухгалтерия, кассовый учет""Врачи, фармацевты, медицинские работники""Дизайн, творческие профессии""Директора и руководители""Инженеры, проектировщики""Логистика, снабжение, перевозки, склад""Маркетинг, PR-служба""Менеджеры по персоналу, HR-служба""Образование, наука, тренинги""Охрана, служба безопасности, полиция""Повара, официанты, бармены, сомелье""Продавцы, менеджеры по продажам, торговые представители""Производство и строительство, рабочие специальности""Редакторы, журналисты, переводчики""Секретари, офис-менеджеры, операторы""Услуги для населения, персонал для дома, спорт""Финансы, экономика, аудит, банк""Юристы, коллекторы, приставы"); 
    
    
$cities = array(
    
=> array('title' => 'Москва''url' => 'moskva'),
    
=> array('title' => 'Санкт-Петербург''url' => 'sankt-peterburg'),
    
=> array('title' => 'Казань''url' => 'kazan'),
  ); 
    
$t_of_gorod = (isset($_GET['t_of_gorod'])) ? (int)$_GET['t_of_gorod'] : 0;
    
$vr = array(
    
=> array('title' => 'Вакансии''url' => 'vakancy'),
    
=> array('title' => 'Резюме''url' => 'resume'),
    ); 
    
$t_of_v = (isset($_GET['t_of_v'])) ? (int)$_GET['t_of_v'] : 0;
    
$t_of_work='<select class="vybor_sferi" name="t_of_work">'
        for (
$g 0$g <= 20$g++){ 
            if((isset(
$_GET['t_of_work'])) && ($_GET['t_of_work']==$g)) $t_of_work .='<option value="'.$g.'" selected>'.$t_o_w[$g].'</option>'
            else                        
$t_of_work .='<option value="'.$g.'">'.$t_o_w[$g].'</option>'
        } 
    
$t_of_work .='</select>'
    
    if(isset(
$_GET['likesearch'])) 
    { 
        
$likesearch=$_GET['likesearch']; 
    } 
    else 
    { 
        
$likesearch=''
    } 
    if(isset(
$_GET['sort_by'])) 
    { 
        
$sort_by1=$_GET['sort_by']; 
    } 
    else 
    { 
        
$sort_by1=0
    } 
    if(isset(
$_GET['education_level'])) 
    { 
        
$education_level1=$_GET['education_level']; 
    } 
    else 
    { 
        
$education_level1=1
    } 
#динамическая форма
?>


    </script> 
Продолжение:
Код HTML:
<div class="info">
		<a href="/"><div class="logologo"></div></a>
			<form action="<?=$cities[$t_of_gorod]['url']; ?><?=$vr[$t_of_v]['url']; ?>" method="GET" id="mainform" style="margin:2em 0 0;">
				<input class="button" type="submit" style="background: url(/images/search_button.png) no-repeat #00AAD1; background-position: center; background-size: 80px;" value="" />
				<div class="poisk" style="border: 2px solid #00AAD1;">
					<div class="vybor" id="t_of_v" onchange="changeVak();" style="border-right: 1px solid #00AAD1;">
						<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>
						<div class="minibut"></div>
					</div>
					<div class="vybor_sferi" style="border-right: 1px solid #00AAD1;">
						<? echo $t_of_work;?>
						<div class="minibut"></div>
					</div>
					<div class="vybor_gorod" style="border-right: 1px solid #00AAD1;">
						<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>
						<div class="minibut"></div>
					</div>
					<input class="search1" type="text" name="likesearch" placeholder="Поиск..." value="<?echo $likesearch;?>"/>
					<div style="display:none;">
						<input type="text" name="sort_by" value="<?echo $sort_by1;?>">
						<input type="text" name="education_level" value="<?echo $education_level1;?>">
					</div>
				</div>
				<input class="button" id="srccc" type="send" value="" />
			</form>

Последний раз редактировалось Stilet; 09.12.2015 в 10:00.
Дамир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