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");
}
?>
請您將'update sql'查詢添加到您的問題以更好地理解問題嗎? – 2011-05-17 06:49:16
你能否在這裏寫你的SQL ......? – Pushpendra 2011-05-17 06:52:09