删除查询无法删除库存

时间:2017-08-23 10:27:54

标签: php html

我正在实施服装购物网站,其中管理员管理库存,例如添加,更新,删除库存。我的删除查询有问题。库存显示在表格中,每行都有自己的删除按钮。当我点击删除按钮时,它总是占用最后一行ID并删除它而不是我想要的那一行。查询始终采用最后一行ID。 代码:

  <form action="" method="post" enctype="multipart/form-data" name="deleting" >
            <table align="center" border="0" id="myTable" class="table table-striped table-bordered table-list">
    <tr>
      <th>Product Code</th>
      <th>Brand</th>
      <th>Price</th>
      <th>Gender</th>
      <th>Category</th>
      <th>Material</th>
      <th>Size</th>
      <th>Description</th>
      <th>Quantity</th>
      <th>Delete Stock</th>
      </tr> 

<?php
$sql = "SELECT * FROM add_stock  ORDER BY id DESC"; 
                $rs_result = mysqli_query ($sql);
                   while ($result=mysqli_fetch_array($rs_result) )
            {
              ?>
              <tr>

                <td><?php echo $result['id'];?></td>
                <td><?php echo $result['brand_name'];?></td>
                <td><?php echo $result['price'];?></td>
                <td><?php echo $result['gender_name'];?></td>
                <td><?php echo $result['category_name'];?></td>
                <td><?php echo $result['material_name'];?></td>
                <td><?php echo $result['size_name']; ?></td>
                <td><?php echo $result['dress_description'];?></td>
                <td><?php echo $result['dress_quantity'];?></td>
               <td><input type="hidden" name="ID" value="<?php echo $result['id']; ?>"><input type="submit" name="delete" value="Delete" ></td>

              </tr>
              <?php
            }      
            ?>
</table>
</form>

  <?php 

if (isset($_POST['delete'])) {
$id=$_POST['ID']; //problem is here: it always takes last row id     
$link=mysqli_connect("localhost","root","") or die("Cannot Connect to the database!");
mysqli_select_db("login",$link) or die ("Cannot select the database!");
$query="DELETE FROM add_stock WHERE id='".$id."'";

$result=mysqli_query($query,$link) or die(mysqli_error($link));
if($result)
{ 
 echo '<script>confirm("Are you sure want to delete this record?")</script>';
 echo '<script>alert("Record ".$id." removed successfully!")</script>';
}
else
{
  die ("An unexpected error occured while <b>deleting</b> the record, Please try again!");

              }
              }
?>

2 个答案:

答案 0 :(得分:2)

我建议不要仅仅为了删除目的而使用<form>。您可以使用<a>标记将其重定向到其他页面以进行删除。

这是我的代码。

<强>的index.php

<table align="center" border="0" id="myTable" class="table table-striped table-bordered table-list">
  <tr>
    <th>Product Code</th>
    <th>Brand</th>
    <th>Price</th>
    <th>Gender</th>
    <th>Category</th>
    <th>Material</th>
    <th>Size</th>
    <th>Description</th>
    <th>Quantity</th>
    <th>Delete Stock</th>
  </tr> 
  <?php
  $sql = "SELECT * FROM add_stock  ORDER BY id DESC";
  $rs_result = mysqli_query($sql);
  while ($result = mysqli_fetch_array($rs_result)) {?>
    <tr>
      <td><?php echo $result['id']; ?></td>
      <td><?php echo $result['brand_name']; ?></td>
      <td><?php echo $result['price']; ?></td>
      <td><?php echo $result['gender_name']; ?></td>
      <td><?php echo $result['category_name']; ?></td>
      <td><?php echo $result['material_name']; ?></td>
      <td><?php echo $result['size_name']; ?></td>
      <td><?php echo $result['dress_description']; ?></td>
      <td><?php echo $result['dress_quantity']; ?></td>
      <td>
        <a href="deleteStock.php?id=<?php echo $result['id'];?>">
          <input type="button" value="Delete" >
        </a>
      </td>
    </tr>
    <?php }?>
</table>

<?php
if(isset($_GET['delete'])){
  if($_GET['delete'] == "success"){
    echo '<script>alert("Record removed successfully!")</script>';
  }

  if($_GET['delete'] == "fail"){
    echo '<script>alert("An unexpected error occured while <b>deleting</b> the record, Please try again!")</script>';
  }
}

?>
<script>
$(document).on('click', "#myTable a", function(e) {
  if(confirm("Are you sure want to delete this record?")) {
    return true;
  } else {
    return false;
  }
});
</script>

<强> deleteStock.php

<?php
if (isset($_GET['id'])) {
  $id = $_GET['id'];  
  $link = mysqli_connect("localhost", "root", "") or die("Cannot Connect to the database!");
  mysqli_select_db("login", $link) or die("Cannot select the database!");
  $query = "DELETE FROM add_stock WHERE id = $id";

  $result = mysqli_query($query, $link) or die(mysqli_error($link));

  if($result){
    header("location:index.php?delete=success");
  } else {
    header("location:index.php?delete=fail");
  }
}?>

[重要提示:而且,您仍然没有为数据库连接创建单独的文件,我已在1周前回答您的问题modal popup keep populating only first item data on all item buttons时提到过该文件。这意味着,你不能从错误中吸取教训,或者你不需要任何建议。]

答案 1 :(得分:1)

您的脚本在帖子的最后一行总是因为您拥有所有数据的单一表单,而您的上一个值将覆盖所有以前的数据。它的Intead从表格的外侧删除表格添加到td,你指定了隐藏字段和删除按钮。如下所示:

HttpURLConnection#getRequestProperties

只有在您必须上传文件

时,才从表单中删除<table align="center" border="0" id="myTable" class="table table-striped table-bordered table-list"> <tr> <th>Product Code</th> <th>Brand</th> <th>Price</th> <th>Gender</th> <th>Category</th> <th>Material</th> <th>Size</th> <th>Description</th> <th>Quantity</th> <th>Delete Stock</th> </tr> <?php $sql = "SELECT * FROM add_stock ORDER BY id DESC"; $rs_result = mysqli_query ($sql); while ($result=mysqli_fetch_array($rs_result) ) { ?> <tr> <td><?php echo $result['id'];?></td> <td><?php echo $result['brand_name'];?></td> <td><?php echo $result['price'];?></td> <td><?php echo $result['gender_name'];?></td> <td><?php echo $result['category_name'];?></td> <td><?php echo $result['material_name'];?></td> <td><?php echo $result['size_name']; ?></td> <td><?php echo $result['dress_description'];?></td> <td><?php echo $result['dress_quantity'];?></td> <td><form action="" method="post" name="deleting" ><input type="hidden" name="ID" value="<?php echo $result['id']; ?>"><input type="submit" name="delete" value="Delete" ></form></td> </tr> <?php } ?> </table>