我有一个用于存放购物篮信息的数组:
session_start();
$items = $_SESSION['items'];
$values = $_SESSION['values'];
if (isset($_POST['addtobasket']))
{
$items[] = $_POST['item'];
$values[] = $_POST['value'];
$_SESSION['items'] = $items;
$_SESSION['values'] = $values;
}
print("Added " . $_POST['item'] . " with value of " . $_POST['value'] . "to basket");
?>
在结帐屏幕上,我希望用户能够删除项目:
<?
echo "<table class='basketdisplay'>";
echo "<tr><td>Item</td><td>Price</td></tr>";
foreach($items as $key => $item)
{
echo "<tr>";
echo "<td>" . $item . "</td>";
echo "<td>£" . $values[$key] . "</td>";
echo "<td>" . $key . "</td>";
echo "</tr>";
}
echo "</table>";
?>
那么代替显示该键的最后一列,是某种形式的按钮来删除该键上的项目吗?
有谁知道我会怎么做,我的php不强。 TIA
答案 0 :(得分:2)
您可以使用http://php.net/manual/en/function.unset.php从数组中删除项目。
你必须要编写代码:)
答案 1 :(得分:1)
unset($array[$key]);
答案 2 :(得分:0)
if(isset($_REQUEST['removeitem']))
{
unset($items[$_REQUEST['removeitem']]);
}
其中$ _REQUEST ['removeitem']是您要删除的项目的键。然后让你的href执行<a href="?removeitem=itemkey">remove item</a>
。
答案 3 :(得分:0)
关于删除功能,您可以使用复选框(甚至提交按钮),例如:
echo "<td><input type=checkbox name='remove[$key]' value=1>remove</td>";
(请注意输出中的所有变量($key
)也需要htmlspecialchars()
处理。)
然后,如果再次提交购物篮形式,您只需通过以下方式探测要移除的元素:
foreach ($_REQUEST["remove"] as $key) {
unset($_SESSION["items"][$key]);
}
答案 4 :(得分:0)
首先,改变这一行:
echo "<td>" . $key . "</td>";
到此:
echo "<td><a href='new_php_page.php?key=$key'>Remove Item</td>";
new_php_page.php:
<?php
session_start();
$items = $_SESSION['items'];
// validate session key here - that it is an integer etc.
if (array_key_exists($_POST['key'], $_SESSION['items'])) {
unset($_SESSION['items']);
}
// redirect to cart page again
?>
改进是将链接替换为按钮。然后,您可以考虑使用AJAX将项目移除“幕后”。
答案 5 :(得分:0)
首先,您必须使用预准备语句来阻止SQL注入和过滤目的。使用PDO。
但我不确定,因为您没有为用户删除其项目的任何链接。
首先,您必须为所有项目创建一个唯一ID,以便您轻松删除,例如:
echo '<a href="delate.php?$item_id">Remove</a>'
答案 6 :(得分:0)
将表格作为表格,并将行的最后一个元素设为HTML输入字段:
<FORM target="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<?php
echo "<table class='basketdisplay'>";
echo "<tr><td>Item</td><td>Price</td></tr>";
foreach($items as $key => $item)
{
echo "<tr>";
echo "<td>" . $item . "</td>";
echo "<td>£" . $values[$key] . "</td>";
?>
<TD>
<INPUT type="submit" name="DELETE_<?php echo $key; ?>" value="Delete"/>
</TD>
<?php
echo "</tr>";
}
echo "</table>";
?>
</FORM>
然后在脚本开头使用类似:
<?php
foreach ($_POST as $name=>$value)
{
if (preg_match('/^DELETE_(\d+)$/',$name,$matches)) //Assumes that $key is numeric
{
$keyToDelete=$matches[1];
// Put your delete code in here
}
}
?>
或类似的东西。