0

您好,我有以下代码显示数据库结果,在表的第 3 个 TD 中我想插入删除按钮,该按钮将删除按钮旁边的数据的表记录,第 3 个 TD 中的代码应该是什么删除按钮的标签?

<?php
$con=mysqli_connect("localhost","table","password","database");
if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM recetas_galletas");
echo "<table border='1'>
<tr>
    <th>Title</th>
    <th>Description</th>
</tr>";

while($row = mysqli_fetch_array($result))
{
    echo "<tr>";
    echo "<td>" . $row['title'] . "</td>";
    echo "<td>" . $row['description'] . "</td>";
    echo "<td>" . DELETE BUTTON "</td>";
    echo "</tr>";
}
echo "</table>";
mysqli_close($con);
?>
4

3 回答 3

1

You can make a link that passes the id to another php page which preforms the delete. So the link will be like :

echo "<td><a href='http://www.site.com/delete.php?id=" . $row['id'] . "'></td>";

then in your delete.php :

if (is_int($_GET["id"]) {
    $query = "DELETE FROM recetas_galletas WHERE id = " . $_GET["id"];
    $result = mysqli_query($con, $query);
    // Check the result and post confirm message
}

This is a very simple way of doing it but it might not be the best for you .If you didn't verify the user of this page, any one could manipulate this code easily and delete any row of the table.

Other ways could be navigating to the same page and do the same process in the same page or you could use ajax but this is another issue.

Hope this helps and excuse my English.

于 2013-09-24T18:34:18.290 回答
1

有几种方法可以存档,首先也是最重要的是,您需要在数据库表上设置一个字段,您可以在其中标识要删除的记录,例如 ID 形式的主键或唯一键。

您可以通过创建带有文本到delete.php页面的链接来做到这一点,或者您可以使用 JQuery 和 AJAX,或者您可以使用内部表单。

您还希望只有授权用户才能使用这些页面,因此您还需要一个带有会话的登录页面。

您可以在此处查看带有会话的登录页面示例。

最简单的是删除页面的链接,请参见此处的示例:

<?php
$con = mysqli_connect("localhost","table","password","database");
// Check connection
if (mysqli_connect_errno())
{
    die("Failed to connect to MySQL: " . mysqli_connect_error());
}

if (!$result = mysqli_query($con,"SELECT * FROM recetas_galletas"))
{
    die("Error: " . mysqli_error($con));
}
?>
<table border='1'>
<tr>
<th>Title</th>
<th>Description</th>
</tr>
<?php
while($row = mysqli_fetch_array($result))
{
?>
<tr>
<td><?php echo $row['title']; ?></td>
<td><?php echo $row['description']; ?></td>
<td><a href="delete.php?id=<?php echo $row['id']; ?>">Delete</a></td>
</tr>
<?php
}
mysqli_close($con);
?>
</table>

然后在您的删除页面上,您将拥有如下内容:

<?php
// Your database info
$db_host = '';
$db_user = '';
$db_pass = '';
$db_name = '';

if (!isset($_GET['id']))
{
    echo 'No ID was given...';
    exit;
}

$con = new mysqli($db_host, $db_user, $db_pass, $db_name);
if ($con->connect_error)
{
    die('Connect Error (' . $con->connect_errno . ') ' . $con->connect_error);
}

$sql = "DELETE FROM recetas_galletas WHERE id = ?";
if (!$result = $con->prepare($sql))
{
    die('Query failed: (' . $con->errno . ') ' . $con->error);
}

if (!$result->bind_param('i', $_GET['id']))
{
    die('Binding parameters failed: (' . $result->errno . ') ' . $result->error);
}

if (!$result->execute())
{
    die('Execute failed: (' . $result->errno . ') ' . $result->error);
}

if ($result->affected_rows > 0)
{
    echo "The ID was deleted with success.";
}
else
{
    echo "Couldn't delete the ID.";
}
$result->close();
$con->close();
于 2013-09-24T18:25:52.007 回答
1
echo "
<form action='user.php' method='post'>
        <table cellpadding='2' cellspacing='2' border='2' >
        <tr>
            <td>Id</td>
            <td>Name</td>
            <td>Gender</td>
            <td>Action</td>
        </tr>
     ";

$select = "select * from user";
$result = mysqli_query($con,$select);
while($r = mysqli_fetch_row($result))
{
    echo "
    <tr>
        <td>$r[0]</td>
        <td>$r[1]</td>
        <td>$r[2]</td>
        <td><input type='submit' value='Delete  $r[0]' style='width:53px;' name='submit' ></td>
    </tr>
    ";
}
echo "
        </table>
        </form>
     ";


if ($_POST['submit'])
{
    $id = $_POST['submit'];
    $id = end(explode(" ",$id));

    $delete = "delete from user where id=$id";
    mysqli_query($con,$delete);
    header("Location:user.php");
}
?>
于 2017-05-31T14:47:54.153 回答