Вход

Просмотр полной версии : Передать переменную и по её значению сделать выбор из selecta


SeGun
30.03.2014, 22:49
Здравствуйте уважаемые.

Передо мной стоит такая задача
1. Отправить переменную на другую страничку
делаю так:


<html>
<head>
<title> Отправка данных </title>
</head>
<body>
<form action="target.php">
<button value="11111010101" name="hidden" type="submit">
Отправить форму</button></p>
</form>
</body>
</html>
2. Поймать переменную на другой страничке, и в зависимости от её значения сделать выбор из select
Как то так:

...
$name=$_POST['hidden'];

<select size="1" name="rooms"

<option>1</option>
<option>2</option>
<option>3</option>
</select>
<script>
var select = document.getElementsByTagName('select') [0];
select.addEventListener('change', function() {
<-- значение переменной->
});

</script>
...

Подскажите как правильно плиз.

nice_try
30.03.2014, 23:12
ну ты можешь при выводе option у твоего select проверять value с переданной переменной и если совпадает, то ставить selected

SeGun
30.03.2014, 23:22
Я не просил готового решения.
Мне нужен был, только совет как обработать переданное значение и открыть страницу
Тем более что большая часть уже сделана :yes:

aleks_lv
30.03.2014, 23:52
вариант..
1)запиши в куки по клику
2)переход на другую страницу location.href="другая страница"
3)на другой считал куки и выставил селект

SeGun
31.03.2014, 00:02
Спасибо. Попробую.

Vlasenko Fedor
31.03.2014, 00:03
<?php
// этоо файл target.php
$sel = filter_input(INPUT_GET, 'hidden', FILTER_VALIDATE_INT);
if(!sel) $sel = 0;
?>
<!DOCTYPE HTML>
<html>
<head></head>
<body>
<form action="target.php">
<button value="1" name="hidden" type="submit">Отправить форму</button>
</form>
<select size="1" name="rooms">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<script>
window.onload = function () {
var ops = document.querySelectorAll("select[name=rooms]>option");
var sel = <?php echo $sel;?>;
if(sel < ops.length) ops[sel].selected = true;
};
</script>
</body>
</html>

SeGun
31.03.2014, 00:49
Вариант не плохой. Спасибо. Но похоже что он решает обратную задачу.
Тем не мене эта функция
<script>
window.onload = function () {
var ops = document.querySelectorAll("select[name=rooms]>option");
var sel = <?php echo $sel;?>;
if(sel < ops.length) ops[sel].selected = true;
};
</script>

то что я искал.

SeGun
31.03.2014, 21:55
В общем сделал так:
Файл с кнопкой. Кнопок там таких 3
===============
<meta charset="windows-1251">
<form method="post" action="target.php">
<input type="hidden" name="name1" value="1">
<input type=submit value="Отправить">
</form>
================
Файл target.php
================
<?

$sel=$_POST['name1'];
if(!sel) $sel = 0;

echo $name;

?>
<select size="1" name="rooms">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<script>
window.onload = function () {
var ops = document.querySelectorAll("select[name=rooms]>option");
var sel = <?php echo $sel;?>;
if(sel < ops.length) ops[sel].selected = true;
};
</script>


Ещё раз спасибо всем кто помогал.
Тема закрыта.

Vlasenko Fedor
31.03.2014, 22:14
так нельзя
$sel=$_POST['name1'];
if(!sel) $sel = 0;
все данные полученные от клиента нужно фильтровать
$sel = (int)$_POST['name1'];

SeGun
31.03.2014, 22:32
То же верно.