删除按钮无法正常工作

时间:2014-11-16 21:23:22

标签: php mysqli

我创建了一个直接提交到数据库示例的数据库示例,其中包含名为validation的数据库中的表。在提交表单后,我检索从数据库提交的数据。我从数据库中检索数据到我创建的页面并将其命名为Receive.php没有任何问题。我创建了一个 Do While Loop ,这样每行数据都会有一个删除按钮和一个编辑按钮。我面临的问题是我的删除按钮似乎没有运行,我也想只使用PhP使其工作,因此不会或应该使用JavaScript或jquery等。我的代码如下:

<?php 
Include sql.php //connecting to Database
$query = "SELECT * FROM validation";
mysqli_query ($con , $query);
$result = mysqli_query ($con , $query);
$rows = mysqli_fetch_assoc ($result);
$totals = mysqli_num_rows ($result);

?>

<?php
if (isset($_GET['remove'])){
$id = $_POST['id'];
Include 'Sql.php';
$query1 = "DELETE FROM Validation  WHERE ID = '$id' LIMIT 1";
$results = mysqli_query ($con , $query);
}
?>
<?php 
$i = "";
 do{$i=$i+1; ?>
<tr> 
   <td><?php echo $i; ?>.</td>

   <td><?php echo $rows ['Name']; ?>.</td>
    <td><?php echo $rows ['Email']; ?>.</td>
    <td><?php echo $rows ['Website']; ?>.</td>
   <td><?php echo $rows ['Comment']; ?>.</td> 
    <td><?php echo $rows ['Time']; ?>.</td>
<td><input type="submit" name="remove" value"Delete"/>
<?php } while ( $rows = mysqli_fetch_assoc($result)) ?>

我还创建了一个隐藏的输入类型,它将ID提交或发布到数据库中,该数据库与数据库的ID相对应。 任何帮助都将非常重要。 将它包含的完整代码发布到第一页是*** index.php * ,这是主表单的位置,另一个是 receive.php 因此,在提交到数据库之后,此页面将从最终用户的数据库中检索数据。**

的index.php

<?php  



if (isset($_POST["submit"])){ 
 $id = $_POST['id']; 
$name = $_POST["name"]; 
$email = $_POST["email"];
$website = $_POST["website"];
$comment = $_POST["comment"];
$gender = $_POST["gender"];


  $con = mysqli_connect ("localhost", "rupert", "" , "example") or die ("Database connect error");
  mysqli_select_db($con, "example") or die ("error connecting to database");



     if (!empty($_POST["name"])){
         $query = "INSERT INTO validation (ID,Name, Email, Website, Comment)
                   VALUES(NULL,'$name' , '$email' , '$website'  , '$comment')";
                   mysqli_query($con, $query) ;
     } else{
         echo " error inserting data";
     }


}
$namErr = $emailErr = $websiteErr = $commentErr = $genderErr ="";
if($_SERVER["REQUEST_METHOD"] =="POST") {
    if(empty($_POST["name"])){
    $namErr = "Name is Required";
    }else{
        $name = test_input( $_POST["name"]); 
    }
    if(empty($_POST["email"])){
    $emailErr = "Email is Required";
    }else{
         $email = test_input($_POST["email"]); 
    }
    if(empty($_POST["website"])){
    $websiteErr = "Website is Required";
    }else{
         $website = test_input($_POST["website"]);
    }
    if(empty($_POST["comment"])){
    $commentErr = "Comment is Required";
    }else{
        $comment = test_input($_POST["comment"]);
    }
    if(empty($_POST["gender"])){
    $genderErr = "Gender is Required";
    }else{
       $gender = test_input($_POST["gender"]); 
    }
}
    function test_input($data) {

    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data); 
    return $data;
    }  


    ?>

 <div id="contain">   
<form  method="post" action="<?php echo htmlentities ($_SERVER["PHP_SELF"]);?>" > 
        <input type="hidden" name="id" id="id" />
 NAME : <input type="text" name="name" id="name"> 
 <span class="error">* <?php echo $namErr ;?></span>
 <br><br> 
 EMAIL : <input type="text" name="email" id="email" >
 <span class="error">* <?php echo $emailErr ;?></span>
 <br><br>
 WEBSITE : <input type="text" name="website" id="website"> 
 <span class="error"> <?php echo $websiteErr ;?></span>
 <br><br>
 COMMENT : <textarea name="comment" id="comment" rows="5" cols="40"></textarea> 
 <span class="error"> <?php echo $websiteErr ;?></span> 
 <br><br> 
 GENDER : 
    <select name="gender" id="gender"> 
    <option selected>Please Select</option> 
    <option value="M">Male</option>
    <option value="F">Female</option>
    </select>

 <span class="error">* <?php echo $genderErr ;?></span>
 <br><br>
 <input type="submit" name="submit" value="submit" /> 
 <input type="reset" name="reset" value="reset" />

</form>


</div>

RECEIVE.PHP

<?php 

     include 'sql.php'; 
     $query = "SELECT * FROM validation";
    mysqli_query($con , $query);
  $result = mysqli_query($con , $query);
  $rows = mysqli_fetch_assoc($result); 
  $tottals = mysqli_num_rows($result);



     if (isset($_POST['del'])){ 

        $id = $rows ['ID'];
        $query1 = "DELETE FROM validation WHERE ID = '$id' "; 
        $results = mysqli_query($con , $query1); 
        }
       ?>





 <div id="css">
<form >
 <table width="80%" border="0" cellpadding="2" cellspacing="2" > 
  <caption><h2>Personal Details of Customers</h2></caption> 
  <tr class="white"> 
   <td bgcolor="#330033">&nbsp;  </td> 
   <td bgcolor="#330033"> Full Name </td>
   <td bgcolor="#330033"> Email Address </td>
   <td bgcolor="#330033"> Website </td>
   <td bgcolor="#330033"> Comment </td> 
   <td bgcolor="#330033"> Time </td>   


   </tr>


  <?php 
  $i=""; 
   do{$i=$i+1;?>

    <tr> 
    <td bgcolor="#FFFFCC"><?php echo $i;?>.</td> 
    <td bgcolor="#FFFFCC"><?php echo $rows ['Name']; ?></td> 
    <td bgcolor="#FFFFCC"><?php echo $rows ['Email'];?></td>
    <td bgcolor="#FFFFCC"><?php echo $rows ['Website'];?></td> 
    <td bgcolor="#FFFFCC"><?php echo $rows ['Comment'];?></td> 
    <td bgcolor="#FFFFCC"><?php echo $rows ['Time'];?></td>  

     <td>&nbsp; </td>
     <td> <input type="submit" name="del" value="Delete" /> &nbsp; <input type="button" name="edit" value="Edit"  /> </td>
    </tr>

   <?php }while ($rows= mysqli_fetch_assoc($result)) ?>  









 </table>
 </form>
</div>

1 个答案:

答案 0 :(得分:0)

我只能假设您已发布部分代码,因为您的提交输入代码周围没有tableform标记。

假设您有表单标记,请检查您是否已将form action属性实际设置为get。实际意味着通过GET标题发送您的提交数据将是一件非常糟糕的事情。

如果您忘记将form标记放入,那么这就是原因。

更新

您正试图从不存在的GET超级全局中提取。

if(isset($_POST['remove']))

基于整个文件的更新答案

好的,还有一些事情(我已经在代码中添加了带有项目符号的评论,以帮助您了解出错的地方)

  1. 由于您已经运行了查询以从页面顶部的数据库中获取记录,因此您的循环中不需要$ i ++。您可以依靠mysqli_fetch_assoc为您完成工作。

  2. 您实际上并没有通过表单将任何数据发送到PHP脚本而不是您的登录按钮。我在这里所做的只是使用一个单选按钮,可以选择该单选按钮通知你的脚本你正在谈论的是哪条记录。因为它使用数据库表的实际id是准确的。

  3. 我已经清理了进入查询的$ _POST数据。有更好的方法可以做到这一点,但它会在你现在所做的范围内做。

  4. 我也整理了你的代码。确保在工作时始终正确缩进。这样可以更容易地进行调试。学习如何做到这一点是一个优先事项。

  5. 我也使用了魔法引号&#39;例如。 &#34;回应表。这样你就可以参考变量名而不必停止。启动你的html。它只是回显了整个批次,并在需要的地方插入变量名称。

  6. 我没有测试过这个,所以我可能有一个我无法看到的拼写错误。它已经很晚了,我今天一直盯着电脑看了10个小时,但看起来很接近。

    代码

    <?php 
    
    include 'sql.php'; 
    $query = "SELECT * FROM validation";
    mysqli_query($con , $query);
    $result = mysqli_query($con , $query);
    $tottals = mysqli_num_rows($result);
    
    if (isset($_POST['del'])){ 
        $id = mysqli_real_escape_string($_POST['ID']);  // COMMENT number 2 ( I know theyre out of order but it was easier to explain this way around )
        $query1 = "DELETE FROM validation WHERE ID = '$id' "; 
        $results = mysqli_query($con , $query1); 
    }
    ?>
    
    <div id="css">
        <form >
            <table width="80%" border="0" cellpadding="2" cellspacing="2" > 
                <caption><h2>Personal Details of Customers</h2></caption> 
                <tr class="white"> 
                    <td bgcolor="#330033">&nbsp;  </td> 
                    <td bgcolor="#330033"> Full Name </td>
                    <td bgcolor="#330033"> Email Address </td>
                    <td bgcolor="#330033"> Website </td>
                    <td bgcolor="#330033"> Comment </td> 
                    <td bgcolor="#330033"> Time </td>   
                </tr>
                <?php 
                while ($rows= mysqli_fetch_assoc($result)) // COMMENT number 1
                {
                    // COMMENT 5 - start of insert table row
                    echo "
                    <tr> 
                        <td bgcolor='#FFFFCC'><input type='radio' name='ID' value='$rows[ID]'/></td>   <!-- COMMENT number 3 -->
                        <td bgcolor='#FFFFCC'>$rows[ID]</td> 
                        <td bgcolor='#FFFFCC'>$rows[Name]</td> 
                        <td bgcolor='#FFFFCC'>$rows[Email]</td>
                        <td bgcolor='#FFFFCC'>$rows[Website]</td> 
                        <td bgcolor='#FFFFCC'>$rows[Comment]</td> 
                        <td bgcolor='#FFFFCC'>$rows[Time]</td>  
                        <td>&nbsp; </td>
                        <td> <input type='submit' name='del' value='Delete' /> &nbsp; <input type='button' name='edit' value='Edit'  /> </td>
                    </tr>
    ````            "; // end of insert table row
                }?>  
            </table>
        </form>
    </div>