Я не могу удалить строку, которую я выбираю, с удалением ввода. Я думаю, что мне нужно установить другие параметры в querydelete, но я точно не знаю.
Может ли кто-нибудь помочь мне, потому что я начинающий? Есть ли другой способ сделать что-то подобное?
Моя цель - нажать ввод удаления, а затем удалить клиента с определенным идентификатором (в том же сыром с вводом удаления).
Может ли кто-нибудь дать мне ссылку с примером?
<!DOCTYPE html>
<html>
<head>
<title>Table with database</title>
<style>
table {
border-collapse: collapse;
width: 100%;
color: #588c7e;
font-family: monospace;
font-size: 25px;
text-align: left;
}
th {
background-color: #588c7e;
color: white;
}
tr:nth-child(even) {background-color: #f2f2f2}
</style>
</head>
<body>
<table>
<tr>
<th>ID</th>
<th>Room</th>
<th>Name</th>
<th>Check In</th>
<th>Check Out</th>
</tr>
<?php
include('db_connection.php');
$conn = OpenCon();
//SQL query
$query = "Select * from ergazomenos";
if(isset($_POST['delete'])){
$querydelete = "delete from ergazomenos where trim(ID)
='$_POST[hidden]'";
$queryexee = mysqli_query($conn, $querydelete);
}
$result = mysqli_query($conn, $query);
if (!$result){
echo("Error description: " . mysqli_error($conn));
}
//query database
while($rows = mysqli_fetch_array($result)){
$ID = $rows['ID'] ;
$Room = $rows['Room'] ;
$Name = $rows['Name'];
$CheckIn = $rows['Check In'] ;
$CheckOut = $rows['Check Out'] ;
//echo "</td><td>" . $ID. "</td><td>" "<input type=hidden ID=hidden
value=" . $rows['ID'] . $Room. "</td><td>". $Name. "</td><td>" . $CheckIn. "
</td><td>" . $CheckOut. "</td><td>";
echo "</td><td>" . $ID. "</td><td>" . $Room. "</td><td>". $Name.
"</td><td>" . $CheckIn. "</td><td>" . $CheckOut. "</td><td>";
</td>";
echo ("<form action=delete.php method=post>");
echo ("<tr><td><div align=\"center\"> $ID </div>" . "<input
type=hidden name=hidden value=".$rows['ID'] . "</td> <td><div
align=\"center\">
$Room </div></td> <td><div align=\"center\"> $Name </div></td> <td><div
align=\"center\"> $CheckIn </div></td> <td><div align=\"center\"> $CheckOut
</div></td> <td><div align=\"center\"> <td><div ");
echo ("<td>" . "<input type=submit name=delete value=delete" . "
</td>");
//
echo ($rows['ID']);
//echo '<td><input type="button" name="delete"
value="delete"></td>';
echo ("</tr>");
echo ($_POST['hidden']);
}
CloseCon($conn);
?>
</table>
<button type="button" onclick="alert('Hello world!')">Insert</button>
<button type="button" onclick="alert('Hello world!')">Update</button>
</body>
</html>
Вы должны использовать инструкцию подготовки для предотвращения SQL-инъекций
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$id = $_POST['hidden'];
// if you are using ID, make sure variable is number
if (is_numeric(id)) {
delete from ergazomenos where trim(ID)
='$_POST[hidden]'
/* create a prepared statement */
if ($stmt = mysqli_prepare($link, "DELETE FROM ergazomenos WHERE trim(ID) = ?")) {
/* bind parameters for markers */
mysqli_stmt_bind_param($stmt, "s", $id);
/* execute query */
mysqli_stmt_execute($stmt);
/* close statement */
mysqli_stmt_close($stmt);
}
/* close connection */
mysqli_close($link);
}
?>
он более безопасен таким образом.
Вы должны использовать (одиночные или экранированные двойные) кавычки для значений атрибутов в ваших тегах input
/input
:
<input type='hidden' name='hidden' [etc.]
Попробуйте сменить запрос $ querydelete:
$querydelete = "delete from ergazomenos where trim(ID)
='$_POST[hidden]'";
в
$querydelete = "delete from ergazomenos where trim(ID)=". $_POST['hidden'];
Это должно помочь. Я не тестировал код, тo.
Разделите мой стиль.
Создайте столбец в сетке с именем Action
и вдоль каждой записи, управляемой db.
<td>
<a href="delete.php?id=<?php echo $rows['ID'];?>">Delete</a>
</td>
В файле delete.php
:
include('connection.php');
$id = $_GET['id'];
$query= "delete from table where id = '$id'";
mysqli_query($conn, $query); // or $dbConn->query($query);
Перенаправление на страницу сетки.
GET
, потому что браузерам разрешено предварительно выбирать ссылки, тем самым вызывая автоматическое удаление всех записей в списке.