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

3

我一如既往地在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 alt="Property Image" src="./images/properties/'.$image['images'].'" /></div>
<div id="property_sub_image"><img alt="Property Image" src="./images/properties/'.$image['images'].'" /></div>
<div id="property_sub_image"><img alt="Property Image" src="./images/properties/'.$image['images'].'" /></div>
</div>';
}
} else {
echo'<div id="property_images">
<div id="property_main_image"><img alt="No Property Image" src="./images/properties/no_image" /></div>
<div id="property_sub_image"><img alt="No Property Image" src="./images/properties/no_image" /></div>
<div id="property_sub_image"><img alt="No Property Image" src="./images/properties/no_image" /></div>
</div>';
}

如果数据库中存在图片,它可以正确地显示图片;否则,将显示alt="Property Image"。这让我想到代码始终将$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 |

你能展示一下你的属性表结构吗? - Michael Kunst
2个回答

2
$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 alt="Property Image" src="./images/properties/'.$row['images'].'" /></div>
       <div id="property_sub_image"><img alt="Property Image" src="./images/properties/'.$row['images'].'" /></div>
       <div id="property_sub_image"><img alt="Property Image" src="./images/properties/'.$row['images'].'" /></div>
       </div>';
} else {
       echo'<div id="property_images">
       <div id="property_main_image"><img alt="No Property Image" src="./images/properties/no_image" /></div>
       <div id="property_sub_image"><img alt="No Property Image" src="./images/properties/no_image" /></div>
       <div id="property_sub_image"><img alt="No Property Image" src="./images/properties/no_image" /></div>
       </div>';
    }

}

抱歉,我还是新手,您说的HTML输出是什么意思?@Diego Pucci - Simon Knight
当您运行PHP文件时,您的echo语句将输出HTML。我需要看到您的代码在处理后实际生成的HTML输出是什么。 - user2426701
由于相关数据库字段中没有图像,因此它显示的是alt值,这很好,但它显示的是错误的alt值。 - Simon Knight
我更感兴趣的是src =“”参数。你在那里得到什么?只是一个空格吗? - user2426701
很奇怪。第一段代码实际上是检查数据库中是否有结果,而第二段代码则是检查结果的长度以避免空结果。所以肯定还有其他问题。最后,请尝试我的最新更新。但我不确定它是否完全符合您的需求,但或许可以帮助您解决问题。请告诉我这次是否有效:D - user2426701
显示剩余8条评论

1
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."' ";

如果图像字段的值为空或空字符串,则图像值为NO_IMAGE值,否则为可用值。

你应该在回答中添加更多内容,稍微解释一下。 - vidit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接