我有一个表“新闻”和一个“画廊”。
在我的表“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
}
}
}
答案 0 :(得分:1)
您从不打扰检查文件是否实际上传。你只是盲目地处理上传。因此,如果没有上传任何内容,或者上传失败,则会使用无效/不正确的“上传”信息删除数据库。
至少你应该
if($_FILES['gb']['error'] === UPLOAD_ERR_OK) {
... file was successfully uploaded
}