@Minningt

Как сделать редактирование, если картинка не изменилась?

Hi all
Подскажите, как изменить код, чтобы при изменении полей запись обновлялась. У меня запись обновится, если я изменю картинку для записи, а если я изменяю значения для записи(цену и т.д), то сохранение не происходит.
if(isset($_POST['edit'])){
 $uploaddir = 'files/';
 $apend=date('YmdHis').rand(100,1000).'.jpg';
 $uploadfile = "$uploaddir$apend";
  if(($_FILES['file']['type'] == 'image/gif' || $_FILES['file']['type'] == 'image/jpeg' || $_FILES['file']['type'] == 'image/png')
    && ($_FILES['file']['size'] != 0 and $_FILES['file']['size']<=512000)) 
  {
    if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) 
     { 
     $size = getimagesize($uploadfile); 
     $query = "UPDATE `table1` SET `photo`= '$uploadfile',`Price` = '".$_POST['Price']."', `Model` = '".$_POST['Model']."' WHERE `ID` = ".(int)$edit_id;
     $result=mysql_query($query) or die("Error:".mysql_error());	
 
    } 
 }
}
  • Вопрос задан
  • 224 просмотра
Решения вопроса 2
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
Вынести апдейт полей за условие, картинку обновлять отдельным запросом. Лучше конечно собирать запрос по отдельности и выполнить единожды собранный динамически запрос уже в конце.
Ответ написан
Формируйте запрос по ходу работы данной части кода и уже в конце одним запросом делайте обновление, раз уж речь идет об одной таблице. Сделать это можно таким образом:
if (isset($_POST['edit'])) {
    $uploaddir = 'files/';
    $apend = date('YmdHis').rand(100,1000).'.jpg';
    $uploadfile = "$uploaddir$apend";
    $query_fields = [];
    if (($_FILES['file']['type'] == 'image/gif' || $_FILES['file']['type'] == 'image/jpeg' || $_FILES['file']['type'] == 'image/png')
        && ($_FILES['file']['size'] != 0 and $_FILES['file']['size']<=512000))
    {
        if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile))
        {
            $size = getimagesize($uploadfile);
            $query_fields[] = "`photo`= '$uploadfile'";
        }
    }

    $query_fields[] = "`Price` = '".$_POST['Price']."'";
    $query_fields[] = "`Model` = '".$_POST['Model']."'";

    $query = "UPDATE `table1` SET " . join(',', $query_fields) . " WHERE `ID` = ".(int)$edit_id;
    $result=mysql_query($query) or die("Error:".mysql_error());
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
nazarpc
@nazarpc
Open Source enthusiast
$query = "UPDATE `table1` SET `photo`= '$uploadfile',`Price` = '".$_POST['Price']."', `Model` = '".$_POST['Model']."' WHERE `ID` = ".(int)$edit_id;

Вы хоть понимаете, что подстановка чего-угодно в $_POST['Price'] как минимум сломает ваш запрос (одной кавычки будет достаточно), а как максимум позволит специально подготовленной строкой снести к чертям всю БД?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы