0

我不得不捏造一段代码才能让它为我工作。我只是想知道我是否遗漏了一些明显的东西来清理它,或者我的软糖实际上是否是解决这个问题的正确方法。

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

用于生成按钮值的 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,以识别我所追求的实际键。

谢谢你看:)

4

2 回答 2

5

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

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

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

于 2013-05-01T11:39:54.033 回答
1

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

于 2013-05-01T11:40:52.983 回答