2014-09-28 2 views
0

실제 간단한 컨텐츠 관리 시스템에서 컨텐츠를 업데이트하려고합니다. 사용자가 로그인하여 콘텐츠를 수정할 수 있다는 생각입니다.이미지로 MySQL 컨텐츠 업데이트하기

사용자가 로그인하여 뉴스 섹션의 내용을 변경했지만 이미지 파일을 저장하지 않아도 이미지가 변경되지 않으면 문제가 발생합니다. 콘텐츠를 어떻게 업데이트합니까? 사용자가 이미지를 변경하지 않으면이 섹션 만 남겨두고 이미지를 덮어 쓰지 않습니다.

이전에는 이전 이미지 파일 이름을 저장하고 대신 사용했지만 어떤 이유로이 파일이 비어 있어도 항상 새 파일 이미지 이름을 사용하는 것 같습니다. 난 그냥 문, 변화가 NULL 또는 어떤 경우에도 항상 이미지의 변화를 감지하는 것 같다 경우 첫 번째 방법을 모르는

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

:

는 내가 뭔가를해야 할 것 같아요 아무것도.

나는 그것을 잘하면 아래 코드를 작성했습니다.

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

이미지가 uplaoded가 아니며 파일 이름이 var로 설정되어 있으면 $ 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'; 

당신은 파일 이름없이 문을 준비해야합니다 경우 : 문 앞에하는 경우 그래서 당신은 하나 더 추가 할 수 있습니다

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

0

매우 간단의 대답 : 새로운가없는 경우 news_img을 변경하지 마십시오 업로드 된 파일 : 당신이 블록은 argumen의 적절한 수를 제공 & 경우 내부에 위의 문을 실행으로 이동해야합니다 물론

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` = ? 
'; 
} 

그것을위한 TS.

관련 문제