I am using a foreach loop to display my data. Im getting data from a table with reservations, which the customer is able to delete.
This is my current code:
if(isset($_POST['verwijder']))
{
$resid= $pers->reserveringnummer;
$query = "DELETE FROM reservering WHERE reserveringnummer = :resid;";
$stm = $con->prepare($query);
$stm->bindParam(':resid', $resid, PDO::PARAM_STR, 20);
if($stm->execute() == true)
{
?>
<script type="text/javascript">
window.location.href = 'greservering.php';
</script>
<?php
} else {
echo ("Mislukt");
}
}
//pers->reserveringnummer = reservation id loaded from database
This code selects the id of the row the button is in, and deletes the row with this id. It all worked with 1 row, but when I tried it with 2 rows, it deleted both.
All of this happens inside of a foreach loop, so every row has a submit button with the same name (verwijder).
When I click a submit button, all of the buttons execute the action, and delete themselves.
Is there anyway to solve this issue?
EDIT:
Form code: (just a button per row)
//query to get all reservations
foreach ($result as $pers) {
?>
//some row data
<form method="post">
<input type="submit" class="dropdown-item text-danger" name="verwijder" value="Verwijder">
</form>
<?php
//delete code using submit
}
It looks like you aren't passing any information on which reservation should be deleted.
How does $pers->reserveringnummer;
load the number and know which of the buttons was pressed?
In the delete form where you display the reservations you would probably need to pass the number in a hidden input field like this
<input type="hidden" name="resid" value="<?= $resid ?>" />
and then in your delete code you use this id to delete the reservation.