@DMax921

Как Не обновлять таблицу MySql если изображение не выбрано?

Здравствуйте друзья! Второй день ищу решение проблемы..
Суть проблемы такова:
Сохранил в бд текст и фото, если я хочу отредактировать только текст, а фото не выбрал то при сохранении в базу попадает null и соответственно картинка не выводится, так как имя картинки с базы стерто. И как решить не понимаю(

Вот запрос к базе
$query = "UPDATE $table SET image='".$_FILES['test_image']['name']."', message='".$_POST["test_mess"]." ' WHERE id=".$_POST["update"];


Вот код который это все делает
<?
/* Соединяемся с базой данных */
$hostname = "localhost"; // название/путь сервера, с MySQL
$username = "root"; // имя пользователя (в Denwer`е по умолчанию "root")
$password = ""; // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)
$dbName = "namebd"; // название базы данных
 
/* Таблица MySQL, в которой будут храниться данные */
$table = "test_table";
 
/* Создаем соединение */
mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");
 
/* Выбираем базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die (mysql_error());
 
/* Определяем текущую дату */
$cdate = date("Y-m-d");
 
/* Составляем запрос для вставки информации в таблицу*/
$query = "UPDATE $table SET image='".$_FILES['test_image']['name']."', message='".$_POST["test_mess"]." ' WHERE id=".$_POST["update"];


 
/* Выполняем запрос. Если произойдет ошибка - вывести ее. */
mysql_query($query) or die(mysql_error());
 
/* Закрываем соединение */
mysql_close();
 
/* В случае успешного сохранения выводим сообщение и ссылку возврата */
echo ("<div style=\"text-align: center; margin-top: 10px;\">
<font color=\"green\">Данные успешно сохранены!</font>
 
<a href=\"view_data.php\">Вернутся назад</a></div>");

//Загрузка файлов
if($_FILES['test_image']['type']=="image/jpeg")
{
    if(is_uploaded_file($_FILES['test_image']['tmp_name']));
    {
    move_uploaded_file($_FILES['test_image']['tmp_name'],"./img/".$_FILES['test_image']['name']);
    echo "фото загружено и данные обновлены<br>";
    echo "<img src='img/".$_FILES['test_image']['name']."' width='200'>";
    }
 
} 

?>


Ребята, пожалуйста, поправьте проблему, вам это две секунды...
Спасибо!
  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
Да, 2 запроса, если картинка не была послана - один запрос, а если послана - другой, что-то типа:
if($_FILES['test_image']['name']){
    $query = "UPDATE $table SET `message`='{$_POST['test_mess']}' WHERE `id`='{$_POST['update']}'";
} else {
    $query = "UPDATE $table SET `image`='{$_FILES['test_image']['name']}', `message='{$_POST['test_mess']}' WHERE `id`='{$_POST['update']}'";
}

Думаю, что нигде не опечатался)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
VladimirAndreev
@VladimirAndreev
php web dev
2 запроса разных нужны, если есть картинка и если нет картинки.
Ответ написан
Комментировать
inoise
@inoise Куратор тега PHP
Solution Architect, AWS Certified, Serverless
Ну так обновляй только те поля что обновились. Проверяй их, составляй запросы в зависимости от входящих данных. А еще на помощь тут приходят ORM/PDO и если совсем хочется не мучаться то фреймворки Laravel, Yii2, Symfony и т.п.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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