0

当谈到 PHP 时,我非常基础。

在我的网站上,我有一个名为“uploads”的目录

在“上传”中,我有 3 个文件夹“Example1”“Example2”和“Example3”

在每个文件夹中,它们都包含图像。

我需要知道如何使用 php 为每个子目录创建导航。因此,如果我添加一个新文件夹“Example4”,它将提供如下导航:

选择您要查找的部分:

  Example1 | Example2 | Example3

如果我稍后添加新文件夹,请将它们添加到导航中。前任:

  Example1 | Example2 | Example3 | Example4 | Example5

然后,一旦他们单击链接进入文件夹,就会有一个代码显示该文件夹中的所有图像。

到目前为止,我有:

<?php
$files = glob("uploads/*.*");
for ($i=0; $i<count($files); $i++)
{
$num = $files[$i];
echo '<a href="/'.$num.'"><img src="/'.$num.'"></a>'."<p>";
}
?>

但它只会显示上传目录中的图像,而不是 Example1 中的图像等。

我到底要怎么做呢?我正在为一个学校项目做这件事,有两个星期的时间来完成它,但我很迷茫。我只知道 CSS、HTML,我知道的唯一 PHP 是 php 包含,所以任何帮助将不胜感激。

4

4 回答 4

1

由于您似乎对 glob 有点熟悉,这里是一个使用“glob”函数的示例。您可以在此处查看您正在寻找的基本工作示例:http: //newwebinnovations.com/glob-images/

这是我设置示例的方式:

有两个 PHP 文件,一个是 index.php,另一个是 list-images.php。

还有一个图像文件夹,其中有两个子文件夹,其中包含图像。

index.php 是在 images 文件夹中查找文件夹并将它们放置在带有链接 list-images.php 的列表中的文件,该链接将显示文件夹内的图像:

$path = 'images';
$folders = glob($path.'/*');
echo '<ul>';
foreach ($folders as $folder) {
    echo '<li><a href="list-images.php?folder='.$folder.'">'.$folder.'</a></li>';
}
echo '</ul>';

上面创建的链接创建了一个动态变量,它将传递到 list-images.php 页面的链接。

这是 list-images.php 代码:

if (isset($_GET['folder'])) {
    $folder = $_GET['folder'];
}
$singleImages = array();
foreach (glob($folder . '/*.{jpg,jpeg,png,gif}', GLOB_BRACE) as $image) {
    $imageElements = array();
    $imageElements['source'] = $image;
    $singleImages[$image] = $imageElements;
}
echo '<ul>';
foreach ($singleImages as $image) {
    echo '<li><a href="'.$image['source'].'"><img src="'.$image['source'].'" width="400" height="auto"></a></li>';
}
echo '</ul>';

此处创建的链接会将您链接到各个图像。

于 2013-08-28T04:45:22.167 回答
0

使用图像名称创建图像作为子目录名称并将其保存在数据库中

例子:

子目录名称:example2

图片名称:image.jpg

在数据库中存储图像名称为“example2/image.jpg”

于 2013-08-28T04:27:25.103 回答
0

首先,请阅读更多 PHP 手册,目录相关:opendir,文件相关:fopen

下面的代码基本上是对opendir中提供的示例代码进行了重新整理。它能做什么:

一个scan_directory函数,用于简单地检查目录路径是否有效并且是一个目录,然后如果有子目录则继续执行递归调用,否则只需打印出文件名。

第一个 if/else 条件只是为了确保基本目录有效。

我将添加ulli使其更加美观。

$base_dir = 'upload';

if (is_dir($base_dir)) 
    scan_directory($base_dir);
else 
    echo 'Invalid base directory. Please check your setting.';

// recursive function to check all dir
function scan_directory($path) {
    if (is_dir($path)) {
        if ($dir_handle = opendir($path)) {
            echo '<ul>';
            while (($file = readdir($dir_handle)) !== false) {
                if ($file != '.' && $file != '..') {
                    if (is_dir($path . '/' . $file)) {
                        echo '<li>';
                        echo $file;
                        scan_directory($path . '/' . $file);
                        echo '</li>';
                    }
                    else
                        echo "<li>{$file}</li>";
                }
            }
            echo '</ul>';
        }
    }
}
于 2013-08-28T04:02:14.783 回答
0

要获取每个特定文件夹的文件,传递它会抛出一个包含文件夹名称的 get 变量,然后扫描此文件夹并显示图像,url 应该是这样的:

 listImages.php?folderName=example1

有你想要的菜单:

<?php
    $path = 'uploads/' ;
    $results = scandir($path);
    for ($i=0;$i<count($results);$i++   ) {
        $result=$results[$i];
        if ($result === '.' or $result === '..') continue;

        if (is_dir($path . '/' . $result)) {
             echo "<a href='imgs.php?folderName=$result'>$result</a>  ";

        }
        if($i!=count($results)-1) echo '|'; //to avoid showing | in the last element
    }
?>

这是扫描特定文件夹图像的 PHP 页面 listImages :

<?php
    if (isset($_GET['folderName'])) $folder=$_GET['folderName'];
    $path = 'uploads/'.$folder.'/' ;
    $images = glob($path . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
    foreach ($images as $image) {
         echo "<img src='$image' />";
    }
?>
于 2013-08-28T04:04:15.433 回答