如果存在则显示图像字符串,如果字段为空则显示默认图像

Posted

技术标签:

【中文标题】如果存在则显示图像字符串,如果字段为空则显示默认图像【英文标题】:Show a string of images if present or default image if field empty 【发布时间】:2013-05-27 07:32:02 【问题描述】:

与往常一样,我的 php 遇到了问题 :( 我对此还是很陌生,我希望它最终会变得更容易......

这让我很头疼,希望有人能帮忙。

我正在尝试从数据库列中提取一串图像。如果图像存在,它们将被显示,否则默认的“无图像”图像以相同的格式显示。

甚至不确定我是否完全正确。数据库列/行中可以有多个值吗?这是一个数组吗?

这是我目前的代码...

$images_array = "SELECT images FROM properties WHERE property = '".$property."' "; // set images query 
$images = mysql_query($images_array); // run images_array query save as images
$images_count = mysql_num_rows($images);
if ($images_count > 0) 
while ($image = mysql_fetch_array($images)) 
echo'<div id="property_images">
<div id="property_main_image"><img  src="./images/properties/'.$image['images'].'" /></div>
<div id="property_sub_image"><img  src="./images/properties/'.$image['images'].'" /></div>
<div id="property_sub_image"><img  src="./images/properties/'.$image['images'].'" /></div>
</div>';

 else 
echo'<div id="property_images">
<div id="property_main_image"><img  src="./images/properties/no_image" /></div>
<div id="property_sub_image"><img  src="./images/properties/no_image" /></div>
<div id="property_sub_image"><img  src="./images/properties/no_image" /></div>
</div>';

当图像存在于数据库中时,它会正确显示图像,否则会显示 。这让我认为代码总是将 $images 视为 TRUE... ??

我可以通过这种方式显示多个图像,通过保存多个文件名是相同的 MySQL 值并获取数组/字符串???

提前感谢您的帮助:)

根据要求我的数据库结构...

| properties
| ID | address | area | postcode | phone | mobile | tenancy | type | available | deposit | rent | description | bedrooms | bathrooms | communal | kitchens | parking | garden | broadband | property | vacancy | images |

【问题讨论】:

您能告诉我们您的属性表中的结构吗? @MichaelKunst 请查看编辑。 【参考方案1】:

当您执行查询时,$image 变量始终返回 TRUE。

所以我的建议是做到以下几点:

$count = mysql_num_rows($query);
if ($count > 0 ) 
....

更新:

$images = mysql_query($images_array); // run images_array query save as images
$images_count = mysql_num_rows($images);

while ($image = mysql_fetch_array($images)) 
    $lettercount = strlen(str_replace(' ', '', $images));
    if($lettercount > 0) 
        /* show the images */
    else
        /* show the default images */
    

更新 2:

$images_array = "SELECT * FROM properties WHERE property = '".$property."' "; // set images query 
$images = mysql_query($images_array); // run images_array query save as images

while ($row = mysql_fetch_assoc($images))  
        $check_string_lenght = strlen(str_replace(' ', '', $row['images']));
    if($check_string_lenght > 0) 
    /* or if($row['images'] != '')  */
       echo'<div id="property_images">
       <div id="property_main_image"><img  src="./images/properties/'.$row['images'].'" /></div>
       <div id="property_sub_image"><img  src="./images/properties/'.$row['images'].'" /></div>
       <div id="property_sub_image"><img  src="./images/properties/'.$row['images'].'" /></div>
       </div>';
 else 
       echo'<div id="property_images">
       <div id="property_main_image"><img  src="./images/properties/no_image" /></div>
       <div id="property_sub_image"><img  src="./images/properties/no_image" /></div>
       <div id="property_sub_image"><img  src="./images/properties/no_image" /></div>
       </div>';
    


【讨论】:

谢谢,我已经对上面的代码进行了编辑。但我仍然遇到同样的问题(如果存在图像加载,如果图像不存在则错误的替代文本)@Diego Pucci 这很奇怪,你能提供你的html输出吗? 抱歉,我还是新手,我的 HTML 输出是什么意思? @Diego Pucci 当您运行 PHP 文件时,您的 echo 语句将输出 HTML。我需要看看你的代码在处理后给出的实际 HTML 输出是什么 我在三个&lt;div&gt;s 的样式位置中将&lt;img alt="Property Image"&gt; 值显示为“属性图像”三次。【参考方案2】:
define('NO_IMAGE', '/path/to/no/img'); // path to "noimage" image
$images_array = "SELECT CASE WHEN images IS NULL or images = '' THEN '".NO_IMAGE."' ELSE images END FROM properties WHERE property = '".$property."' ";

如果 images 字段值为 null 或空字符串,则 images value = NO_IMAGE value,否则为可用值。

【讨论】:

你应该在你的答案中添加更多,解释一下。

以上是关于如果存在则显示图像字符串,如果字段为空则显示默认图像的主要内容,如果未能解决你的问题,请参考以下文章

Angular js - 如果 ng-repeat 为空则显示消息

java 如果recyclerview为空,则显示默认图像或文本

Swift:如果为空则隐藏标签

如果 Flutter 中的 Image Picker 未选择,则显示默认图像

怎么写一个SQL语句查询 我的字段是float型的, 如何让它如果是空则显示空 如果是0则显示出来为 0

当 listView 为空时,setEmptyView 不显示图像