从php中的文件夹中获取图像列表并填充图像src标签

时间:2012-03-20 16:51:58

标签: php html image

我正在尝试编写一个简单的(对某些人来说)脚本,该脚本将在上传的文件夹中获取图像,然后在适当的位置填充我的html文档和文件名。 我已经成功地将文件名上传和写入数据库(不确定是否需要该部分)。 希望如何最好地实现这一目标。到目前为止,我已经尝试了几件但没有运气。

<?php
 $hote = 'localhost';
 $base = '*****';
 $user = '*****';
 $pass = 'testuser2012';
 $cnx = mysql_connect ($hote, $user, $pass) or die(mysql_error ());
 $ret = mysql_select_db ($base) or die (mysql_error ());
 $image_id = mysql_real_escape_string($_GET['ID']);
 $sql = "SELECT image FROM image_upload WHERE ID ='$image_id'";
 $result = mysql_query($sql);
 $image = mysql_result($result, 0);

 header('Content-Type: text/html');
 echo '<img src="' . $image . '"/>';
 exit;
 ?>

但是,也许我应该解释完整的功能:我需要用户将他们的图像上传到他们的文件夹中,然后当调用PHP图像库时,用该文件夹中的那些所述图像填充它。 如果我从文件夹中读取文件列表,我不确定我是否正确处理它?或者将名称写入数据库并将其从那里拉出来...这就是我的问题所在 上面的代码是我试图使用的,虽然它将返回文件名,但它不会在标签中回显...不确定我的无能在哪里:)

我想填充的html如下:

<div class="slide">
                <div class="image-holder">
                   <img src="img/asoft_table.jpg" alt="" /> 
                </div>
                <div class="info">

                    <p>Morbi a tellus lorem, id scelerisque ligula. Maecenas vitae turpis et.</p>
                </div>
            </div>
            <div class="slide">
                <div class="image-holder">
                    <img src="img/soft_table.jpg" alt="" />
                </div>
                <div class="info">

                    <p>Sed semper, lorem ac lobortis bibendum, magna neque varius augue, vel accumsan.</p>
                </div>
            </div>
            <div class="slide">
                <div class="image-holder">
                    <img src="img/living_room2.jpg" alt="" />
                </div>

1 个答案:

答案 0 :(得分:1)

如果您只浏览一个目录,那么您的图像路径将是静态的。如果您的图像名称存储在数据库中,则可以简单地执行一个小查询,该查询输出文件名并附加静态路径。

$result = mysql_query("SELECT * FROM Images");

while($row = mysql_fetch_array($result)) {
  echo "<img src='/path/to/images/".$row['image_name']."'/>";
}

要分解这里到底发生了什么 - 本质上是一个MySQL查询存储在$result中。然后我创建一个while循环,循环遍历从MySQL查询返回的数组。这个数组看起来像这样:

  0 => 'id' => 1, 
       'file_name' => 'foo.jpg',
       'file_size' => '36.6 kb',
       'time_stamp' => '14/01/02',
  1 => 'id => 2,
       'file_name' => 'bar.jpg',
       'file_size' => '12.8 kb',
       'time_stamp' => '14/01/03'

对于每个索引,while将输出其嵌套数组。在这种情况下,它将是数据库行。然后,我想echo为每个数据库行输出一个图像标记,并将图像的名称附加到标记。

在HTML中,您为每个图像创建了一个元素块。因此,如果您有100张图像,则在静态页面上,您将不得不重复该HTML块100次。通过编程,您无需这样做。在我的示例中,MySQL将返回一个包含每个图像及其行的大array。因此,如果您有一张包含100张图片的表格,那么array将包含100个项目,因此您的while循环将会贯穿并打印出100次。遵循?

因此,使用您的HTML,您的代码将如下所示:

<? while($row = mysql_fetch_array($result)) ?>

<div class="slide">
  <div class="image-holder">
    <? echo "<img src='img/".$row['image_name']."' alt='' />"; ?>
  </div>
  <div class="info">
    <p>
      <? echo $row['image_description']; ?>
    </p>
  </div>
</div>

<? endwhile; ?>

因此,您可以看到创建一个HTML块,PHP将根据返回的变量循环并填充。

如果您想按日期/大小排序,可以在上传时确定这些变量,并将它们附加到数据库中的列。在表中包含时间戳和索引将极大地帮助从数据库的输出中进行排序。我会这样构建我的表:

+----+-----------+-----------+------------+
| id | file_name | file_size | time_stamp |
+----+-----------+-----------+------------+
| 1  | foo.jpg   |  36.6 kb  | 14/01/02   |
+----+-----------+-----------+------------+

尽管将文件信息存储在数据库中而不是遍历/解析目录可能是最好的选择,但您仍然可以查看此页面以获取有关目录方法和序列here的信息。

编辑:您还可以查看Tizag,其中包含有关学习PHP的全面教程和资源。

编辑:回答有关如何将信息放在正确位置的问题:这是一个涉及各种答案的非常广泛的问题。简而言之 - 这取决于您想要如何订购它们以及您希望它们去哪里。您可以使用MySQL queries以特定方式对输出数据进行排序。您还可以使用inclusion方法在您的网站上分解和订购数据。