-1

私はコーディングの初心者で、少し助けが必要です。次のように、MySQL テーブルの列の特定の値に従って画像を表示するコードがあります。

//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 を出力します...問題は...ファイルが実際に存在しない場合に標準の画像を表示したいのですが、バナナ.jpg というファイルがない場合です。私の「/images/」ディレクトリでは、代わりにunknownfood.jpgファイルが表示されます(もちろん、実際にはそのディレクトリ内にあります)。

さて、ここにあります、私はすでにここでいくつかのものを見つけました: --- PHP を使用して MySQL テーブルの特定のテキストに応じて特定の画像を表示します

...そして私はこれを試してみました:

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 が表示されます。

私が台無しにしているのは本当に簡単なものか、意図した方法で使用していないものだと確信しています。助けてくれてありがとう!

4

2 に答える 2

1

PHP を使用している場合、 usingfile_exists($pathFile)はドキュメント ルート ( の可能性があります) に対するサーバー上のパスで/public_html/youruserあり、HTML は base-folder (ドメイン外の/) から読み取ります。

これは、コードが次のように見える必要があることを意味します

if (file_exists($_SERVER['DOCUMENT_ROOT'].$pathFile))
于 2015-11-25T14:25:48.033 に答える
0

file_existsたとえば、ファイルシステムのパスをチェックします/home/www/images/banana.jpg

タグを表示するimgと、ドキュメント ルートから画像が取得されdomain.com/images/banana.jpgます。

正しいファイル システム パスを見つけて に渡すとfile_exists、正しい答えが返されます。

現時点では、常に false が返されるため、句のelse一部になってしまいます。if

于 2015-11-25T14:25:40.980 に答える