Как удалить одно изображение из набора изображений по идентификатору изображения PHP - PullRequest
0 голосов
/ 10 мая 2018

У меня есть система, в которой пользователь может просматривать все изображения, которые он загрузил, в созданную им запись в блоге (это не 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>';
        }
      }
        ?>

1 Ответ

0 голосов
/ 10 мая 2018

К вашему сведению, мне не нравится, как вы написали этот код, но это мое личное предпочтение.

Но ваше исправление довольно простое (вы просто не обращались к массиву) Изменение

 echo '<input type="hidden" name="delete_rec_id" value="<?php print $img_id; ?>" /> ';

до

 echo '<input type="hidden" name="delete_rec_id" value="<?php print $imrow->img_id; ?>" /> ';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...