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

HTML+CSS+JavaScript

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

 

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

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

тема: Как присвоить значение селекта переменной php?
 
 автор: olejek   (30.01.2008 в 13:03)   письмо автору
 
 

Как присвоить значение селекта переменной php?

   
 
 автор: sim5   (30.01.2008 в 14:26)   письмо автору
 
   для: olejek   (30.01.2008 в 13:03)
 


<form action="" method="post">
 <select name="mysel">
  <option value="1"></option>
  <option value="2"></option>
  <option value="3"></option>
 </select>
</form>
<?php
$v 
= isset($_POST['mysel']) ? $_POST['mysel'] : "";
?>

   
 
 автор: olejek   (30.01.2008 в 14:42)   письмо автору
 
   для: sim5   (30.01.2008 в 14:26)
 

Извините, я, наверное, неправильно вопрос задал.
Не значение, а текст селекта ( не знаю, как это называется)
В общем, не value, а то что между <option> </option>

   
 
 автор: sim5   (30.01.2008 в 16:48)   письмо автору
 
   для: olejek   (30.01.2008 в 14:42)
 

Это не передается непосредственно из формы. А зачем? Если вы формируете список, то вы должны знать текст опшенов, а по принятому значению это можно определить. Ну а если вы этого не знаете, то нужно написать небольшой JS сценарий, либо непосредственно в событии onchange списка прописать присвоение текста выбранного опшена скрытому полю формы. Вот его на сервере и получите. Но к чему такие сложности...

   
 
 автор: olejek   (30.01.2008 в 17:06)   письмо автору
 
   для: sim5   (30.01.2008 в 16:48)
 

В общем, надо сделать следующее:
-если страница отображается на экране, то выводится селект (класс sel_text в этом случае не виден)
-если страница идет на печать, то нужно получить просто надпись, т.е $display_label (класс sel в этом случае не виден)
В нижеприведенном коде все работает, но он какой-то громоздкий, и мне кажется, можно сделать проще.
<span class=sel><select name=fio>
    <?        
            $post_var
=$_REQUEST['id'];
            while (
$qr mysql_fetch_array($query))
            {
            if (!
$first && !$post_var)
                {
                
$display_label=$qr['fio'];
                
$first=true;
                }
            if(
$qr['id']==$post_var)
                {
                
$chk="selected";
                
$display_label=$qr['fio'];
                }
            else
                
$chk="";
            echo 
"<option $chk value=$qr['id']>".$qr['fio'];
            }
    
?>
    </select></span>
    <span class=sel_text><?=$display_label?></span>

   
 
 автор: sim5   (30.01.2008 в 18:22)   письмо автору
 
   для: olejek   (30.01.2008 в 17:06)
 

Ни че не понял, а при чем тут тогда то что между <option> </option>?

   
 
 автор: olejek   (31.01.2008 в 11:33)   письмо автору
 
   для: sim5   (30.01.2008 в 18:22)
 

Ну как при чем?
Если после выполнения кода, селект примет такой вид:

<select name=id>  //там опечатка не fio, а id
   <option value=1>Петров
   <option value=2 selected>Сидоров
   <option value=3>Иванов
</select>

то что я не могу получить значение этого selected option? (В принципе, конечно, не имеет значение, что это будет - value или текст).

   
 
 автор: sim5   (31.01.2008 в 12:08)   письмо автору
 
   для: olejek   (31.01.2008 в 11:33)
 

Почему причем? Потому, что вы выше говорите о видимости <span class=sel_text><?=$display_label?></span> - а как это связано с опшенам ни слова. Но если вас интересует текст опшенов, то его можно узнать, обратившись к их свойству text, например:

<select onchange="alert(this.options[selectedIndex].text)">
<option value="1">Set 1</option>
<option value="2">Set 2</option>
<option value="3">Set 3</option>
</select>

   
 
 автор: olejek   (31.01.2008 в 12:20)   письмо автору
 
   для: sim5   (31.01.2008 в 12:08)
 

Переменной $display_label нужно присвоить текст этого selected option. А как это сделать, я не знаю, используя this.options[selectedIndex].text

   
 
 автор: sim5   (31.01.2008 в 13:50)   письмо автору
 
   для: olejek   (31.01.2008 в 12:20)
 

У вас этот элемент содержит установленное по умолчанию значение, но в РНР. Если вы хотите чтобы РНР-переменная $display_label получила это значение, то этого сделать нельзя, не отправив форму на сервер и там определить это. А вот поместить в элемент SPAN текст опшена можно, например, так:

<select onchange="document.getElementById('as').innerHTML = this.options[selectedIndex].text"> 
<option value="1">Set 1</option> 
<option value="2">Set 2</option> 
<option value="3">Set 3</option> 
</select>
<span id="as" class=sel_text>Тут текст установленный переменной $display_label</span>

   
 
 автор: olejek   (31.01.2008 в 14:47)   письмо автору
 
   для: sim5   (31.01.2008 в 13:50)
 

Спасибо большое, sim5! (Вот Вы меня, наконец-то, поняли)
Может, это уже наглость, но Вы не могли бы написать ссылку на хороший мануал об "этом":
document.getElementById('as').innerHTML = this.options[selectedIndex].text,
а то стыдно такое не знать

   
 
 автор: sim5   (31.01.2008 в 16:56)   письмо автору
 
   для: olejek   (31.01.2008 в 14:47)
 

:)) Боюсь отдельного мануала именно по этому нет. В сети очень много электронных учебников по JS, DOM. Конкретно ссылок дать не могу (может кто другой назовет). А я пользуюсь книгами "в твердой упаковке" :)

   
 
 автор: olejek   (31.01.2008 в 17:04)   письмо автору
 
   для: sim5   (31.01.2008 в 16:56)
 

В любом случае, спасибо за советы!

   
 
 автор: Волки   (31.01.2008 в 13:33)   письмо автору
 
   для: olejek   (30.01.2008 в 13:03)
 

<form action="" method="post"> 
 <select name="mysel"> 
  <option>text 1</option> 
  <option>text 2</option> 
  <option>text 3</option> 
 </select> 
</form>

если <option> идет без value, то ПОСТОМ передасться текст внутри option-a

   
Rambler's Top100
вверх

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