【问题标题】:Web, SQL: display random images despite file name, load images from folderWeb,SQL:尽管文件名显示随机图像,从文件夹加载图像
【发布时间】:2011-09-09 00:47:44
【问题描述】:

我希望网页在加载时显示多个随机图像。我已经想到了几种解决方案,但我真的希望能够将图像转储到文件夹中而不重命名它们,并且网页将从文件夹中的这些图像中选择并显示它们

我可以想象一个 PHP 解决方案会显示文件夹中的随机图像,但它需要查找某些名称。

所以我的下一步是创建一个 SQL 数据库,其中每个图像都有一个键,查询会随机选择 10 个键 - 与它们关联的图像然后将被传递到文档将加载元素的数组中的。

但现在我想我需要知道如何通过读取文件夹来自动填充 SQL 数据库?

感谢您的见解,如果我不必重新发明轮子就更好了

【问题讨论】:

    标签: php sql css image random


    【解决方案1】:

    您可以执行以下操作。
    1. 从您希望页面加载图像的位置读取完整的目录
    2.将图像名称存储在数组中
    3. 现在使用从 1 到数组大小的随机函数生成一个数字
    4. 将生成的数字作为数组的键,并使用该图像名称来放置图像。

    【讨论】:

      【解决方案2】:

      应该这样做:

      function your_dir ($directory) 
      
      {
      
      $results = array();
      
      $handler = opendir($directory);
      
      while ($file = readdir($handler)) {
      
        if ($file != "." && $file != "..") {
      
          $results[] = $file;
      
          //or sql query for each file
      
          $sql = mysql_query("SELECT * FROM your_table WHERE your_file = '".$file."'");
          if(mysql_num_rows !== 0){
      
          //your query...
      
          }
      
          //
      
        }
      
      
      }
      
      closedir($handler);
      
      return $results;
      
      }
      
      
      $directory = '/path/to/your/directory';
      
      your_dir($directory);
      

      从 db 中选择现有文件可能会更好,首先将它们放入一个数组中并排除它们,而不是检查每个文件。

      【讨论】:

      • 我应该遵循这条SQL路线,因为图像需要一个缩略图来对应
      • 您可以使用此循环同时创建缩略图,这完全取决于您的文件夹中有/将有多少个文件
      • 我实现的方法只使用了 PHP。我使用 glob 函数来获取数组中列出的文件,然后我打乱了数组并拼接了它。每当我调用图像时,我也可以将其称为相应的缩略图文件,因为它遵循命名约定。我制作了一个附加函数来替换子字符串并将该新字符串作为缩略图文件返回。
      【解决方案3】:

      Glob 像在文件系统上一样工作,例如支持通配符

      $files = glob('/path/to/files/*.jpg');
      $yourRandomFile = array_rand($files);
      

      这将根据扩展名返回一个随机的 JPG 文件。

      【讨论】:

      • 啊这是正确的轨道,这个函数也有javascript版本吗?
      • 并非如此,在 javascript 中,您不会知道服务器上有哪些文件。您必须从服务器加载所有文件名,将它们写入 javascript 数组并使用 Math.random()..
      • 是的,我刚刚使用了 php 函数,并为现有的 HTML 页面添加了一个巨大的 echo 语句
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-07
      • 2019-05-17
      • 2014-01-30
      • 2012-06-10
      • 2012-07-28
      • 2012-08-24
      • 1970-01-01
      相关资源
      最近更新 更多