Выпадающий список PHP Array и HTML Form - PullRequest
3 голосов
/ 13 апреля 2011

У меня есть простой массив PHP с именем $ category, который выглядит следующим образом:

Array
(
[Closed] => P1000
[Open] => P1001
[Pending] => P1002
[In Progress] => P1003
[Requires Approval] => P1004
)

У меня есть простая форма HTML, в которой есть раскрывающийся список для одного поля, в котором я хотел бы использоватьмассив для параметров, однако я только хочу, чтобы он отображал текст (например, «Закрыт», «Открыть», «В ожидании», «Выполняется» и «Требуется утверждение») в качестве параметров в раскрывающемся списке, но сохраняет соответствующий ключ для этого параметра (например, P1000, P1001 и т. д.), который затем отправляется как значение POST при отправке формы.

HTML-код поля формы на данный момент:

<select name="category_id">
<option value=""></option>
<?php foreach($categories as $category) {$category = htmlspecialchars($category);?>
<option value="<?php echo $category; ?>"><?php echo $category; ?></option>
<?php
}
?>
</select>

Я могу получить его для отображения либо текста, либоидентификаторы, но не текст и хранить идентификатор.Надеюсь, это что-то простое, что кто-то может направить меня в правильном направлении.

Большое спасибо, Стив

Ответы [ 5 ]

5 голосов
/ 13 апреля 2011

Вы забыли о теге $ value.Вы дважды вставляли название категории вместо значения.Вы должны сделать это:

<select name="category_id">
<option value=""></option>
<?php 
    #                             !vCHANGEv!
    foreach($categories as $category => $value) 
    {
       $category = htmlspecialchars($category); 
       echo '<option value="'. $value .'">'. $category .'</option>';
    }
?>
</select>
0 голосов
/ 13 апреля 2011
<select name="category_id">
<option value=""></option>
<?php
$keys = array_keys($categories);
for($i=0; $i<count($categories); $i++)
{?>
    <option value="<?php echo $keys[$i]; ?>"><?php echo $categories[$i]; ?></option>
<?php
}
?>
</select>

Предположим, что $ category - это массив, который вы показали выше.

0 голосов
/ 13 апреля 2011
foreach($categories as $category => $category_id)

Это то, что вы ищете.

0 голосов
/ 13 апреля 2011

вы не включили ключи в цикл foreach

foreach($categories as $id=>$category){
    $category = htmlspecialchars($category);
    echo "<option value="{$id}">{$category}</option>";
}
0 голосов
/ 13 апреля 2011

Поскольку вы должны включить ключ и значение, оба ключа должны показать текст и значение для POST

<?php foreach($categories as $key => $category) {
   $category = htmlspecialchars($category);?>
   <option value="<?php echo $category; ?>"><?php echo $key; ?></option>
<?php
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...