2013-08-28 32 views
0

我非常基本的说到PHP。PHP将链接发布到子目录和PHP来显示图像

我的网站,我有一个名为“上传”

在“上传”我有3个文件夹“例1”,“例题”和“示例3”

在每一个文件夹,它们包含目录图片。

我需要知道如何使用php来创建每个子目录的导航。 所以,如果我添加了一个新的文件夹“范例4”将会给像导航:

选择哪个部分你正在寻找:

Example1 | Example2 | Example3 

,如果我以后再添加新的文件夹并将其添加到导航。 EX:

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>"; 
} 
?> 

,但它只会显示在上传目录的图像,而不是在例1等的图像。

我该怎么做呢?我正在做一个学校项目,并有两个星期完成它,但我很迷茫。我只有CSS,HTML的知识,以及我知道的唯一PHP是PHP包含的,所以任何帮助将不胜感激。

+0

图片是使用斑点存储在文件夹或数据库中的吗?你的数据库是什么样的?给我一些细节,我们会帮助你!在您的到期日之前。 :) –

+0

如何将图像存储在数据库中? – Backtrack

回答

0

让每一个特定的文件夹中的文件,通过它抛出一个包含文件夹的名称的GET变量,然后扫描该文件夹的显示图片,网址应该是这样的:

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 
    } 
?> 

,这里是该扫描特定FOL的图像PHP页面listImages DER:

<?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' />"; 
    } 
?> 
+0

这工作绝对完美!非常感谢你。在回声的图像部分,如果我想包含一个链接到相同的图像,我会把? –

+0

是的,就像你说的一样 –

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>'; 
     } 
    } 
} 
0

创建图像与图像名称子目录名称,并将其保存在数据库

例如:

子目录名称:例题

形象的名字:image.jpg的

以db的形式存储图像名称为“example2/image.jpg”

1

由于看起来你对globs有点熟悉,下面是一个使用“glob”函数的例子。你可以看到你在找什么在这里一个基本工作示例: http://newwebinnovations.com/glob-images/

这里是我如何的例子设置:

有两个PHP文件,一个是index.php文件,另一个是列表images.php。

还有一个图像文件夹两个子文件夹,里面有图像。

的index.php是查找在图片文件夹中的文件夹,并把它们与链接列表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页面。

这里是清单-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>'; 

这里创建的链接会连你的个人图像。