2014-09-28 98 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` = ? 
'; 
} 

当然你需要移动执行上述声明中,如果块&提供变元的适当数量为它。