如何显示默认图像?

时间:2011-05-31 12:30:07

标签: php css

如果用户没有上传图片,我试图获取默认图片,但我总是得到用户上传的图片,默认情况不会显示。

这是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 } ?>

7 个答案:

答案 0 :(得分:1)

检查数据库中是否有图片(假设当没有上传图片时,DB返回NULL) 如果测试为真(!= NULL)则显示该图片 else(== NULL)显示默认值

同样的问题还没有回答? PHP If else statement that a database record is empty it will display a default picture

  • 谢谢我现在知道如何在这个网站上搜索。我搜索了“默认图片[php]”

问题在我发布答案前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