簡體   English   中英

PHP發布到子目錄的鏈接,PHP顯示圖像

[英]PHP to post links to sub directories & php to display images

對於PHP,我非常基礎。

在我的網站上,我有一個名為“上傳”的目錄

在“上傳”中,我有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 include,所以我們將不勝感激。

由於您似乎有點熟悉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>';

此處創建的鏈接會將您鏈接到單個圖像。

首先,請閱讀更多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>';
        }
    }
}

要獲取每個特定文件夾的文件,請傳遞一個包含文件夾名稱的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' />";
    }
?>

使用圖像名稱將圖像創建為子目錄名稱並將其保存在數據庫中

例:

子目錄名稱:example2

圖片名稱:image.jpg

在db中將圖像名稱存儲為“ example2 / image.jpg”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM