将删除按钮添加到PHP结果表

时间:2013-06-17 10:00:27

标签: php mysql html-table sql-delete

我已将MySQL表的结果输出到HTML表。在最后一列中,我想添加一个删除选项,该选项调用另一个表单并删除用户。我似乎无法让它工作。

这是我的结果页面代码:

<?php

    $contacts = mysql_query("
        SELECT * FROM contacts ORDER BY ID ASC") or die( mysql_error() );

    // If results
    if( mysql_num_rows( $contacts ) > 0 )
    ?>

    <table id="contact-list">
        <thead>
            <tr>
                <th>Name</th>
                <th>Email</th>
                <th>Telephone</th>
                <th>Address</th>
  <th>Delete</th>
            </tr>
        </thead>
        <tbody>

        <?php while( $contact = mysql_fetch_array( $contacts ) ) : ?>



            <tr>
                <td class="contact-name"><?php echo $contact['name']; ?></td>
                <td class="contact-email"><?php echo $contact['email']; ?></td>
                <td class="contact-telephone"><?php echo $contact['telephone']; ?></td>
                <td class="contact-address"><?php echo $contact['address']; ?></td>
                <td class="contact-delete"><form action='delete.php' method="post">
<input type="hidden" name="name" value="">
<input type="submit" name="submit" value="Delete">
</form></td>                
            </tr>

        <?php endwhile; ?>

        </tbody>
    </table>

,这是我的delete.php脚本

<?php

//Define the query
$query = "DELETE FROM contacts WHERE name={$_POST['name']} LIMIT 1";

//sends the query to delete the entry
mysql_query ($query);

if (mysql_affected_rows() == 1) { 
//if it updated
?>

            <strong>Contact Has Been Deleted</strong><br /><br />

<?php
 } else { 
//if it failed
?>

            <strong>Deletion Failed</strong><br /><br />


<?php
} 
?>

很确定我只是遗漏了一些东西,但我无法弄清楚那是什么:(

6 个答案:

答案 0 :(得分:2)

您必须在删除链接中传递变量。您必须在隐藏字段中传递<?php echo $contact['name']; ?>名称值,或在URL

中传递此值

替换

<td class="contact-delete">
      <form action='delete.php' method="post">
      <input type="hidden" name="name" value="">
      <input type="submit" name="submit" value="Delete">
      </form>
</td>

。通过

<td class="contact-delete">
    <form action='delete.php?name="<?php echo $contact['name']; ?>"' method="post">
        <input type="hidden" name="name" value="<?php echo $contact['name']; ?>">
        <input type="submit" name="submit" value="Delete">
    </form>
</td>

答案 1 :(得分:1)

使用javascript

<input name="Submit2" type="button" class="button" onclick="javascript:location.href='delete.php?id=<?php echo $your_id;?>';" value="&laquo; Back" />

和delet.php

$id=$_GET['id'];

并将$ id放入sql语句中。

答案 2 :(得分:1)

<input type="hidden" name="name" value="">

您在删除文件中缺少可被此行拾取的值。

$query = "DELETE FROM contacts WHERE name={$_POST['name']} LIMIT 1";

现在它没有收到任何东西,这就是为什么它不起作用。

因此,为它添加一个值,它将起作用。例如:

<input type="hidden" name="name" value="<?php echo $contact['name']; ?>">

答案 3 :(得分:0)

您缺少在此行中传递名称:

<input type="hidden" name="name" value="">

您需要在<?php echo $contact['name']; ?>属性中添加一些内容(value

顺便说一句,请勿使用已弃用的mysql_*函数,而是使用PDOmysqli_*

答案 4 :(得分:0)

首先,您无法以这种方式编写代码,代码无法防范SQL injection

1)尝试使用主ID而不是使用名称(如果2个人的姓名相同,会发生什么?)。

因此,您可以创建一个隐藏字段来了解您正在处理的人。

<input type="hidden" name="contact_id" value="<?php $contact['contact_id']; ?>">

2)清理变量以避免攻击:

<?php $contact_id = isset($_POST['contact_id'])?intval($_POST['contact_id']):0;

// proceed with the query
if($contact_id>0) { $query = "DELETE FROM contacts WHERE contact_id = '$contact_id'";

}

// redirect to the main table with header("location: main.php");

?>

答案 5 :(得分:-1)

这是一个php删除流程脚本,您可以在删除按钮中链接此代码

<?php
$link=mysql_connect("localhost","root","");

mysql_select_db("photo",$link);

if(isset($_GET["id"])

    $photoid=$_GET['id'];
$sql="delete from photos where photoid=".$_GET['id'];
$result=mysql_query($sql,$link);
header("location:home.php?ok");
?>