2011-05-17 27 views
0

嗨,伙计们我有一个MySQL数据库与各种领域,其中之一存储文件/ URL到图像位置。用户可以根据需要通过预先填写具有特定记录数据的php更新表单来更新/编辑dbase,然后重新提交更改。“查询是空的”空图像上传表单字段的错误

除非用户将“上传图像”表单字段留空,否则它们会收到“查询为空”的错误。

上传图像字段留空的原因是因为它已经在该记录的dbase上有一个图像,并且想保留它,但仍会更新其他所需的任何数据。

此外,当预填充更新表单时,它不能预先填充图像上传字段,我相信这是用于安全目的,所以如果用户不浏览以选择图像并将字段留空,它将擦除现有图像最终处理表单时的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'])&& $_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'])&& $_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'查询添加到您的问题以更好地理解问题吗? – 2011-05-17 06:49:16

+0

你能否在这里写你的SQL ......? – Pushpendra 2011-05-17 06:52:09

回答

0

那么只有在用户发送图像时上传/更新db-table-field。如果没有,请不要触及此字段:

<?php 
// Check if form was submitted 
if(count($_POST) > 0) 
{ 
    // Check if new image was uploaded 
    if(isset($_FILE) && !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... 
    } 

}