#php #mysql
#php #mysql
Вопрос:
Привет, ребята, у меня есть база данных mysql с различными полями, в одном из которых хранится файл / URL-адрес расположения изображения. Пользователь может обновлять / редактировать базу данных, когда требуется, предварительно заполнив форму обновления php данными этой конкретной записи и повторно отправив изменения.
все работает хорошо, за исключением того, что когда пользователь оставляет поле формы «Загрузить изображение» пустым, он затем получает сообщение об ошибке «Запрос был пуст».
Причина, по которой поле для загрузки изображения оставлено пустым, заключается в том, что в базе данных уже есть изображение для этой записи, и оно хотело бы сохранить его, но все же обновить любые другие необходимые данные.
Также при предварительном заполнении формы обновления не удается предварительно заполнить поле загрузки изображения, что, как я полагаю, сделано в целях безопасности, поэтому, если пользователь не просматривает, чтобы выбрать изображение, и оставляет поле пустым, он удалит существующее изображение в dbase, когда форма будет в конечном итоге обработана.
В настоящее время я использую проверку, чтобы найти пустые поля формы и указать пользователю вернуться и загрузить изображение.
Я не знаю, как преодолеть проблему, не используя проверку, чтобы заставить пользователя повторно загрузить изображение, которое они, возможно, не знают, как это сделать, или даже не хотят.
Есть идеи?
<?php
// get variables from form post for which record to change, and what to do with it
$action = $_GET['action'];
$id = $_GET['id'];
// THE DELETE OPTION
if($action == 'delete')
{
// set up delete query
$query = "DELETE FROM tablename WHERE id ='$id' ";
// do the query
mysql_query($query) or die('Error, query failed');
echo "<center><h3><font color=#000000>Deleted Successfully!</font></h3>";
}
// THE ADD OR EDIT OPTION
elseif (isset($_POST['add']) || isset($_POST['edit']))
{
//ADD
// File upload handling
if (isset($_POST['add'])amp;amp; $_FILES['field_3']['name']!='')
{
$field_3_filename = "file_3_".date("sihdmY").substr($_FILES['field_3']['name'],strlen($_FILES['field_3']['name'])-4);
if(!move_uploaded_file($_FILES['field_3']['tmp_name'], "./files/".$field_3_filename))
{
die("File " . $_FILES['field_3']['name'] . " was not uploaded.");
}
// set up insert query
$query = "INSERT into tablename(,field_1,field_2,field_3) VALUES ('" . $_POST['field_1'] . "','" . $_POST['field_2'] . "','" . "./files/".$field_3_filename . "')";
}
//EDIT
if (isset($_POST['edit'])amp;amp; $_FILES['field_3']['name']!='')
{
$field_3_filename = "file_3_".date("sihdmY").substr($_FILES['field_3']['name'],strlen($_FILES['field_3']['name'])-4);
if(!move_uploaded_file($_FILES['field_3']['tmp_name'], "./files/".$field_3_filename))
{
die("File " . $_FILES['field_3']['name'] . " was not uploaded.");
}
//Post..Variables..for..Update
$name = $_POST['field_1'];
$email = $_POST['field_2'];
$image = $_POST['field_3'];
//UPDATE..QUERY
$query = "UPDATE tablename SET field_1 = '$name',field_2 = '$email',field_3 = '" . "./files/".$field_3_filename . "' WHERE id='$id'";
}
//DO...QUERY
mysql_query($query) or die(mysql_error());
echo "<center><h3><font color=#000000>Updated Successfully!</font></h3>
<br />";
//EDIT FORM
}
else
{
// load stored values for editing event but not image field as will not prepopulate field due to security
if($action == 'edit')
{
$query = "SELECT * FROM tablename WHERE id='$id'";
$result = mysql_query($query);
$name = mysql_result($result,0,"field_1");
$email = mysql_result($result,0,"field_2");
}
?>
Комментарии:
1. Не могли бы вы, пожалуйста, добавить свой
update sql
запрос к вашему вопросу, чтобы лучше понять проблему?2. Не могли бы вы, пожалуйста, написать свой SQL здесь ……?
Ответ №1:
Мы загружаем / обновляем db-table-field только тогда, когда пользователь отправляет изображение. Если нет, то не трогайте это поле:
<?php
// Check if form was submitted
if(count($_POST) > 0)
{
// Check if new image was uploaded
if(isset($_FILE) amp;amp; !empty($_FILE['image']['tmp_name']))
{
// Here update the whole db-table, also the image/url-column...
}
else
{
// Here update the db-table, but not the image/url-column...
}
}