我有一个问题从我的新闻编辑我的图像库(即使我不想编辑我的图像库,我从我的文件夹中删除我的图像)

时间:2014-06-20 15:31:49

标签: php

我有一个表“新闻”和一个“画廊”。

在我的表“gallery”中,我有一个字段“news_id”,因为当我在图库表中插入图像时,我插入了属于新闻的图像。

我有一个文件“news-create.php”,我有一个表格要求标题,内容然后我有一个输入文件来选择图库的图像(这个输入文件是可选的,不需要)。

我用成功创造新闻,我们没有图片库,我正确地创造新闻。

但是现在,为了在我的“news-edit.php”中编辑新闻,我在更新图片库时遇到了一个问题。

首先,在我的“news-index.php”中,我列出了所有新闻,每个新闻中都有一个链接,当我点击每个新闻时,我会传递给我点击新闻的网址: 现在我得到了这个ID:

$newsId = $_GET['news_id'];

然后我有我的if来控制我的表单是否被提交:

if(isset($_POST['sendForm'])){
  $f['title'] = $_POST['title'];
  $f['content'] = $_POST['content'];
}

然后我有更新:

$updNot = $pdo->prepare("UPDATE news set title=?, content = ? WHERE id_news = ?");
$updNot->bindParam(1,$f['title']);
$updNot->bindParam(2,$f['content']);
$updNot->bindParam(3,$newsId);
$updNot->execute();

然后,如果我的更新返回成功,我想验证是否选择了我的选择图库图像的字段来选择图像。

如果没有选中并且我的新闻已经有图片库,我想保留我的实际图片库。

如果我的新闻没有图片库,并且在我的编辑表单中我不为我的图库选择任何图像,我不想插入任何图像。

但如果我为图库选择图像,我想验证我的图库中是否已存在图像,如果存在我想删除它们的文件夹,然后我想上传到我的文件夹,我的更新在我的画廊表与新图像。

问题是,当我不选择任何图像时我总是输入我的if($_FILES['gb']['tmp_name']),然后我从我的文件夹中删除我的图像。所以,当我在我的新闻和编辑新闻页面中已经有一个图像库时,我不会选择图库中的任何图像,我的图像正从我的文件夹中删除,我不想要那样。

我只想从我的文件夹中删除图片,当我的编辑新闻页面中的用户从我的图库中选择新图像时,首先我从我的文件夹中删除相对于我正在编辑的新闻的图像,以及然后我用新图像在库表中上传和更新。

有人可以帮我解决这个问题吗?我在这里几个小时,我没有找到任何解决方案,因为当我做我的如果验证用户是否选择了新图像,但即使用户不选择任何图像我进入我的if,似乎我总是选择图像当我不选择它时......

所以,当我的更新返回成功时,我有这个代码:

if($updNot->rowCount() >=1){
 if($_FILES['gb']['tmp_name']){ 
    $readGall = $pdo->prepare("SELECT * from gallery WHERE news_id = ?"); 
    $readGall->bindParam(1, $nesId); 
    $readGall->execute();
    if($readGall->rowCount()>=1){
    while ($resultG = $readGall->fetch(PDO::FETCH_ASSOC)){
     if(file_exists($path.$resultGall['img']) && !is_dir($path.$resultGall['img'])){
         unlink($path.$resultGall['img']);
     }
     //here I will do my upload and my update on gallery table when I can fix this problem
    }
  } 
}

1 个答案:

答案 0 :(得分:1)

您从不打扰检查文件是否实际上传。你只是盲目地处理上传。因此,如果没有上传任何内容,或者上传失败,则会使用无效/不正确的“上传”信息删除数据库。

至少你应该

if($_FILES['gb']['error'] === UPLOAD_ERR_OK) {
   ... file was successfully uploaded
}