У меня есть три файла, соединяющихся друг с другом, моя проблема в том, что моя функция удаления не работает. Я хотел бы знать, чего не хватает в моей «общедоступной функции Delete_Lease ($ db) {», показанные коды показаны ниже. По сути, я использую для каждого для отображения таблицы, редактирование работает без проблем, но удаление просто остается на той же странице и не имеет никакого эффекта.
Имя таблицы: for_lease
Значения: арендный_идент, арендный_тип, арендное_имя, арендный_адрес, арендная_цена, арендное_условие, арендное_описание, избранное_фото, дата создания
<?php
session_start();
require_once('for_lease.vc.php');
?>
<?php foreach($lstProperty as $rowProperty) { ?>
<tr align = "center">
<td>
<a href = "for_lease_edit.php?i=<?php echo($rowProperty['leaseid']); ?>"><input type = "submit" class = "btn bg-color-blue color-white form-control" name = "edit" value = "EDIT"></a>
</td>
<td>
<?php
echo($rowProperty['lease_name']);
?>
</td>
<td>
<?php
echo($rowProperty['lease_address']);
?>
</td>
<td>
<?php
echo($rowProperty['lease_type']);
?>
</td>
<td>
<?php
echo 'PHP'.' '.number_format(($rowProperty['lease_price']));
?>
</td>
<td>
<?php
echo($rowProperty['lease_condition']);
?>
</td>
<td>
<?php
echo( date("Y-m-d", strtotime($rowProperty['createddate']) ));
?>
</td>
<td>
<a href = "for_lease.php?delete=<?php echo($rowProperty['leaseid']); ?>" onclick = "return confirm('Are you sure?');"><input type = "submit" class = "btn bg-color-red color-white form-control" name = "delete" value = "DELETE"></a>
</td>
</tr>
<?php } ?>
for_lease.vc.php
<?php
$routePath = "../";
require_once($routePath . "_config/db.php");
$dbConfig = new config_db();
$db = $dbConfig->init();
require_once($routePath . "_mc/Property.mc.php");
$mcProperty = new Property_MC();
$lstProperty = $mcProperty->SelectObj_ByLeaseId($db);
if (isset($_GET['delete'])){
$rowProperty = $mcProperty->Delete_Lease($db);
}
?>
Недвижимость.mc.php
<?php
Class Property_MC {
public function SelectObj_ByLeaseId($db) {
$stmt = $db->prepare(
" SELECT leaseid, lease_type, lease_name, lease_address, lease_price, lease_condition, lease_description, createddate
FROM for_lease"
);
$stmt->execute();
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $row;
}
public function Delete_Lease($db) {
$stmt = $db->prepare(
" DELETE * FROM
for_lease
WHERE
leaseid = :leaseid "
);
}
} ?>
Вы не выполняете оператор sql, вы только готовите его. Кроме того, в зависимости от того, как настроен ваш код, вам нужно будет передать leaseid
вашей функции удаления.
Попробуй это.
for_lease.vc.php
<?php
$routePath = "../";
require_once($routePath . "_config/db.php");
$dbConfig = new config_db();
$db = $dbConfig->init();
require_once($routePath . "_mc/Property.mc.php");
$mcProperty = new Property_MC();
$lstProperty = $mcProperty->SelectObj_ByLeaseId($db);
if (isset($_GET['delete'])){
$rowProperty = $mcProperty->Delete_Lease($db, $_GET['delete']);
}
?>
Недвижимость.mc.php
public function Delete_Lease($db, $leaseid) {
$stmt = $db->prepare(
" DELETE FROM
for_lease
WHERE
leaseid = :leaseid "
);
$stmt->execute([':leaseid' => $leaseid]);
}
Delete_Lease отсутствует привязка и выполнение, а также идентификатор аренды, который нужно удалить. SQL для удаления не нуждается в "*".
Недвижимость.mc.php
public function Delete_Lease($db, $leaseid) {
$stmt = $db->prepare(
"DELETE FROM
for_lease
WHERE
leaseid = :leaseid "
);
$stmt->execute(['leaseid' => $leaseid]);
}
for_lease.vc.php
if (isset($_GET['delete'])){
$rowProperty = $mcProperty->Delete_Lease($db, $_GET['leaseid']);
}
исправить кнопку удаления, которая перезаписывает идентификатор удаления в for_lease.php
<td>
<a href = "for_lease.php?leaseid=<?php echo($rowProperty['leaseid']); ?>" onclick = "return confirm('Are you sure?');"><input type = "submit" class = "btn bg-color-red color-white form-control" name = "delete" value = "DELETE"></a>
</td>
Обновите мой вопрос, я получаю неопознанную переменную, если пытаюсь добавить "leaseid"
Вам нужно передать значение - попробуйте это. alos кнопка удаления была перезаписана значением удаления при подтверждении.
спасибо за редактирование, некоторые настройки с этим ответом помогли :) я понял, что мне нужен $_GET
нет никакого эффекта после попытки этого примера