mysql の 2 つの異なるテーブルから抽出されたデータを表示するテーブルがあります。テーブルには、各行に削除ボタンがあり、押すと、行を削除する削除クエリを実行し、データベースからすべての関連データを送信します。
ただし、どの削除ボタンをクリックしても、削除されるのは常にテーブルの最後の行であり、削除ボタンがある行ではありません。
私のテーブル:
-------------------------------------------
|Username|Password|Branch Name|Branch Info|
----------------------------------------------------
|Sub1 |Pass1 |branch1 |1st branch |DELETE |
----------------------------------------------------
|Sub2 |Pass2 |branch2 |2nd branch |DELETE |<---this button is pressed
----------------------------------------------------
|Sub3 |Pass3 |branch3 |3rd branch |DELETE |
----------------------------------------------------
|Sub4 |Pass4 |branch4 |4th branch |DELETE |
----------------------------------------------------
|Sub5 |Pass5 |branch5 |5th branch |DELETE |<---this row is deleted.
----------------------------------------------------
私のコード:
<?PHP
session_start();
if(@$_SESSION['Auth']!=="Yes" AND @$_SESSION['Type']!=="Admin")
{
echo"You are not authorised to view this page.Please click <a href='Login.php'>here</a> to login.";
exit();
}
?>
<?PHP
if(@$_POST['deluser']=="Delete")
{
include("cxn.inc");
print_r($_POST);
$id="$_POST[id]";
echo"$id";
if(empty($_POST["id"]))
echo"yep";
$deluser="DELETE FROM SubUsers WHERE SubUsers.id='$id'";
$delquery=mysqli_query($cxn,$deluser) or die (mysqli_error($cxn));
$delsuccess="Deletion successful";
}
>
<html>
<head><link rel="stylesheet" type="text/css" href="style.css" /></head>
<body>
<?PHP
include("cxn.inc");
//include("AdminNav.php");
$viewuser="SELECT SubUsers.Id,Username,Password,Name,Info FROM SubUsers,Branch WHERE SubUsers.id=Branch.id AND SubUsers.Userid='$_SESSION[UserId]'";
$runuser=mysqli_query($cxn,$viewuser) or die(mysqli_error($cxn));
$rows=array();
while($row=mysqli_fetch_assoc($runuser))
$rows[]=$row;
echo"<form action='$_SERVER[PHP_SELF]' name='DelUser' method='POST' >";
echo"<table border='1'>";
echo"<tr>";
echo"<td>";
echo"Username";
echo"</td>";
echo"<td>";
echo"Password";
echo"</td>";
echo"<td>";
echo"Branch Name";
echo"</td>";
echo"<td>";
echo"Branch Info";
echo"</td>";
echo"</tr>";
foreach($rows as $row)
{
$id=$row['Id'];
echo"$id";
echo"<tr>";
echo"<td>";
echo"$row[Username]";
echo"</td>";
echo"<td>";
echo"$row[Password]";
echo"</td>";
echo"<td>";
echo"$row[Name]";
echo"</td>";
echo"<td>";
echo"$row[Info]";
echo"</td>";
echo"<td>";
echo"<input type='hidden' name='id' value='$id' >";
echo"<input type='Submit' name='deluser' value='Delete' >";
echo"</td>";
echo"</tr>";
}
echo"<tr>";
echo"<td colspan='5'>";
if(isset($delsuccess))
{echo"$delsuccess";}
echo"</td>";
echo"</tr>";
echo"</table>";
echo"</form>";
?>
</body>
</html>
この線
echo "$id";
foreach ループの下では、各行が画面に出力されるため、各行の ID が正しく返されます。
DELETE ボタンを押すと、行が
print_r($_POST);
すべての変数を $_POST に出力し、結果が得られます
Array ( [id] => x [deluser] => Delete )
ここで、x はテーブルの最後の行の ID です (例: テーブルに 5 行ある場合、x=5)
質問 DELETE ボタンが最後の行の ID のみを渡し続け、それが存在する行の ID を渡さないのはなぜですか?また、削除ボタンが押されたときに、削除ボタンの横の行は削除されますか?
私は過去 2 時間これを見てきましたが、どこが間違っているのかまだわかりません。削除ボタンが押されたときに行が削除されているため、コードは明らかに機能していますが、間違った行が削除されているだけです。
どんな助けでも大歓迎です。ありがとう