如果有人可以幫我解決這個問題,我將不勝感激。 問題是我有一個頁面,我上傳的圖像和它的描述,但是當我更新圖像描述,並保持空白時,我按下提交更新描述文件,我的圖像消失,因爲我離開了文件空白,所以它將我以前的圖像替換爲空白。move_uploaded_file只有在選擇了文件
有什麼辦法可以更新描述字段,只有在設置了filefield的情況下才更新圖像?
在此先感謝。
繼承人我的代碼:
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
move_uploaded_file($_FILES['imagem']['tmp_name'],"../images/slide/".($_FILES['imagem']['name']));
$updateSQL = sprintf("UPDATE tab_imagens SET imagem=%s, titulo=%s, idUser=%s WHERE idImagem=%s",
GetSQLValueString("images/slide/".($_FILES['imagem']['name']), "text"),
GetSQLValueString($_POST['titulo'], "text"),
GetSQLValueString($_POST['idUser'], "text"),
GetSQLValueString($_POST['idImagem'], "int"));
mysql_select_db($database_ligar, $ligar);
$Result1 = mysql_query($updateSQL, $ligar) or die(mysql_error());
$updateGoTo = "verImagensSlide.php";
if (isset($_SERVER['QUERY_STRING'])) {
$updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
$updateGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $updateGoTo));
}
謝謝大家對你的反應! 這是我如何解決它:
//do this if there is a file in filefield
if(!empty($_FILES[ 'imagem' ]) && !empty($_FILES[ 'imagem' ][ 'tmp_name' ])){
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
move_uploaded_file($_FILES['imagem']['tmp_name'],"../images/slide/".($_FILES['imagem']['name']));
$updateSQL = sprintf("UPDATE tab_imagens SET imagem=%s, titulo=%s, idUser=%s WHERE idImagem=%s",
GetSQLValueString("images/slide/".($_FILES['imagem']['name']), "text"),
GetSQLValueString($_POST['titulo'], "text"),
GetSQLValueString($_POST['idUser'], "text"),
GetSQLValueString($_POST['idImagem'], "int"));
mysql_select_db($database_ligar, $ligar);
$Result1 = mysql_query($updateSQL, $ligar) or die(mysql_error());
$updateGoTo = "verImagensSlide.php";
if (isset($_SERVER['QUERY_STRING'])) {
$updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
$updateGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $updateGoTo));
}}
//do this if there is NO FILE in filefield
else
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
$updateSQL = sprintf("UPDATE tab_imagens SET titulo=%s, idUser=%s WHERE idImagem=%s",
GetSQLValueString($_POST['titulo'], "text"),
GetSQLValueString($_POST['idUser'], "text"),
GetSQLValueString($_POST['idImagem'], "int"));
mysql_select_db($database_ligar, $ligar);
$Result1 = mysql_query($updateSQL, $ligar) or die(mysql_error());
$updateGoTo = "verImagensSlide.php";
if (isset($_SERVER['QUERY_STRING'])) {
$updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
$updateGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $updateGoTo));
}
如果您在上傳之前未在中選擇圖片,是否會有$ _FILES ['imagem'] [...]'的值?或換句話說,它不會拋出一個錯誤? – Martin
使用條件語句構建您的sql,只添加非空變量的字段/值。如果沒有錯誤,只移動上傳的文件,請參閱手冊。 – jeroen
嗨馬丁,沒有沒有錯誤,它只是刪除了以前的圖像,我想保留以前的圖像,當我按下提交時,文件空間是空的。 –