Итак, я создаю систему, которая управляет пользователями, и я внедрил «мусорную корзину» в качестве проверки работоспособности перед окончательным удалением записи.
Я сделал это, добавив в таблицу bool (tinyint) с именем deleted
.
Это метод, который я сделал для извлечения записей:
static public function select_all($deleted = null) {
$query = "SELECT * FROM ".static::$db_table;
if ($deleted) {
$query .= " WHERE deleted = ".$deleted;
}
return static::sql_query($query);
}
$db_table
определено в классе, а sql_query($query)
- это метод, который фактически выполняет запрос, в них нет ничего плохого, поскольку я использую их в каждом классе и в каждом запросе.
Вот как я называю метод:
Не удалено:
$users = User::select_all(false);
- Ожидаемый результат: Все записи, для которых
deleted
установлено в 0
- Фактический вывод: Каждая запись
Удалено:
$users = User::select_all(true);
- Ожидаемый результат: Все записи, для которых
deleted
установлено в 1
- Фактический вывод: Все записи, для которых
deleted
установлено в 1
Вот как я отображаю результаты:
<?php foreach ($users as $user) { ?>
<?php if ($user->id != $_SESSION['user_id']) { ?>
<tr>
<td><?= h($user->name()); ?></td>
<td><?= h($user->email); ?></td>
<td><?= h($user->username); ?></td>
<td><?= h($user->status()); ?></td>
<td>
<a href="<?= url('users/details.php?id='.h(u($user->id))); ?>">Details</a>
</td>
</tr>
<?php } ?>
<?php } ?>
h()
является ярлыком для htmlspecialchars()
, а ()
является ярлыком для urlencode()
.
Таким образом, он может найти всех удаленных пользователей, но не всех не удаленных пользователей.
Кто-нибудь может мне помочь, пожалуйста? Я предоставлю любую необходимую дополнительную информацию.