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


How can I delete 1 selected row from a lot of tables in PHP (from 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>";
}
什么是

$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());

愿这对你有所帮助

在你的代码中,你做这样的事情:

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)
}

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

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

我希望

你对数据库中的每个元素都有一个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/j查询点击事件:http://api.jquery.com/click/

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