2014-09-28 55 views
0

我試圖在真正簡單的內容管理系統中更新內容。這個想法是用戶可以登錄和修改內容。用圖像更新Mysql內容

我遇到的問題是如果用戶登錄,更改新聞部分中的內容,但不更改圖像,則在保存圖像文件時不會寫入任何內容。如何進行內容更新,但是如果用戶不更改圖像,則會單獨保留此部分,並且不會寫入圖像。

我以前曾嘗試保存舊圖像文件名,並使用它來代替,但由於某些原因,它似乎總是使用新的文件圖像名稱,即使這是空白。

我想我需要這樣的東西:

if(image is not changed){ 
    $filename = uploaded image; 
}else{ 
    $filename = old file name; 

我只是不知道該怎麼辦了第一個if語句,它似乎一直檢測圖像的變化,即使變化是NULL或某種什麼都沒有。

我寫了下面的代碼,希望能夠理解它。

if (isset($_POST['update'])) { 
$e_id = sanitizestring($_POST['edit_id']); 
$title = sanitizestring($_POST['newstitle']); 
$date = sanitizestring($_POST['newsdate']); 
$content = sanitizestring($_POST['newscontent']);; 
if ($_FILES['news_img']['error'] == 0) { 
    move_uploaded_file($_FILES['news_img']['tmp_name'], "uploads/news/".$_FILES['news_img']['name']); 
    $filename = $_FILES['news_img']['name']; 
} 

    $edit_q =' 
    UPDATE 
    `news` 
    SET 
    `news_title` = ?, 
    `news_date` = ?, 
    `news_article` = ?, 
    `news_img` =? 
    WHERE 
    `news_id` = ? 
'; 

$edit_stmt = $pdo->prepare($edit_q); 
if($edit_stmt -> execute(array($title, $date, $content, $link, $linktext, $filename, $e_id))){ 
    $successMsg = 'Edit successful'; 
}else{ 
    $failMsg = 'Unable to edit as this time'; 
    echo $failMsg; 
}// end if edit successful 
}// end if update is set 

回答

1

你的問題是,當你沒有圖像上傳和文件名設置爲變量時,$ filename是空的。所以,你可以添加更多的if語句前:

if($edit_stmt -> execute(array($title, $date, $content, $link, $linktext, $filename, $e_id))){ 
    $successMsg = 'Edit successful'; 
}else{ 
    $failMsg = 'Unable to edit as this time'; 

在哪裏,你應該不帶文件準備語句:

if ($empty($filename)) 
{ 
if($edit_stmt -> execute(array($title, $date, $content, $link, $linktext, $filename, $e_id))){ 
    $successMsg = 'Edit successful'; 
}else{ 
    $failMsg = 'Unable to edit as this time'; 
} 
else 
{ 
    if($edit_stmt_no_filename -> execute(array($title, $date, $content, $link, $linktext, $e_id))){ 
    $successMsg = 'Edit successful'; 
}else{ 
    $failMsg = 'Unable to edit as this time'; 
} 
+0

'empty()'應該看起來那個。謝謝您的幫助! – ThePagan 2014-09-29 09:30:03

0

在極其簡單的答案是:你不應該改變news_img如果沒有新的上傳的文件:

if($filename) 
{ 
$edit_q =' 
    UPDATE 
    `news` 
    SET 
    `news_title` = ?, 
    `news_date` = ?, 
    `news_article` = ?, 
    `news_img` =? 
    WHERE 
    `news_id` = ? 
'; 
} 
else 
{ 
$edit_q =' 
    UPDATE 
    `news` 
    SET 
    `news_title` = ?, 
    `news_date` = ?, 
    `news_article` = ? 
    WHERE 
    `news_id` = ? 
'; 
} 

當然你需要移動執行上述聲明中,如果塊&提供變元的適當數量爲它。