文件丢失时显示特定图像
Display specific image when a file is missing
我是编码初学者,需要一些帮助。我有一个代码根据 MySQL table 列中的特定值显示图像,如下所示:
//Show last 10 added by ID
$sql = "(SELECT * FROM food_tbl ORDER BY food_id DESC LIMIT 10) ORDER BY food_id ASC;";
$result = $conn->query($sql);
$pathImg = "/images/";
if ($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
$pathFile = $pathImg . $row['food_name'] . ".jpg";
echo '<img src="' . $pathFile . '">';
}
}
这输出,例如,banana.jpg ...问题是...我想在文件实际上不存在时显示标准图像,例如,如果我没有在我的“/images/”目录中名为 banana.jpg 的文件会显示 unknownfood.jpg 文件(当然确实会在该目录中)。
现在,事情是这样的,我已经在这里找到了一些东西:--- Display specific image depending on specific text in MySQL table using PHP
...最后我尝试了这个:
while($row = $result->fetch_assoc()) {
$pathFile = $pathImg . $row['food_name'] . ".jpg";
if (file_exists($pathFile)) {
echo '<img src="' . $pathFile . '">';
} else {
$pathFile = $pathImg . "unknownfood.jpg";
echo '<img src="' . $pathFile . '">';
}
}
现在,这样做的目的是完全忽略实际存在的文件。例如,如果我尝试显示 banana.jpg,它将改为显示 unknownfood.jpg.
我很确定这是我很容易搞砸的事情,或者是我没有按预期方式使用的事情。感谢您的帮助!
file_exists
将检查文件系统路径,例如 /home/www/images/banana.jpg
.
当您显示 img
标签时,它会从文档根目录中提取图像,domain.com/images/banana.jpg
。
找到正确的文件系统路径并将其传递给file_exists
,它将return正确答案。
现在它总是 return false 所以你最终会进入 if
子句的 else
部分。
当您在 PHP 时,使用 file_exists($pathFile)
是服务器上相对于文档根目录(可能是 /public_html/youruser
)的路径,而 HTML 从基本文件夹(脱离域,/
)读取。
这意味着您的代码必须如下所示
if (file_exists($_SERVER['DOCUMENT_ROOT'].$pathFile))
我是编码初学者,需要一些帮助。我有一个代码根据 MySQL table 列中的特定值显示图像,如下所示:
//Show last 10 added by ID
$sql = "(SELECT * FROM food_tbl ORDER BY food_id DESC LIMIT 10) ORDER BY food_id ASC;";
$result = $conn->query($sql);
$pathImg = "/images/";
if ($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
$pathFile = $pathImg . $row['food_name'] . ".jpg";
echo '<img src="' . $pathFile . '">';
}
}
这输出,例如,banana.jpg ...问题是...我想在文件实际上不存在时显示标准图像,例如,如果我没有在我的“/images/”目录中名为 banana.jpg 的文件会显示 unknownfood.jpg 文件(当然确实会在该目录中)。
现在,事情是这样的,我已经在这里找到了一些东西:--- Display specific image depending on specific text in MySQL table using PHP
...最后我尝试了这个:
while($row = $result->fetch_assoc()) {
$pathFile = $pathImg . $row['food_name'] . ".jpg";
if (file_exists($pathFile)) {
echo '<img src="' . $pathFile . '">';
} else {
$pathFile = $pathImg . "unknownfood.jpg";
echo '<img src="' . $pathFile . '">';
}
}
现在,这样做的目的是完全忽略实际存在的文件。例如,如果我尝试显示 banana.jpg,它将改为显示 unknownfood.jpg.
我很确定这是我很容易搞砸的事情,或者是我没有按预期方式使用的事情。感谢您的帮助!
file_exists
将检查文件系统路径,例如 /home/www/images/banana.jpg
.
当您显示 img
标签时,它会从文档根目录中提取图像,domain.com/images/banana.jpg
。
找到正确的文件系统路径并将其传递给file_exists
,它将return正确答案。
现在它总是 return false 所以你最终会进入 if
子句的 else
部分。
当您在 PHP 时,使用 file_exists($pathFile)
是服务器上相对于文档根目录(可能是 /public_html/youruser
)的路径,而 HTML 从基本文件夹(脱离域,/
)读取。
这意味着您的代码必须如下所示
if (file_exists($_SERVER['DOCUMENT_ROOT'].$pathFile))