У меня есть система, в которой пользователь может просматривать все изображения, которые он загрузил, в созданную им запись в блоге (это не WordPress сайт). Оттуда я хочу, чтобы они могли удалять любые изображения, которые они хотят. У меня все настроено и работает, кроме самой функции удаления. Я отображаю эти изображения с помощью цикла.
Я знаю, что мне нужно удалить изображения по их уникальным img_id
, которым они назначены, но я застрял на том, как это сделать. Я пробовал несколько разных вещей, которые привели к ошибкам. С тем, что я имею ниже, я не получаю никаких ошибок, функция просто не работает так, как мне бы хотелось.
Я все еще нахожусь в процессе, когда дело доходит до PHP, и был бы признателен, если бы кто-нибудь дал мне представление о том, как действовать дальше. Заранее спасибо.
Вот код для функции удаления, которую я имею в верхней части страницы:
<?php
if(isset($_POST['delete'])){
$img_id = $_POST['delete_rec_id'];
$deletequery = "DELETE FROM images WHERE img_id=$img_id";
$deleteresult = mysqli_query($db,$deletequery);
}
?>
Вот код для отображения изображений в теле html:
<?php
$imsql = "SELECT img_name, img_path, img_id
FROM images
WHERE post_id = '$id'";
$q2 = $db->query($imsql);
if($q2->num_rows>0){
while ($imrow = $q2->fetch_object()){
echo '<img src="images/' . $imrow->img_name . '" width="100%" height="auto"/>';
echo '<br><br>';
echo '<form id="delete" method="post" action="">';
echo '<input type="hidden" name="delete_rec_id" value="<?php print $img_id; ?>" /> ';
echo '<input type="submit" name="delete" value="Delete Image" class="btn btn-default"/> ';
echo '</form>';
echo '<br><br><br><br>';
}
}
?>
Вот весь пакет кода вверху моей страницы на случай, если что-нибудь еще понадобится:
<?php
session_start();
$msg = "";
if(!isset($_GET['id'])){
header('Location: modify.php');
exit();
}else{
$id = $_GET['id'];
}
include('../includes/db_connect.php');
if(!is_numeric($id)){
header('Location: modify.php');
}
if(isset($_POST['delete'])){
$img_id = $_POST['delete_rec_id'];
$deletequery = "DELETE FROM images WHERE img_id=$img_id";
$deleteresult = mysqli_query($db,$deletequery);
}
$sql = "SELECT * FROM post WHERE post_id='$id'";
$query = $db->query($sql);
if($query->num_rows !=1){
header('Location: modify.php');
exit();
}
?>
Редактировать: Я понял, что пытаюсь запустить <?php print ?>
в следующем операторе echo: echo '<input type="hidden" name="delete_rec_id" value="<?php print $img_id; ?>" /> ';
Я думаю, в этом и заключается проблема. Как мне написать оператор печати внутри оператора echo?
ОТВЕТ НА БУДУЩУЮ ССЫЛКУ:
<?php
$imsql = "SELECT img_name, img_path, img_id FROM images WHERE post_id = '$id'";
$q2 = $db->query($imsql);
if($q2->num_rows>0){
while ($imrow = $q2->fetch_object()){
echo '<img src="images/' . $imrow->img_name . '" width="100%" height="auto"/>';
echo '<br><br>';
echo '<form id="delete" method="post" action="">';
echo '<input type="hidden" name="delete_rec_id" value="' . $imrow->img_id . '" /> ';
echo '<input type="submit" name="delete" value="Delete Image" class="btn btn-default"/> ';
echo '</form>';
echo '<br><br><br><br>';
}
}
?>