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

Форум PHP

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

 

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

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

тема: Передача значений <OPTION>
 
 автор: paulluk   (12.08.2008 в 16:58)   письмо автору
 
 

Есть такой код:

<select id="country">
  <option value="1">USA</option>
  <option value="2">Canada</option>
</select> 


Как в сценарий передать значение и Value и названия страны???

  Ответить  
 
 автор: sim5   (12.08.2008 в 17:02)   письмо автору
 
   для: paulluk   (12.08.2008 в 16:58)
 

В какой сценарий - РНР или JS?

  Ответить  
 
 автор: paulluk   (12.08.2008 в 17:03)   письмо автору
 
   для: sim5   (12.08.2008 в 17:02)
 

в PHP

  Ответить  
 
 автор: sim5   (12.08.2008 в 17:11)   письмо автору
 
   для: paulluk   (12.08.2008 в 17:03)
 

Первое: смените id="country" на name="country", иначе вы вообще ничего не получите. Значение выбранного поля: $_POST["country"], если форма передается методом POST. А вот текст опшена вы должны знать на сервере, коли вы пишите в значениях опшенов не значение поля (например, из базы), а его id (номер).

  Ответить  
 
 автор: paulluk   (12.08.2008 в 17:17)   письмо автору
 
   для: sim5   (12.08.2008 в 17:11)
 

А если я пишу и значение и id???

  Ответить  
 
 автор: sim5   (12.08.2008 в 17:22)   письмо автору
 
   для: paulluk   (12.08.2008 в 17:17)
 

Пишите на здоровье, но этот атрибут будет иметь значение для JS-сценария, а не для РНР. И еще, если у вас не выбран опшен, и пользователь посчитает, что ему нужен именно первый и отошлет форму без выбора, то вы все равно ничего не получите, так как этот опшен не выбран по умолчанию. Правильно, в таком случае, пишется так:
<select name="country" id="country"> 
  <option value="1" selected="selected">USA</option> //это выбранное значение по умолчанию 
  <option value="2">Canada</option> 
</select>

  Ответить  
 
 автор: paulluk   (12.08.2008 в 17:32)   письмо автору
 
   для: sim5   (12.08.2008 в 17:22)
 

Я чего т наверно не понял или не правильно объяснил, когда я отправляю эту форму у меня получается два значения country и добустим id=1, а как можно получить только значения option value=1 и USA???

  Ответить  
 
 автор: GeorgeIV   (12.08.2008 в 17:38)   письмо автору
 
   для: paulluk   (12.08.2008 в 17:32)
 

Интересно, как это получается?! Чтобы из одного селекта два значения отправлялись?
Как ты это определяешь?

  Ответить  
 
 автор: paulluk   (12.08.2008 в 17:41)   письмо автору
 
   для: GeorgeIV   (12.08.2008 в 17:38)
 

Ничего я не определяю, просто спрашиваю возможно или нет....

  Ответить  
 
 автор: sim5   (12.08.2008 в 17:41)   письмо автору
 
   для: paulluk   (12.08.2008 в 17:32)
 

Вы получите только то значение, которое пользователь выбирет:
<form action="?" method="post">
<select name="country"> 
  <option value="1" selected="selected">USA</option> 
  <option value="2">Canada</option> 
</select>
<input type="submit" value="send"> 
</form>
<?
print_r
($_POST);
?>

Два значения можно получить в том случае, если это список с мультивыбором, чего у вас нет. Что касается получения текстового содержания опшена на сервере, то зачем? Вы как формируете этот список для вывода на страницу, от куда вы берете значения для него?

  Ответить  
 
 автор: paulluk   (12.08.2008 в 17:44)   письмо автору
 
   для: sim5   (12.08.2008 в 17:41)
 

В приведенном Вами коде, если пользователь выбрал USA, возможно ли в сценарии получить и USA и 1???

  Ответить  
 
 автор: sim5   (12.08.2008 в 17:54)   письмо автору
 
   для: paulluk   (12.08.2008 в 17:44)
 

Я сейчас как заматерюсь, больно станет! Списки формируете вы, а не ваш дядя, так ведь? Значит вы должны знать, что значению 1 соответсвует USA, а значению 2, что-то еще. Зачем вам брать текст опшена в этом случае (хотя это можно и передать)? Если вы формируете его не используя данные из базы или иного списка и не можете запомнить эти значения, то пишите тогда в значениях опшенов непосредственно USA, Canada... и т.д., а не числовые значения.

  Ответить  
 
 автор: paulluk   (13.08.2008 в 11:10)   письмо автору
 
   для: sim5   (12.08.2008 в 17:54)
 

Не ругайтесь пожалуйста... мож просто пример со странами неудачный.... Допустим у меня select наполняется значениями из БД таким образом:


<select name="test" id="test">
  <option value="1" selected="selected">Значение1</option>
  <option value="2">Значение2</option>
</select> 


Т.е. значения в option, могут повторяться, уникальность их можно определить только с помощью id в БД, это id я как раз и хотел присваивать значению value. Мне бы хотелось что-бы после того как пользователь выбрал значения в select, и нажал кнопку submit, в сценарий передавалось и значение value и значение option, сценарий формировал некую страницу, на которой пользователь видел что он выбрал и после определенных действий производились манипуляции с выбранным значением в БД, естественно раз значения могут повторяться, необходим этот id....

  Ответить  
 
 автор: sim5   (13.08.2008 в 11:42)   письмо автору
 
   для: paulluk   (13.08.2008 в 11:10)
 

Да я разве ругаюсь :) Я как раз все допытывался от вас - зачем вам нужен текст опшена, если вы его всегда можете узнать на стороне сервера по значению выбранного опшена. Я не буду приводить тут запросы к базе, коли вы формируете список посредством значений полученных из базы, значит у вас есть уникальные записи в ней (это для атрибута value), и описание этих записей (это текст опшенов). Следовательно, получив значение списка (это как раз номер уникальной записи в базе), вы всегда можете получить и текстовое содержание этого опшена. Будем для примера имитировать запрос к базе, проверкой в массиве, который у нас служит как бы записями в базе (предполагается, что форма передается методом POST):

<?
$m 
= array(1=>'USA','Canada');
//для простоты, узнаем, что форма пришла
//непосредственно по имени списка
if (isset($_POST['test'])) echo "Вы выбрали " $m[$_POST['test']];   

Соответственно, вы можете обратиться к базе к уникальной записи: intval($_POST['test']), и также получите то, что некогда прописали опшену. Если ваши id записи в базе, которые вы передаете в значения спика, это поле с автоинкрементом, то они всегда будут у вас уникальными.

  Ответить  
 
 автор: paulluk   (13.08.2008 в 12:05)   письмо автору
 
   для: sim5   (13.08.2008 в 11:42)
 

Большое спасибо за объяснение!!!

  Ответить  
 
 автор: BinLaden   (13.08.2008 в 11:56)   письмо автору
 
   для: paulluk   (13.08.2008 в 11:10)
 

> Не ругайтесь пожалуйста

Вы еще не знаете как sim5 ругается. Матом и на весь форум :))

  Ответить  
 
 автор: paulluk   (13.08.2008 в 12:05)   письмо автору
 
   для: BinLaden   (13.08.2008 в 11:56)
 

Постараюсь до этого не доводить, спасибо:))

  Ответить  
 
 автор: Yuriev   (13.08.2008 в 12:16)   письмо автору
 
   для: paulluk   (12.08.2008 в 16:58)
 

<select name="test"> 
  <option value="1---Canada" selected="selected">Canada</option> 
  <option value="2---USA">USA</option> 
  <option value="3---USA">USA</option> 
</select>

... а в обработчике формы из $_POST['test'] (или $_GET['test']) преобразовать в пару id-value, например так:

$prom = explode('---', $_POST['test']);
echo $prom[0]; // будет 1
echo $prom[1]; // будет Canada

  Ответить  
 
 автор: Paradox   (27.02.2017 в 12:04)
 
   для: Yuriev   (13.08.2008 в 12:16)
 

Спасибо!

  Ответить  
 
 автор: GaMBiT   (13.08.2008 в 12:24)   письмо автору
 
   для: paulluk   (12.08.2008 в 16:58)
 

Если Вам поможет, мой вариант:

<?
$result 
mysql_query("SELECT name, ID FROM table");
while (
$row mysql_fetch_array ($result))
{
       echo 
"<option value='".$row["ID"]."'>".$row["name"]."</option>";
}
echo 
"</select>";
?>

В таком виде, данные берутся из базы и сопоставляются с id. Когда пользователь выбирает какой-нибудь пункт, возвращается не его имя, а его ID.

  Ответить  
Rambler's Top100
вверх

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