0

我有一个 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

4 回答 4

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)
}
于 2013-09-27T09:54:30.503 回答
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());

这可以帮助你吗

于 2013-09-27T09:51:35.423 回答
0

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

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

于 2013-09-27T09:50:05.190 回答
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删除行的逻辑。通过 ajax 将id作为参数传递给此。

于 2013-09-27T10:03:53.577 回答