如何从PHP中的很多表中删除1个选定的行(来自mysql)?

时间:2013-09-27 09:37:22

标签: php mysql

我有一个PHP函数,从MYSQL写出我的表。我做了一个按钮,删除选中的行(名为torles)。

如何使用我的'torles'按钮删除我按下它的行?

function munkalapok(){
  kapcsolat();  //connect to mysql, and write out all rows

  $sql="SELECT * FROM munkalap ORDER BY id DESC";
  $vissza=mysql_query($sql);
  mysql_close(kapcsolat()); //close mysql

  print "<div class='datagrid'><center>";
  print "<table border='1' align='center'>";
  print "<thead><th>Módosítás</th><th>Munkalapszám</th></thead>";

  $i='1'; //for count rows
  while ($sor = mysql_fetch_array($vissza)) {
    print "<tr><tbody>";
    print "<form method='POST'>".
          "<input type='submit' value='$i. Törlés' name='torles'>".
          "</form>" . "</td>";
    //Create the button
    if(isset($_POST['torles'])){
      kapcsolat(); //open mysql
      $parancs="DELETE FROM munkalap WHERE munkalapszam = '$munka'";                 
      mysql_query ($parancs);
      mysql_close (kapcsolat());
      header("Location: ./Munkalapok.php");
    }
    print "<td>" . $sor['munkalapszam'] . "</td>";
    print "</tbody></tr>";
    $i++;
  }
  print "</table>";
  print "</center></div>";
}

4 个答案:

答案 0 :(得分:1)

什么是$munka,你是怎么得到的......可能应该是id ..

因此,您可以在表单中使用隐藏字段,并将其值作为行ID(无论您拥有什么)

试试:

print "<tr><tbody>";

print "<form method='POST'><input type='hidden' name='id' value='$sor[munkalapszam]'><input type='submit' value='$i. Törlés' name='torles'></form>" . "</td>";
    //Create the button
if(isset($_POST['torles'])){

kapcsolat(); //open mysql
$munka=(int) $_POST['id'];  //i did this for id
$parancs="DELETE FROM munkalap WHERE munkalapszam = '$munka'";                 
mysql_query ($parancs);
mysql_close (kapcsolat());

这可以帮到你

答案 1 :(得分:1)

在您的代码中,您执行以下操作:

connect to SQL, get rows and print them
while printing
  show a button
  if this button is pressed, delete a row and redirect
end while

这是你的第一个错误。 相反,您的代码逻辑应该如下所示:

if there is posted data
  delete the data
connect to SQL, get rows and print

您的主要问题(您要问的问题)是您创建按钮,但无法确定按下按钮的行。
您可以添加另一个隐藏的输入,而不是在按钮的值中添加$ i变量:

print '<input type="hidden" name="row_id" value="'.$i.'"/>';

这样,您就可以找到按下按钮的行:

if (isset($_POST['torles'])) {
  $id = (int) $_POST['row_id'];
  // delete where id = $id (assuming that $i is an id)
}

答案 2 :(得分:0)

您是否使用ID来识别数据库中的记录?您应该使用自动增量功能将ID与每条记录相关联。那将是你的主键。然后使用记录ID来标识表行,并且不要使用该$ i变量。

您应该查看数据库的普通表格。 http://www.1keydata.com/database-normalization/first-normal-form-1nf.php

答案 3 :(得分:0)

我希望你的数据库中的每个元素都有一个id。并且id是主键。 这样说,修改

  

print "<td>" . $sor['munkalapszam'] . "</td>";

print "<td>" . $sor['munkalapszam'] . "<span id='".$sor['id']."' >X</span></td>";

通过这种方式,可以唯一地识别表格中的每一行。 X 是删除符号。

下一步是使用JS处理点击并使用ajax将id发送到服务器以删除该行。

$( "td" ).click(function() {
   //write the ajax code here to send the id to the server.
});

这不是最安全的方法。但是这会给你一个关于如何开始的基本想法。

你可以在这里阅读jQuery ajax:http://api.jquery.com/jQuery.ajax/ jQuery点击事件:http://api.jquery.com/click/

在后端,您需要一个名为delete.php或soemthing的文件。在此文件中使用 id 写入删除行的逻辑。将 id 作为参数通过ajax到此。