我曾经把register_globals
变成ON
(我知道-坏坏坏坏得可怕),现在我正在改变它,具体的应用程序是我的DVD收藏。添加DVD会显示一组类型/类别的复选框(即戏剧,喜剧等)。每个类型都来自一个数据库表,所以我可以根据需要添加新的类型。这里的问题是,它从这个db表中的缩写生成字段名(复选框名)。
IE:
<input type="checkbox" name="drama" />Drama
<input type="checkbox" name="bio" />Biography
(etc)
所以我之前所做的是,使用制作条目的脚本,它将运行缩写名称列表,如果它匹配输入($_POST['drama'])
,它将表明该DVD属于该类别。
现在的问题是,随着全局变量变成off
,我如何动态地收集那些$_POST values
?我尝试遍历数据库并输出一个连接变量,试图以以下格式声明它们:
$drama=$_POST['drama'];
这不起作用,因为我把函数和变量混在一起了,这造成了可怕的混乱。
我希望有人能回答我如何在$_POST array
中阅读并使用它
给定这样的复选框:
<input type="checkbox" name="genre[]" value="drama" />
<input type="checkbox" name="genre[]" value="comedy" />
<input type="checkbox" name="genre[]" value="mystery" />
你最终会得到$_POST['genre']
是一个数组。假设戏剧和神秘都被勾掉了,你最终会得到
$_POST['genre'] = array(
0 => 'drama',
1 => 'mystery'
);
请记住,未选中的复选框不会与表单一起提交,所以如果您在$_POST['genre']
中获得一个条目,则它在表单中被选中。
要检查DB中的某个类别是否被选中,您可以执行如下命令
if (in_array('drama', $_POST['genre'])) {
... drama is selected
}
请看下面的例子:
foreach ($_POST as $key => $value) {
echo "name: $key, value: $value<br />";
}