Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вопрос по Select
 
 автор: Dimrix   (11.05.2005 в 13:12)   письмо автору
 
 

Как отследить выбор/смену значения в поле Select

   
 
 автор: glsv (Дизайнер)   (12.05.2005 в 05:30)   письмо автору
 
   для: Dimrix   (11.05.2005 в 13:12)
 

Отследить с помощью php?
Пусть есть форма с выпадающим списком

<form action="action.php" method="post">
  <select name="name">
    <option value="val1"> value 1</option>
    <option value="val2"> value 2</option>
    <option value="val3"> value 3</option>        
  </select>
  <input type="submit" value="Отправить">
</form>

По нажатию на кнопку "Отправить" данные формы пересылаются скрипту-обработчику action.php. В нем и проверяем: какой элемент списка выбран.

<?
  
echo $_POST["name"];
?> 

Это выведет имя выбранного элемента (val1 или val2 или val3)

   
 
 автор: Dimrix   (12.05.2005 в 11:10)   письмо автору
 
   для: glsv (Дизайнер)   (12.05.2005 в 05:30)
 

Я чуть не ясно сказал задачу: мне нужно отследить смену селекта без кнопочсек и прочих вещей. С кнопкой то просто, а вот пользователь делает выбор и пошла работа в соответствии с его выбором. Такое исполнение я видел на не одном сайте, а вот код какой?

   
 
 автор: glsv (Дизайнер)   (12.05.2005 в 11:55)   письмо автору
 
   для: Dimrix   (12.05.2005 в 11:10)
 

Тогда нужно применить JavaScript для автоматической отправки формы.
По событию изменения выбранного элемента onchange выполняется this.form.submit()

<form action="action.php" method="post">
  <select name="name" onchange="this.form.submit();">
    <option value="val1"> value 1</option>
    <option value="val2"> value 2</option>
    <option value="val3"> value 3</option>        
  </select>
</form>

По ссылке сходная тема.

http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=3645&page=1

   
 
 автор: Dimrix   (12.05.2005 в 20:30)   письмо автору
 
   для: glsv (Дизайнер)   (12.05.2005 в 11:55)
 

Спасибо, прочитал, но не нашёл главного ответа: как мне передать параметр в перезагружаемую страницу? Например в селекте есть значения "1", "2" и "3". Как передать выбраную цифру?

   
 
 автор: glsv (Дизайнер)   (13.05.2005 в 05:13)   письмо автору
 
   для: Dimrix   (12.05.2005 в 20:30)
 

> как мне передать параметр в перезагружаемую страницу?
Тогда не ясен главный вопрос: куда нужно передать параметр? Т.е. " перезагружаемая страница" - это НЕ скрипт-обработчик формы action.php? Тогда что это за страница?
Опишите последовательность: что должно происходить, а ты мы, видимо, говорим про разные вещи.

   
 
 автор: Dimrix   (13.05.2005 в 21:26)   письмо автору
 
   для: glsv (Дизайнер)   (13.05.2005 в 05:13)
 

Ну не посредственно задача такова: окно разбито на фреймы с "целями"(target=...) Так вот в челекте я вывожу список ников, при выборе ника(смене) другой фрейм должен загрузить характеристики выбранного ника. Выборку я сам сделаю из базы, просто хотелось бы по смене сразу запускать обновление нужного фрейма...

   
 
 автор: glsv (Дизайнер)   (14.05.2005 в 04:14)   письмо автору
 
   для: Dimrix   (13.05.2005 в 21:26)
 

Т.е. нужно передать выбранные параметры скрипту, который находится во фрейме? Для этого в описании формы укажите параметр target=nameframe. Nameframe – имя фрейма, которому нужно передать данные. action.php – имя скрипта-обработчика.

<form action="action.php" method="post" target=nameframe>
  <select name="name" onchange="this.form.submit();">
    <option value="val1"> value 1</option>
    <option value="val2"> value 2</option>
    <option value="val3"> value 3</option>        
  </select>
</form>

   
 
 автор: Dimrix   (14.05.2005 в 10:18)   письмо автору
 
   для: glsv (Дизайнер)   (14.05.2005 в 04:14)
 

ну а параметр где передавать будем? ведь что бы передать, нам

action="action.php"

не подходит...(хотя могу что то не допонимать) нужно что то вроде

action.php?func=value

а у же в вызываемом файле настроить обработку $_POST['value']. Вопрос мой в том, как передать выбранную величину....

   
 
 автор: glsv (Дизайнер)   (14.05.2005 в 11:32)   письмо автору
 
   для: Dimrix   (14.05.2005 в 10:18)
 

>ну а параметр где передавать будем? ведь что бы передать, нам
Параметр передается автоматически методом POST.
Просмотрите еще раз самый первый мой ответ вам.

<? 
  
echo $_POST["name"]; 
?>

Этот код нужно вставить в action.php. Он выведет значение элемента формы.

>нужно что то вроде action.php?func=value
Да, так тоже можно передавать. Это метод GET (через строку браузера). А есть еще метод POST. Он определяется в описании формы method="post". Для форм удобно пользоваться методом POST, т.к. это не "загрязняет" адресную строку браузера и позволяет обойти ограничения на длину передаваемых данных по методу GET.

   
 
 автор: Dimrix   (16.05.2005 в 10:13)   письмо автору
 
   для: glsv (Дизайнер)   (14.05.2005 в 11:32)
 

Вообще запутался. В прикреплённом файле код полностью код. Дело в том, что только в таком варианте он работает(случайно нашёл). Если я убираю одну из <Form> или меняю значение одного из name на другое(отличное от значения другого <form name>) - пишет ошибку, мол объет не найден... Можете подсказать, в чём ошибка? Два раза писать почти одно и тоже (всмысле <form>) мне не жалко, но код засоряется, да и лишний баг может получится...

   
 
 автор: KR0k   (16.05.2005 в 15:50)   письмо автору
 
   для: glsv (Дизайнер)   (12.05.2005 в 05:30)
 

если я тебя правильно понял...то тебе просто позарез нужен switch!

к примеру....твоя форма послала значение "юзер", то в скрипте обработчике должно быть вот как:
switch($_POST['name']){
case "юзер":case user();break;
case "админ": case admin();break;
default : main()
}

и посмотри синтаксис языка....я просто на 100% не уверен что все правильно написал! Хотя от меня просили идею а не ее реализацию!!!!

   
 
 автор: Dimrix   (16.05.2005 в 17:39)   письмо автору
 
   для: KR0k   (16.05.2005 в 15:50)
 

Ну вопрос как обработать у меня не подымался, поднимался вопрос как передать данные. На что, спасибо, дали совет ;-) А по поводу бага в коде, то я нашёл: забыз закрыть предидущую открытую форму(</form>) вот и глюк был: разобрался сам. Но всё равно всем спасибо за помощь и советы!

   
 
 автор: glsv (Дизайнер)   (17.05.2005 в 04:05)   письмо автору
 
   для: Dimrix   (16.05.2005 в 17:39)
 

Т.е. помощь больше не нужна? Вопрос решен?

   
 
 автор: Dimrix   (17.05.2005 в 09:35)   письмо автору
 
   для: glsv (Дизайнер)   (17.05.2005 в 04:05)
 

Помощь нужна, только в других вопросах... они назреют, а в этом всё ок - спасибо! ;-)

   
 
 автор: Dimrix   (20.05.2005 в 14:12)   письмо автору
 
   для: Dimrix   (11.05.2005 в 13:12)
 

Появился ещё один подобный вопрос. Допустим у меня есть Select с полями: 1,2 и 3. Так вот если выбираю 1-2, то ничего не должно происходить, а вот если 3 - то должен становится видимым Input. МОжете подсказать как это сделать. Хотя нутром чую что это скорее всего явой... или можно пхп?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования