0

我有一个下拉菜单,我想将其更改为多选框。如果您只选择 1 个选项(我之前的方式),下面的代码就可以工作,但是您选择 2 它只会显示两个选项中的 1 个,我怎样才能让它显示两个选项都被选中,这里是代码:

<?php $makes = array("volvo","Saab","Opel","Audi","BMW") ?>


<form method="post" name="store" action="<?php $_SERVER['PHP_SELF'] ?>" >
<select multiple="multiple" name="cars">
<?php foreach ($makes as $make){echo "<option value=\"$make\">". $make ."</option>";           $vehicles = $_POST['cars'];} ?>
    <input name="submit" type="submit">
    </select>
</form>
<?php 


if($_POST['submit']){
  echo $vehicles;
}
?>
</body>
</html>
4

3 回答 3

1

我希望我没看错,您想从 HTML 多选框中检索结果数组。

顺便说一句,您的代码片段不正确;HTML <form> 结束标记应该在结束 <select> 标记之后,我不确定为什么你的 PHP for() 循环中有以下内容:

$vehicles = $_POST['cars'];

您需要将 HTML 标记的 name 属性设置为一个数组,如下所示(注意我没有测试此代码):

<select multiple="multiple" name="cars[]">
<?php 
    foreach ($makes as $make) {
        echo "<option value=\"$make\">". $make ."</option>";
    }
?>
</select>

<?php 
    if($_POST['submit']) {
        print_r($_POST['cars']);
     }
?>

PHP.net - 如何从选择多个 HTML 标记中获取所有结果?

于 2012-11-09T07:21:01.387 回答
0

您的问题尚不完全清楚,但我认为您的意思是以下代码仅回显一个值:

if($_POST['submit']){
  echo $vehicles;
}

要将您选择的汽车变成一个数组,您需要[]在名称的末尾添加:

<select multiple="multiple" name="cars[]">

然后对于echo每个选择,您可以使用foreach循环:

foreach ($_POST['cars'] as $car)
    echo $car.'<br />';
于 2012-11-09T07:22:58.627 回答
0

你可以试试 if($_POST['submit']){ print_r($vehicles); 如果有任何问题,请告诉我..

于 2012-11-09T07:48:59.910 回答