2017-02-12 51 views
0

我想要做的是有一个PHP页面显示MySQL数据库的内容和每行显示,它给了我一个删除按钮,因此我可以删除单个行。我有代码类的工作。该代码删除了代码行,但不是我选择的行,而是删除最后一行,而不是我告诉它删除的行。使用PHP按钮删除单独的行/行

下面是一个截图,我知道它看起来不太漂亮,我会在代码工作后清理它。 enter image description here

HTML:

<?php 
     // Delete php code 
     if(isset($_POST['delete_series'])) 
     { 
      // here comes your delete query: use $_POST['deleteItem'] as your id 
      $delete = $_POST['delete_series']; 
      $delete_sql = "DELETE FROM `Dropdown_Series` where `id` = '$delete'"; 

      if(mysql_query($delete_sql, $conn)) 
      { 
       echo "Row Deleted </br>"; 
       echo "$delete"; 

      }; 
     } 

     //Insert Code 
     if(isset($_POST['add_series'])) 
     {   
      $insert_sql = "INSERT INTO dropdown_series (series) VALUES ('$_POST[add_series]')"; 

      if(!mysql_query($insert_sql, $conn)) 
       { 
        die ('Error: ' . mysql_error()); 
       } 

      echo "Series Added <br><br>"; 

     } 

    ?> 
    <br /> 
    <h1>Add New Series Title</h1> 

    <h3>Add New: </h3><br /> 

    <form name = action="add_series.php" method="POST"> 

    <input type = "text" name = "add_series" required/><br /><br /> 
    <input type ="submit" name="submit" value="Add"> 

    </form> 

    <h3>Current Series: </h3><br /> 


    <?php 
      //Delete button on each result of the rows 
      $query = mysql_query("SELECT id, series FROM Dropdown_Series");  // Run your query 

      // Loop through the query results, outputing the options one by one 
      echo "<form action='' method='POST'>"; 
      while ($row = mysql_fetch_array($query)) 
      { 

       echo $row['series'] . " "; 
       echo $row['id']; 
       echo "<input type='hidden' name='delete_series' value=' " . $row['id'] . "' />"; 
       echo "<input type='submit' name='submit' value='Delete'>"; 
       //echo $row['series'] . " ". $row['id'] . "<input type='submit' value='delete'>"; 
       echo "<br />"; 

      } 

     echo "</form>"; 
    ?> 
+1

的mysql =坏,unsanitized用户输入=疯狂的更多的了解。如果其中任何一个都不清楚,请稍做研究。 – nogad

回答

1

你的循环将导致多个delete_series输入 - 相同的形式之内。

你可以为每个选项创建分隔符的形式:

while ($row = mysql_fetch_array($query)) 
{ 
    echo "<form action='' method='POST'>"; 
    // ... 
    echo "<input type='hidden' name='delete_series' value=' " . $row['id'] . "' />"; 
    echo "<input type='submit' name='submit' value='Delete'>"; 
    // ... 
    echo "</form>"; 
} 
+0

,真棒它看起来像它的工作,还有一个问题,我怎么能得到的结果和按钮删除在同一行,而不是在单独的行? – Vlad

+0

这与您的风格有关。我想你配置这些在您的CSS某处'display:block',但你希望它们是'display:inline'。 [链接](http://www.w3schools.com/cssref/pr_class_display.asp) – hartwecm

+0

我检查,我没有看到一个显示:块会是问题,我可以添加一个标签,如div标签,并设置为那些结果只显示为内联?如果可以,请帮助我与CSS?我仍然与新的CSS – Vlad

0

我相信,一个非常快速的答案是

 while ($row = mysql_fetch_array($query)) 
     { 
      echo "<form action='' method='POST'>"; 
      echo $row['series'] . " "; 
      echo $row['id']; 
      echo "<input type='hidden' name='delete_series' value=' " . $row['id'] . "' />"; 
      echo "<input type='submit' name='submit' value='Delete'>"; 
      //echo $row['series'] . " ". $row['id'] . "<input type='submit' value='delete'>"; 
      echo "<br />"; 
      echo "</form>"; 

     } 

如果我是你,我宁愿注入一些JavaScript的逻辑,并使用ajax调用执行删除请求。

你可以参考本教程中得到什么我指的https://scotch.io/tutorials/submitting-ajax-forms-with-jquery