0

私はPHPが初めてで、学生です。私は Online Hotel Web サイトのプロジェクトを行っています。このプロジェクトでは、管理者制御用のバックエンドとフロントエンドを作成する必要があります。ほとんどすべてを作成しましたが、データベースから動的に追加されたフォルダーから画像を取得するのにほとんど問題はありません。多くのフィールドを含む 'hotel' という名前のテーブルがあります。新しく追加されたホテルに応じて画像をアップロードするためにphpを実行しました。すべての画像は、追加された各ホテルに新しいフォルダーを作成してデータベースに保存されます。問題は、ウェブサイトのフロントエンドでこれらの画像を取得したいときに、画像がランダムに取得され、特定のホテルや関連するホテルに対して適切な順序で取得されないことです。場合によっては、関連するディレクトリから厳密にプルする必要があります。

データベースに画像をアップロードするとき, すべての画像は次のように保存されます: Hotel Fewa Holiday Inn, Lakeside-6/double_dlx.jpg (ここで、Hotel Fewa Holiday Inn と Lakeside-6 はテーブル (ホテル) フィールド名, double_dlx .jpgはファイル名です)

私のコードは次のとおりです。わかっています。間違いがあります。誰かが私をここから助けてくれるなら、感謝します。[このコードは、サブディレクトリからランダムに画像を取得します。実際には、関連するホテルの画像が必要です]

<?php

$dir = '/*/';
$directory = "../administrator/images/hotels/*/";
$images = glob("" . $directory . "*.jpg");
$imgs = '';
foreach($images as $image){ $imgs[] = "$image"; }
shuffle($imgs);
$imgs = array_slice($imgs, 0, 1);
//display images
foreach ($imgs as $img) {
echo "<img src='$img' height='150' width='150' /> ";
}  ?>
4

1 に答える 1

0

私が正しく理解している場合、データベースからホテル ID のリストを取得し、対応する画像を表示する必要があります。まず、データベースに接続する必要があります。MYSQL データベースであると仮定すると、次のようにする必要があります。

編集:コメントに基づいてデバッグ情報を追加しました。

<?php
$mysqli = new mysqli('localhost', 'root', '', 'swaminarayan');

/* check connection */
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

/* Select queries return a resultset */
if ($result = $mysqli->query("SELECT name, hotel_address FROM hotel")) {
    /* Print number of rows returned */
    printf("Select returned %d rows.\n", $result->num_rows);
    $directory = "../administrator/images/hotels/";
    while ($row = $result->fetch_assoc()) {            
        $search_dir = "$directory/{$row['name']}{$row['hotel_address']}";
        if ($path = realpath($search_dir)) {
            echo "Globbing for images in $path\n";
        }
        else {
            echo "Current working directory: " . getcwd();
        }
        $images = glob("$search_dir/*.jpg");
        if (empty($images)) {
            echo "No images found\n";
        }
        sort($images);
        //display images
        foreach ($images as $img) {
            echo "<img src='$img' height='150' width='150' /> ";
        }
    }

    /* free result set */
    $result->close();
}
$mysqli->close();
?>

mysqli::クエリのドキュメント

このsort関数はオプションの 2 番目の引数を取り、配列の並べ替え方法 (数値順、アルファベット順など) を指定できます。詳細については、並べ替えのドキュメントを参照してください。

于 2013-10-28T13:22:48.037 に答える