我有一个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>";
}
答案 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到此。