PHP当值IS实际为0时传递按钮值的更简洁方法

时间:2013-05-01 11:38:35

标签: php html button

我必须捏造一段代码才能让它适合我。我只是想知道我是否遗漏了一些明显的东西来清理它,或者我的软糖是否是解决这个问题的正确方法。

我在页面上有一个按钮,用于通过键从会话变量数组中删除项目。

PHP用于生成按钮值....

foreach($rows as $key => $row){
++$key;
$sql = 'SELECT ingredient_name FROM ' . INGREDIENTS_TABLE . ' WHERE ingredient_id = '.$row[0];
$result = $db->sql_query($sql);
$ingredient = $db->sql_fetchrow($result);
$template->assign_block_vars('ingr_list', array(
    'INGREDIENT'    => $ingredient['ingredient_name'],
    'QTY'       => $row[1],
    'REMOVE_KEY' => $key,
    ));

}

HTML按钮....

<button type="submit" name="remove" id="remove" value="{ingr_list.REMOVE_KEY}" title="Remove {ingr_list.INGREDIENT} ?">x</button>

单击时的PHP ....

if($_POST['remove']){
$key=--$_POST['remove'];
if($key!==false) unset($_SESSION['ingredients'][$key]);
}

正如您所看到的,我正在获取$ key编号,然后立即添加1。原因是如果$ key值为0,则按钮值也为0.当单击值为0的按钮值时,将忽略if($ _ POST ['remove'])子句。一旦if子句通过,我立即从中减去1,以便识别我所追求的实际密钥。

感谢您寻找:)

2 个答案:

答案 0 :(得分:5)

它失败了,因为设置了post值,但它设置为0. if(0)if(false)相同,因此它不会通过。尝试使用:

if(isset($_POST['remove']))

这将导致代码仍然只能输入有效的提交,但它也允许密钥从0开始,而不需要根据需要添加/减去1。

答案 1 :(得分:1)

如果您按类型进行比较,则可以使用0:if($_POST['remove'] !== false)