2012-02-09 7 views
1

Я создал и html-форму, у которой есть выпадающий список.Как получить значение и идентификатор из раскрывающегося списка в php?

Этот раскрывающийся список заполняется из базы данных.

<select name="classes"> 
<?php 
foreach() { 
?> 
<option value="<?php echo $id ?>"><?php echo $name ?></option> 
<?php 
} 
?> 
</select> 

Теперь я хочу получить $ id и $ name оба. Как я это сделаю?

Я попробовал этот

echo $_POST['classes']; 

Но он отображает только $ идентификатор выбора пункта. И я хочу $ id и $ name оба.

+0

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

+1

Мне нужно обоим, вам придется использовать JavaScript для изменения запроса на отправку. – JRL

+0

, но мне нужно оба. Как получить идентификатор и имя? Возможно ли это в php? – Ahmad

ответ

4

Вы не можете. Одним из возможных вариантов будет размещение как Infos внутри атрибута value, а затем разделив их обратно с PHP (используя разделитель):

<option value="<?php echo $id.'|'.$name; ?>"><?php echo $name ?></option> 

В PHP:

$datas = explode('|',$_POST['classes']); 
$id = $datas[0]; 
$name = $datas[1]; 

Но это не то, как система должен быть. Обычно имя $ будет использоваться только как «дружественная» информация для пользователя, потому что значение иногда может быть просто INT, и пользователь не поймет, к чему относится этот int, поэтому мы даем ему описание слова, чтобы выбрать вариант: но то, что вам было бы только нужно, - это то значение, которое вы всегда можете использовать, чтобы снова получить описание, которое приходит вместе с ним (например, путем поиска в базе данных).

0

Отправка формы означает только отправку «значения» для поля выбора (лечить «имя» в качестве только метки). Вы можете просто получить «имя» из базы данных, когда у вас есть «id» при обращении с формой.

1

имя Append для Id и передать его в качестве значения ,, и взрываются имя с другого конца

1

Насколько я знаю знайте, когда вы отправляете эту форму, только стоимость будет перенесена. Если значение отсутствует, внутренний HTML становится значением.

То, что я хотел бы сделать это:

<select name="classes"> 
<?php 
foreach($classes as $id => $name) //i'm guessing here, is this what you meant? 
{ ?> 
<option value="<?php echo $id.'|'.$name ?>"><?php echo $name ?></option> 
<?php } ?> 
</select> 

В случае, если вы не знакомы, период оператор конкатенации. Подумайте об этом как клей для кусочков струны. Поэтому я склеиваю $ id слева от «pipe», а затем приклеиваю $ name к концу этого. Затем в вашем обработчике используйте split или explode для разделения двух значений на трубе.

На самом деле, я бы сделал это немного иначе, повторяя все больше и получая и теряя php/html, но я старался как можно больше оставить ваш код в целости.

+0

Я слишком медленный. Кто-то еще отправил примерно такой же ответ, как и я. :-) – TecBrat

1

Вы хотите, и имя и так при сохранении значения параметра, поместить как этот

<option value="<?php echo $id."_".$name;?>"><?php echo $name?></option> 

и размещение данных просто взрываются значение вы получите как это и имя

Смежные вопросы