php - 删除单页表单上的单个记录提交

时间:2012-04-20 15:09:38

标签: php forms

我对PHP很新,所以如果这个问题令人讨厌,请原谅我...

我有一个页面列出了来自数据库的近150条记录。我希望用户一次只能删除一条记录(没有复选框)。我希望每个名称旁边都有一个删除按钮,当用户点击它时,页面将刷新,上面有更新的列表和成功消息:“%Name%已成功删除”。 (其中%Name%是他们删除的实际名称)

我的问题是:我可以使用表单吗?如果是这样,我将什么表单元素分配给名称和删除按钮?

或者,我是否需要将删除按钮设置为锚元素,并将URL设置为可以处理删除请求的页面,然后重新定向用户(我担心的是我可以发送“成功“消息回来,我知道是通过一个Session变量,那可以吗?”

或者,还有其他一些我不知道的方法吗?

非常感谢任何反馈。 感谢

5 个答案:

答案 0 :(得分:1)

为什么它必须是一个/一个形式?您可以使用链接删除单个条目,例如href =“#?job = delete& name = name而不是提交按钮。另一种解决方案是为每个条目创建一个表单。

答案 1 :(得分:1)

PHP会话是服务器端数据,保存在用户身上并通过cookie跟踪。除非您专门发送数据,否则数据不会发送给用户。

http://www.php.net/manual/en/session.examples.basic.php

您可以为页面上的每条记录创建单独的表单,也可以通过javascript单击其中一条记录并提交来填充表单。您可以重新加载页面并告诉用户它们是否成功,或者通过ajax发送它并更新页面的部分。

http://www.w3schools.com/ajax/ajax_intro.asp

你可以使用直接的javascript或者像jquery或moo工具这样的js开发的东西来简化事情。以下是jquery中ajax函数的一些数据:

http://api.jquery.com/jQuery.ajax/

至于名称和删除。删除可以是输入,按钮,图像,等等。名称可以是已删除记录的用户ID,该用户ID将发回该名称或仅从表单的一部分中取出以向用户显示哪条记录已被删除。

有很多方法可以做到这一点。

答案 2 :(得分:1)

你可以这样做......这里的关键概念是在数据库中有一个像id一样的唯一字段,例如你在数据库表中有id,name,username和password字段,所以看看下面的两种方法

<强> 1。使用超链接

<?php
mysql_connect("fostname","username","password");
mysql_select_db("database_name");
$q = mysql_query("SELECT * FROM tbl_name");
if(mysql_num_rows($q)>0)
{
echo"<table>";
echo "<tr><td>name</td><td>action</td></tr>";
while($name = mysql_fetch_assoc($q))
{
?>

<tr><td><?php echo $name['name'];?></td><td><a href="delete.php?id=<?php echo $name['id'];?>">Delete</a></td></tr>
<?php
}

echo "</table>";
}
?>

这是你在列表页面中所做的....现在看看delete.php,它需要在超链接中定义的路径上

delete.php

<?php
mysql_connect("fostname","username","password");
mysql_select_db("database_name");
$id = $_GET['id'];
$q = mysql_query("delete from tbl_name where id = '$id'");
header("Location: list.php");
?>

<强> 2。使用表格

<?php
    mysql_connect("fostname","username","password");
    mysql_select_db("database_name");
    $q = mysql_query("SELECT * FROM tbl_name");
    if(mysql_num_rows($q)>0)
    {
    echo"<table>";
    echo "<tr><td>name</td><td>action</td></tr>";
    while($name = mysql_fetch_assoc($q))
    {
    ?>

    <tr><td><?php echo $name['name'];?></td><td><form action='delete.php' method='post'> <input type='hidden' value='<?php echo $name["id"];?>'></form></td></tr>
    <?php
    }

    echo "</table>";
    }
    ?>

delete.php

<?php
    mysql_connect("fostname","username","password");
    mysql_select_db("database_name");
    $id = $_POSTs['id'];
    $q = mysql_query("delete from tbl_name where id = '$id'");
    header("Location: list.php");
    ?>

(注意:list.php是列出所有信息的页面)

答案 3 :(得分:0)

您可以使用包含数据的页面(例如A)。

当你拥有它时,你可以在每个元素的按钮上“锚定”一个链接(指定一个用于识别它的costum id)。 单击按钮后,在内置数组$_GET中添加已删除的记录的ID(显示,您必须将其擦除)。 现在您可以重定向到同一页面(A)。

在此页面(与初始数据相同的页面)上,检查您添加的$_GET字段。 如果是这意味着您在删除后来到那里并且您可以显示该消息。 否则是你第一次进入这里,所以你不能什么都不显示。

答案 4 :(得分:0)

见这里:http://www.javascript-coder.com/javascript-form/javascript-form-submit.phtml

使用隐藏字段和没有提交按钮在某处创建一个表单,当表单提交时,删除具有给定值的行。然后当回显所有行时,在每个旁边回显一个提交按钮,点击“submitForm(x)”,其中“X”是一个值,可以确定在db中删除哪一行。