如果用户没有上传图片,我试图获取默认图片,但我总是得到用户上传的图片,默认情况不会显示。
这是SQL查询代码和CSS部分。
$query="INSERT INTO tbl_images (f_naam) VALUES ('$filename')";
if($result=mysql_query($query) or die ('query fout') ){
?>
<img src="data/<?php echo $filename; ?>" width="220" />
<?php }else{ ?>
<img src="http://www.istockphoto.com/file_thumbview_approve/12716227/2/istockphoto_12716227-close-up-of-a-cute-young-couple-smiling-togetherjpg" width="220" />
</div>
<?php } ?>
答案 0 :(得分:1)
检查数据库中是否有图片(假设当没有上传图片时,DB返回NULL) 如果测试为真(!= NULL)则显示该图片 else(== NULL)显示默认值
同样的问题还没有回答? PHP If else statement that a database record is empty it will display a default picture
问题在我发布答案前14秒编辑 - 现在它显示实际代码,然后才显示
答案 1 :(得分:1)
我不确定这是否是问题但是我怀疑即使$filename
为空,查询也会成功运行,你会进入试图显示上传图像的部分。因此,您可能需要检查$filename
并确保在运行查询之前有一些内容。
我可能会这样做,但未经测试的代码。
<?php
$picture_to_show = "http://www.istockphoto.com/file_thumbview_approve/12716227/2/istockphoto_12716227-close-up-of-a-cute-young-couple-smiling-togetherjpg";
if($filename){
$query="INSERT INTO tbl_images (f_naam) VALUES ('$filename')";
if($result=mysql_query($query) ){
$picture_to_show = "data/".$filename;
}
}
?>
<img src="<?php echo $picture_to_show; ?>" width="220" />
答案 2 :(得分:1)
不确定这是问题所在,但您在img src=
<img src=http://www.istockphoto.com/file_thumbview_approve/12716227/2/istockphoto_12716227-close-up-of-a-cute-young-couple-smiling-togetherjpg" width="220" />
答案 3 :(得分:1)
您错过了默认图片的src=
属性的开头双引号:
<img src=http://www.istockphoto.com/file_thumbview_approve/12716227/2/istockphoto_12716227-close-up-of-a-cute-young-couple-smiling-togetherjpg" width="220" />
----^^^----
应该是
<img src="http://www.istockphoto.com/file_thumbview_approve/12716227/2/istockphoto_12716227-close-up-of-a-cute-young-couple-smiling-togetherjpg" width="220" />
答案 4 :(得分:1)
你的逻辑需要一些改进。除非您的查询在语法错误或数据违反约束,否则mysql_query调用将始终返回NON-false。如果你想处理一个没有文件上传的案例,试试这个:
if ($_FILES['name_of_upload_field'] === UPLOAD_ERR_OK) {
... insert into db ...
... display uploaded image...
} else {
... there was no upload, or upload failed
... display default image ...
}
简单地进行盲目插入并尝试检查它是否失败并非如此。
假设您的示例中的$filename
是从$ _FILES数组中提取的,那么您的版本将始终尝试显示默认图像。即使没有上传文件,$filename
也会显示为空白,插入查询将为
INSERT INTO tbl_images (f_naam) VALUES ('')
总是会成功的。 mysql_query()
将返回一个语句句柄,该句柄不是假的,因此if()
检查成功,并且您尝试显示“已上传”的图像。
答案 5 :(得分:1)
第2行 -
if($result=mysql_query($query) or die ('query fout') )
对我来说很奇怪。条件是“查询成功或我们终止脚本”意味着您不会获得else
- 此条件的一部分 - 要么满足条件要么终止脚本。
答案 6 :(得分:1)
让我开始说这个'答案'并不是为了得罪你,但你在问题中写的代码有点乱。首先,你插入什么?你从来没有将$ filename设置为任何值,因此插入没有任何意义。
其次,您正在使用MySQL插入语句执行某种if-then-else语句。除非数据库无法访问或查询错误,否则此insert语句始终返回'true'。发生这种情况是因为如果插入失败,MySQL INSERT语句只返回false。但是,即使是空插入(如果$ filename为空)也会成功,从而显示用户尝试上传的(可能不可用)照片。
第三,如果查询出错(MySQL注入或数据库不可用),die()语句将在你的情况下超越。因此,您永远无法访问代码的'else'语句 - 因此永远不会显示默认图像。
最后,您的脚本的HTML部分中存在一些错误。确保在继续处理此脚本之前修复这些问题。
正确的代码应如下所示:
<div class="filesize">JPG minimaal 800x60 pixels max. 2Mb</div>
<a href="" class="submit" title="Upload" name="upload"><span>Upload</span></a>
<div class="customerUploadPicture">
<?php
$result = mysql_query("SELECT `f_naam` FROM tbl_images WHERE `f_user` = 'ID'");
$data = mysql_fetch_array($result);
if($data['f_name'] != '') {
?>
<img src="data/<?php echo $data['f_naam']; ?>" width="220" />
<?php }else{ ?>
<img src="DEFAULT PHOTO" width="220" />
<?php } ?>
</div>
如果您确实要上传照片,请查看this TiZag tutorial。