分页和可点击的图像

时间:2014-12-13 04:22:04

标签: php image apache pagination image-gallery

我想创建一个包含多个页面的图库。当用户登录时,我希望他们能够上传图像,查看图像并在主页上查看。

用户还应该能够浏览其他用户发布的其他图像。我已经设置了用户系统并将在稍后修改它,但画廊和php分页系统现在正在杀死我。

我使用以前在网上找到的代码在我的目录中显示图像文件,但到目前为止,这是显示上传的最新图像的唯一代码。 所有图像都被上传到名为“已上传”的文件夹。

使用dreamweaver和错误日志是:

  

注意:未定义的变量:第186行的C:\ Users \ User \ Documents \ Xampp \ htdocs \ HT \ index.php中的opendir

     

警告:readdir()期望参数1为资源,在第186行的C:\ Users \ User \ Documents \ Xampp \ htdocs \ HT \ index.php中给出null

     

注意:未定义的变量:第187行的C:\ Users \ User \ Documents \ Xampp \ htdocs \ HT \ index.php中的文件

     

注意:未定义的索引:第197行的C:\ Users \ User \ Documents \ Xampp \ htdocs \ HT \ index.php中的页面

图像正在显示,并且分页具有“First,previous,next和Last”,但图像不可点击,当我尝试用$ dir变量指示它时,它将我发送到错误页面而不是图像我点击了。

分页的问题是,当我点击“first,previous ... bla bla bla”时,它会将我发送到xampp“/.../uploaded索引”

<?php
$dir = readdir($opendir);
$opendir = opendir($file);
$file = ('uploaded/');

$files = glob("uploaded/*.*");
usort($files, function ($a, $b) {
return filemtime($b) - filemtime($a);
});

$record_count  = 20;
$totla_pages   = ceil(count($files)/$record_count);
$page = $_REQUEST['page']; ///make it dyanamic :: page num
$offset        = ($page-1)*$record_count;
$files_filter  = array_slice($files, $offset,$record_count);

foreach ($files_filter as $file) {
echo "<a href='$dir/$file'><img src='$file' style='height:180px;width:180px; border:2px solid black;  margin:20px 0px 10px  10px; *margin:10px 0px 10px 20px;'></a>";
}

if($totla_pages > 1){
   if($page != 1){
      echo '<a href="thispage.php?page='.($page-1).'">Prev</a>';
   }
   if($page != $totla_pages){
      echo '<a href="thispage.php?page='.($page+1).'">Next</a>';
   }
}
?>

1 个答案:

答案 0 :(得分:4)

$opendir尚未定义,因此您就会立即收到警告,然后导致其他错误。

您也不需要readdir()功能,只有opendir()功能就足够了。

您可以替换:

$dir = $opendir($opendir); 
$opendir = opendir($file); 
$file = ('uploaded/');

使用:

$file = "uploaded"; 
$dir = "."; 
opendir($dir);

$dir = ".";中的点是它所在的当前文件夹;需要保持这样。


修改

要在初始页面加载后立即修复“未定义索引:页面”通知:

你可以摆脱$page = $_REQUEST['page'];,然后使用它:

$record_count  = 20;
$totla_pages   = ceil(count($files)/$record_count);
// $page = $_REQUEST['page']; // no longer needed

$home_script = $_SERVER['REQUEST_URI'];
    if($_SERVER['REQUEST_URI'] == $home_script) {
      $page = "";
}

$offset = ($page-1)*$record_count;
$files_filter  = array_slice($files, $offset,$record_count);