Php 如何在数组中存储从下拉框中选择的项目的id?

Php 如何在数组中存储从下拉框中选择的项目的id?,php,html,Php,Html,我需要在数组中存储从下拉框中选择的所有项目。我现在只有一个带有选择下拉列表的表单。因此,每次我从列表中选择一个项目并提交表单时,它都会覆盖上一个项目 我如何使它像每次提交时一样工作?id将被存储,以便我可以显示所有选定的项目 //this is the select dropdown for addon item <select name="addon"> <?php mysql_sel

我需要在数组中存储从下拉框中选择的所有项目。我现在只有一个带有选择下拉列表的表单。因此,每次我从列表中选择一个项目并提交表单时,它都会覆盖上一个项目

我如何使它像每次提交时一样工作?id将被存储,以便我可以显示所有选定的项目

//this is the select dropdown for addon item
<select name="addon">
                       <?php
                       mysql_select_db($database_bumi_conn, $bumi_conn);
                       $query="SELECT * FROM tbl_addons WHERE status=1";
                       $result=mysql_query($query)or die(mysql_error());
                       while($row=mysql_fetch_array($result))
                       {
                           $a_id=$row['addOns_id'];
                           $a=$row['addOns'];

                       ?>

                       <option value="<?php echo $a_id?>"><?php echo $a;?></option>
                       <?php
                       }
                       ?>

                       </select>
//And this is how I store the id 
$addon_id=$_POST['addon'];


//edited with session
$_SESSION['option']=array();
$_SESSION['option'][$addon_id]=array('qty'=>$qty,'date_1'=>$date_1,'date_2'=>$date_2);
    print_r($_SESSION['option']);
    foreach($_SESSION['option'] as $option=>$value)
    {
        echo $option.'=>';
        foreach($value as $val)
        {
            echo $val;
        }
    }
//这是加载项的选择下拉列表

忽略您使用的是一个不推荐使用的、本质上不安全且未维护的扩展,您需要在
元素上使用
multiple
属性,并让PHP知道它将通过在元素名称上使用
[]
后缀接收一个值数组。总而言之

<select name="addon[]" multiple>
    <?php foreach($collection as $val => $label) : ?>
    <option value="<?= htmlspecialchars($val) ?>"><?= htmlspecialchars($label) ?></option>
    <?php endforeach ?>
</select>


您可以使用会话变量来存储所有ID:

session_start(); 

// Rest of your code here

// $addon_id=$_POST['addon'];  Becomes : 
if (!in_array($_POST['addon'], $_SESSION['addons'])) 
   $_SESSION['addons'][] = $_POST['addon'];

编辑:不确定是否使用会话进行编辑。你每次都在重置$_会话['option'],丢失以前的加载项id值

而不是逐个选择,请执行多选下拉菜单选择多个选项,并将其命名为
addon[]
@Phil,我没有选择使用PDO的选项,尽管我更喜欢它,因为我的老板希望它是mysql.@Gautam3164必须逐个选择,因为每件商品都有日期取货和退货。@veronicageorge这毫无意义。你的老板是个白痴吗?谢谢,这很有效。我正在检查我哪里出了问题。再次感谢