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

时间:2014-08-14 05:52:37

标签: php html

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

如何使其工作,就像每次提交时都会存储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;
        }
    }

2 个答案:

答案 0 :(得分:0)

忽略您使用已弃用的,本质上不安全且未维护的扩展程序的事实,您需要使用multiple元素上的<select>属性并让PHP知道它将会通过在元素名称上使用[]后缀来接收值数组。总结一下......

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

PHP变量$_POST['addon']将包含一系列选定值(当然,当表单发布时)。

答案 1 :(得分:0)

你可以使用SESSION&#39;用于存储所有ID的变量:

session_start(); 

// Rest of your code here

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

修改:不确定您的会话编辑。您每次都重置$ _SESSION [&#39;选项&#39;],丢失以前的addon_id值