Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.68/37: Рейтинг темы: голосов - 37, средняя оценка - 4.68
1 / 1 / 1
Регистрация: 07.12.2009
Сообщений: 99
1

условие выбора пункта из списка

17.11.2012, 12:23. Показов 7051. Ответов 9
Метки нет (Все метки)

Здравствуйте, пожалуйста помогите.
Хочу сделать форму со сворачивающимся списком с возможностью при выборе нужного пункта списка и нажатии на кнопку скрипт обработчик отправлял на заданную страницу привязанную к данному пункту списка.

Форма выглядит так:

HTML5
1
2
3
4
5
6
7
8
9
10
<form action="файл.php">
   <p><select name="item"> 
    <option disabled selected>Выберите пункт</option> 
    <option value="p1">Пункт №1</option>
    <option value="p2">Пункт №2</option>
    <option value="p3" >Пункт №3</option>
    <option value="p4">Пункт №4</option>
   </select></p>
   <p><input type="submit" value="Ок"></p>
 </form>

А вот как условие выбора пункта и отправки на нужную страницу не знаю как написать
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2012, 12:23
Ответы с готовыми решениями:

Как сделать условие выбора из выпадающего списка?
Есть выпадающий список с типом насосов: &lt;tr&gt;&lt;td&gt;Тип насосно-компрессорных труб: &lt;/td&gt;&lt;td&gt;...

Условие выбора радиокнопки
Привет всем! Есть список радиокнопок, разделенные на несколько групп. Пользователь отмечает...

При выборе пункта списка вывести выбранное значение в input
При выборе пункта списка вывести выбранное значение в input. Без обновления страницы, без...

Работа с шаблонизатором Smarty, не работает условие выбора страницы
Здравствуйте. Прошу помочь разобраться. В чем моя ошибка, куда копать? Есть интернет-магазин...

9
25 / 13 / 2
Регистрация: 06.01.2009
Сообщений: 87
17.11.2012, 12:46 2
Цитата Сообщение от Krot_F Посмотреть сообщение
Здравствуйте, пожалуйста помогите.
Хочу сделать форму со сворачивающимся списком с возможностью при выборе нужного пункта списка и нажатии на кнопку скрипт обработчик отправлял на заданную страницу привязанную к данному пункту списка.

Форма выглядит так:

HTML5
1
2
3
4
5
6
7
8
9
10
<form action="файл.php">
   <p><select name="item"> 
    <option disabled selected>Выберите пункт</option> 
    <option value="p1">Пункт №1</option>
    <option value="p2">Пункт №2</option>
    <option value="p3" >Пункт №3</option>
    <option value="p4">Пункт №4</option>
   </select></p>
   <p><input type="submit" value="Ок"></p>
 </form>

А вот как условие выбора пункта и отправки на нужную страницу не знаю как написать
Добавьте в объявлении формы метод, например
HTML5
1
method="POST"
А в файле "файл.php" пропишите код
PHP
1
2
3
<?php
print_r($_POST);
?>
И увидите, какие параметры передаются и как они называются.
1
1 / 1 / 1
Регистрация: 07.12.2009
Сообщений: 99
17.11.2012, 15:13  [ТС] 3
Вот условие настроил, а перенаправление на нужную страницу не выходит сделать((

PHP
1
2
3
if ($_POST['item'] == p1) {
    Header("Location: p1.html");  // что то здесь не так у меня
}
0
25 / 13 / 2
Регистрация: 06.01.2009
Сообщений: 87
17.11.2012, 15:17 4
Сделайте полный URL вместе с http://имя сайта
PHP
1
header('Location: http://site.ru/'.$_GET['item'].'.html');
предварительно сделав проверку на валидность параметра $_GET

Также, header должен передаваться в скрипте самым первым (до него не должно быть никакого вывода (echo, print, ...))
1
597 / 464 / 73
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
17.11.2012, 19:53 5
реализовывать такое на сервере имеет смысл, только когда пользователь ни в коем случае не должен догадываться, куда он перейдет при нажатии. или если на сервере нужно организовать подсчет переходов по конкретной странице, например. причем первый вариант отпадает,т.к. он может таки перебрать все варианты и все равно узнает, куда перейдет поэтому предлагается не плодить лишних страниц и не усложнять задачу, а реализовать все на клиенте (js+jquery):
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<form action="файл.php">
<div>
   <p><select name="item"> 
    <option disabled selected>Выберите пункт</option> 
    <option value="http://www.google.com">Пункт №1</option>
    <option value="http://ya.ru">Пункт №2</option>
    <option value="http://example.com" >Пункт №3</option>
    <option value="http://example.org">Пункт №4</option>
   </select></p>
   <p><input type="submit" value="Ок"></p>
</div>
 </form>
<script type="text/javascript">
$('form select[name="item"]').bind('onchange', function(){
    var link = $(this).children('option:checked').val(); // если option-ы находятся внутри div-ов или еще как-то разделены, то применять .find вместо .children 
    window.location.replace(link); // или window.location.href = link, если нужно симулировать нажатие по ссылке
});
</script>
Добавлено через 29 минут
поправка, .bind('change'), а не .bind('onchange').
а если нужно именно при клике на кнопку, то:
Javascript
1
2
3
4
5
$('form').bind('submit', function(){
    var link = $(this).find('select').children('option:checked').val();
    window.location.replace(link);
    return false;
});
1
9 / 9 / 0
Регистрация: 07.10.2009
Сообщений: 49
16.08.2013, 10:09 6
Продолжая тему обработки на стороне клиета...

С передачей post данных
HTML5
1
2
3
4
5
6
7
8
9
10
<form action="файл.php" method="post">
   <p><select name="item" onChange="this.form.action = this.options[this.selectedIndex].value;"> 
    <option disabled selected>Выберите пункт</option> 
    <option value="http://www.google.com">Пункт №1</option>
    <option value="http://ya.ru">Пункт №2</option>
    <option value="http://example.com" >Пункт №3</option>
    <option value="http://example.org">Пункт №4</option>
   </select></p>
   <p><input type="submit" value="Ок"></p>
 </form>
или просто переход:

HTML5
1
2
3
...
<select>
...
Добавлено через 15 минут
...или просто переход (в предыдущем посте время редактирования истекло, не успел исправить):

HTML5
1
2
3
4
5
6
7
8
9
...
<select onchange="top.location.href = this.options[this.selectedIndex].value;">
<option disabled selected>Выберите пункт</option> 
    <option value="http://www.google.com">Пункт №1</option>
    <option value="http://ya.ru">Пункт №2</option>
    <option value="http://example.com" >Пункт №3</option>
    <option value="http://example.org">Пункт №4</option>
</select>
...
0
0 / 0 / 0
Регистрация: 11.11.2012
Сообщений: 6
30.10.2013, 12:37 7
Цитата Сообщение от dyonis Посмотреть сообщение

HTML5
1
2
3
4
5
6
7
8
9
10
<form action="файл.php" method="post">
   <p><select name="item" onChange="this.form.action = this.options[this.selectedIndex].value;"> 
    <option disabled selected>Выберите пункт</option> 
    <option value="'.$_SERVER['PHP_SELF'].'">Пункт №1</option>
    <option value="'.$_SERVER['PHP_SELF'].'">Пункт №2</option>
    <option value="'.$_SERVER['PHP_SELF'].'" >Пункт №3</option>
    <option value='.$_SERVER['PHP_SELF'].'">Пункт №4</option>
   </select></p>
   <p><input type="submit" value="Ок"></p>
 </form>
Народ, подскажите как в таком случае сделать привязку к ,выбранному после перезагрузки стр. , пункту списка ? Т.е. выбираешь пункт, стр. перезагружается , выбранный пункт активен и у меня в cоответствии с этим пунктов выводится на стр. инфа по нему.
0
9 / 9 / 0
Регистрация: 07.10.2009
Сообщений: 49
30.10.2013, 12:50 8
Народ, подскажите как в таком случае сделать привязку к ,выбранному после перезагрузки стр. , пункту списка ? Т.е. выбираешь пункт, стр. перезагружается , выбранный пункт активен и у меня в cоответствии с этим пунктов выводится на стр. инфа по нему.
в каждом теге option добавляешь переменную $selected:
PHP
1
<option value="'.$_SERVER['PHP_SELF'].'" $selected>Пункт №1</option>
а в php во время генерации списка в цикле подставляешь в нужное место значение "SELECTED":

PHP
1
2
3
4
5
6
7
8
foreach($items as $item_id=>$item_val)
{
if(текущая страница == $item_id)
$selected = "SELECTED";
else $selected = "";
 
echo "<option value=\"{$_SERVER['PHP_SELF']}\" {$selected}>{$item_val}</option>";
}
1
0 / 0 / 0
Регистрация: 11.11.2012
Сообщений: 6
30.10.2013, 14:39 9
Извиняюсь, что-то у меня не выходит,не понимаю, что подразумевается под "текущая страница", $items это простой массив, где значения это value из тэга option или как? поясните пжлста :
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<select name="items" size="1" onchange="location=this.options[this.selectedIndex].value">
        <?  while($row=mysqli_fetch_array($result)){
              //$prd_id=$row['prd_id'];
                $product=$row['product'];
                        foreach($items as $item_id=>$item_val){
                                 if(текущая страница == $item_id){
                                      $selected = "SELECTED";}
                                       else {$selected = "";}
                        }
             echo "<option value=\"{$_SERVER['PHP_SELF']}\" {$selected}>{$product}</option>";                                   
               }
                                ?>
       </select>
p.s.у меня идёт генерация списка из БД.
0
9 / 9 / 0
Регистрация: 07.10.2009
Сообщений: 49
30.10.2013, 15:10 10
Вот, рабочий пример. Форма в этом случае не нужна
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<select name="items" size="1" onchange="location=this.options[this.selectedIndex].value">
    <?
    @$cur_product = $_GET['id']; // Текущий продукт @ - подавление ошибки если id не назначен
 
    $products = array(0=>"Ничего не найдено");
    if(mysqli_num_rows($result) > 0) // Желательно проверять, пришло ли что-то из запроса
    {
        unset($products[0]); // Удаление пункта "Ничего не найдено"
        while($row = mysqli_fetch_array($result))
        {
            // Загоняем продукцию в массив
            $products[$row['prd_id']] = $row['product'];
        }
    }
 
 
    // Выводим список
    if(is_array($products) && (!empty($products))) // Обязательные проверки на пустой массив
    foreach($products as $prod_id => $prod_name)
    {
        if($cur_product == $prod_id) $selected = "SELECTED"; // Выделяем в списке текущий продукт
        else $selected = "";
 
        echo "<option value=\"{$_SERVER['PHP_SELF']}?id={$prod_id}\" {$selected}>{$prod_name}</option>\r\n";
    }
    ?>
</select>
Добавлено через 4 минуты
PS Во избежание мешанины html и php кода, советую пользоваться шаблонизатором, пусть даже самым простым:
http://pyha.ru/articles/php/xtemplate/
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.10.2013, 15:10

что надо сделать чтоб при выборе пункта списка всталяло значения в строку
&lt;option value=&quot;'1'&quot; selected&gt;def&lt;/option&gt;

скрипт для выбора пункта выпадающего списка
Доброго времени суток! Спрятал select с помощью opacity, поверх position-absolute поставил блок с...

Укажите номер таблицы, для которой выполняется условие «Максимальная протяженность маршрута от пункта А до пункта С не больше 5
2) В таблицах приведена протяженность автомагистралей между соседними населенными пунктами. Если...

Ползунок выбора пункта
Может кто видел где нибудь скрипт ползунка такого, что бы если сдвинули влево - выполнился один...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru