我需要存储从数组中的下拉框中选择的所有项目。我现在只有一个表单,其中包含选择下拉列表。因此,每次从列表中选择一个项目并提交表单时,它都会覆盖上一个项目。
如何使其工作,就像每次提交时都会存储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;
}
}
答案 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值