У меня есть таблица, которая отображает данные, взятые из двух разных таблиц в mysql. В таблице есть кнопка удаления в каждой строке, которая при нажатии будет отправлять запрос на удаление, который удаляет строка и все связанные с ней данные из базы данных.Кнопка удаления не возвращает правильные значения для удаления запроса
Однако, независимо от того, какая кнопка удаления я нажимаю, всегда последняя строка в таблице, которая будет удалена, а не строка, которая кнопка удаления находится в
Мой стол.
-------------------------------------------
|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>
линия
эхо "$ ID";
в пределах цикла foreach успешно возвращает идентификатор каждой строки правильно, поскольку каждая строка выводится на экран.
При нажатии на кнопку Удалить, линия
print_r($_POST);
выводит все переменные в $ _POST, что дает результат
Array ([id] => x [deluser] => Delete)
где х идентификатор последней строки в таблице (Например, если есть 5 строк в таблице, х = 5)
ВОПРОС Почему кнопка DELETE продолжает передавать идентификатор только последней строки, а не идентификатор строки, в которой она включена? Также, как и что мне нужно сделать, чтобы сделать так, чтобы при нажатии кнопки удаления только строка рядом с кнопкой удаления удалена?
Я смотрел на это в течение последних 2 часов и до сих пор не могу понять, где я ошибаюсь; очевидно, что код работает, поскольку строки удаляются при нажатии кнопки удаления, но это просто, что строки WRONG удаляются.
Любая помощь была бы принята с благодарностью. Thanks
где остальная часть HTML (кнопки) –
@Gunr Jesra что вы имеете в виду? –