2011-05-17 30 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... 
    } 

}