【问题标题】:How to retrieve images from a dynamic folder inside databse? in PHP如何从数据库内的动态文件夹中检索图像?在 PHP 中
【发布时间】:2013-10-31 20:09:34
【问题描述】:

我是 PHP 新手,我是学生。 我正在为在线酒店网站做我的项目,我必须在其中创建一个用于管理控制的后端和一个前端。 我已经创建了几乎所有东西,但是从数据库中动态添加的文件夹中检索图像几乎没有问题。 我有一个名为 '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' /> ";
}  ?>

【问题讨论】:

  • 你能说清楚你的目录结构吗?

标签: php directory


【解决方案1】:

如果我理解正确,您想从数据库中检索酒店 ID 列表并显示相应的图像。所以首先,你必须连接到你的数据库。假设它是一个 MYSQL 数据库,你应该这样做:

编辑:添加了一些基于 cmets 的调试信息。

<?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::query documentation

sort 函数采用可选的第二个参数,您可以使用该参数指定您希望如何对数组进行排序(按数字、字母顺序等)。有关详细信息,请参阅sort documentation

【讨论】:

  • 尊敬的大师:Chinnu R!我希望你能理解我的问题。我确实按照您所说的尝试过,但是,再次得到相同的结果。我无法给出固定的hotel_id,因为我必须连续打印数百家酒店以及来自(动态添加的文件夹)数据库的相关图片。你想让我把我的数据库也发给你吗?这些是我的数据库中的字段:hotel_id city_id country_id name photo1 photo2 photo3 photo4 photo5 hotel_address phone1 phone2 phone3 phone4 contact_email room_description area_description travel_description food_description rates_added(文件夹使用名称和hotel_address 字段创建
  • 您是想评论我的答案,还是评论 Chinnu R 给出的答案?
  • 感谢您的支持,但我有以下错误:注意:未定义的属性:C:\wamp\www\swaminarayant\hotel_frontend\index.php 中的 mysqli_result::$fetch_field 在第 218 行使用: 上面的代码。作为
  • query("SELECT hotel_id FROM hotel"); $directory = "../administrator/images/hotels/"; while ($id = $result->fetch_field) { ?>
  • fetch_field() 应该是一个方法,而不是一个属性。我已经相应地编辑了答案。
猜你喜欢
  • 2016-09-19
  • 2012-11-12
  • 1970-01-01
  • 2014-03-02
  • 2021-11-03
  • 2015-05-15
  • 1970-01-01
  • 2016-10-17
相关资源
最近更新 更多