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