За последние 24 часа нас посетили 18722 программиста и 1570 роботов. Сейчас ищут 1115 программистов ...

Удаляется картинка из базы при редактировании других данных

Тема в разделе "PHP для новичков", создана пользователем almach123, 21 мар 2024.

  1. almach123

    almach123 Новичок

    С нами с:
    21 мар 2024
    Сообщения:
    1
    Симпатии:
    0
    Создал модальное окно с редактированием категории, названия, описания, цены и изображения товара. При попытке изменить что-то изображение удаляется и приходится постоянно прикреплять его. Как сделать так, чтобы имеющееся изображение сохранялось при изменении других данных?

    select:
    PHP:
    1.    function EditTovar($connect,$idTovar,$edit_tovar__category,$edit_tovar__name,$edit_tovar__price,$edit_tovar__desc,$edit_tovar__img){
    2.     $sql = "UPDATE `Tovars` SET `TovarCategory`= :TovarCategory, `TovarName`= :TovarName, `Price`= :Price, `Image`= :Image, `Description`= :Description WHERE `idTovar`= :idTovar";
    3.     $sql_result = $connect ->prepare($sql, [PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY]);
    4.     $sql_result->execute(["TovarCategory" => $edit_tovar__category, "TovarName" => $edit_tovar__name, "Price" => $edit_tovar__price,
    5.     "Image" => $edit_tovar__img, "Description" => $edit_tovar__desc, "idTovar" => $idTovar]);
    6.     return true;
    7.   }
    admin(php):
    PHP:
    1. $edit_tovar__category = $_POST['edit_tovar__category'];
    2. $edit_tovar__name = $_POST['edit_tovar__name'];
    3. $edit_tovar__price = $_POST['edit_tovar__price'];
    4. $edit_tovar__desc = $_POST['edit_tovar__desc'];
    5. $edit_tovar__img = $_FILES['edit_tovar__img']['name'];
    6. $tovar_btn__edit = $_POST['tovar_btn__edit'];
    7.  
    8. if(isset($tovar_btn__edit)){
    9.     if(!empty($_FILES['edit_tovar__img'])){
    10.       $file = $_FILES['edit_tovar__img'];
    11.       $name = $file['name'];
    12.       $pathFile = '../Images/'.$name;
    13.       EditTovar($connect,$tovar_btn__edit,$edit_tovar__category,$edit_tovar__name,$edit_tovar__price,$edit_tovar__desc,$edit_tovar__img);  
    14.     }
    15.   }
    admin(html):
    HTML:
    1. <div class="modal-body">
    2.         <div class="modal-row">
    3.                 <p class="modal-text">Категория товара</p>
    4.                 <input type="text" class="modal-textarea" name="edit_tovar__category" value="<?=$value['TovarCategory']?>">
    5.             </div>
    6.             <div class="modal-row">
    7.                 <p class="modal-text">Название</p>
    8.                 <input type="text" class="modal-textarea" name="edit_tovar__name" value="<?=$value['TovarName']?>">
    9.             </div>
    10.             <div class="modal-row">
    11.                 <p class="modal-text">Цена</p>
    12.                 <input type="number" class="modal-textarea"  name="edit_tovar__price" value="<?=$value['Price']?>">
    13.             </div>
    14.             <div class="modal-row">
    15.                 <p class="modal-text">Описание</p>
    16.                 <input type="text" class="modal-textarea" name="edit_tovar__desc" value="<?=$value['Description']?>">
    17.             </div>
    18.             <div class="modal-row">
    19.                 <input type="file" class="modal-textarea" name="edit_tovar__img" accept=".jpg, .jpeg, .png">
    20.             </div>
    21.             <div class="modal-row">
    22.             <img class="tovar_img" src="../Images/<?=$value['Image']?>" alt="<?=$value['Image']?>">
    23.             </div>  
    24.          <button name="tovar_btn__delete"  value="<?=$value['idTovar']?>">Удалить</button>
    25.          <button name="tovar_btn__edit"  value="<?=$value['idTovar']?>">Редактировать</button>
    26.          <a href="admin.php">Назад</a>
    27.         </div>
    28.       </div>
    29.     </div>
    30.   </div>
     
    #1 almach123, 21 мар 2024
    Последнее редактирование: 21 мар 2024
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.853
    Симпатии:
    748
    Адрес:
    Татарстан
    правильно надо делать...
    ...
    PHP:
    1. "Image" => $edit_tovar__img,
    у вас в функции ВСЕГДА выполняется .... только если вы прикрепляете изображение - там его имя... а если не прикрепляете - там пустота..... она и перезаписывает собой имя файла

    потому делайте разные запросы... если есть картинка - то да - обновляете поле image .... а если пусто - значит ничего не менялось.... не надо обновлять его
     
    don.bidon и almach123 нравится это.