如何在目录中创建文件的分页?

时间:2016-02-01 04:55:51

标签: php jquery html css pagination

我使用以下代码列出了一个目录中的所有特定文件(* .htm):

  <?PHP
$iterator = new FilesystemIterator('..\articles/');
foreach($iterator as $fileInfo){
    if($fileInfo->isFile()){
        $cTime = new DateTime();
        $cTime->setTimestamp($fileInfo->getCTime());
        echo "<div id='NewsWrap'>"
        . "<div id='NewsTitle'>"
        . "<a href='http://localhost/test/articles/" . basename($fileInfo->getFileName()) . "'>" . basename($fileInfo->getFileName(), '.htm') . "</a></div>"
        . "<div id='NewsCreation'>" . "on " .  $cTime->format('d-m-Y') . " by : Admin</div>"
        . "</div>";

    }
}
?>

因为显示了很多文件,所以我想制作分页(每个10个文件)..但我不知道用我的代码做到这一点..

而且我不想使用jquery,但如果有必要,那就这样吧。

编辑:另一种方法

<?PHP
    $offset = 2;
    $quantity = 5;
    $filelist = scandir('../articles/', 0);

    $selectedFiles = array_slice($filelist, $offset, $quantity);

    foreach($selectedFiles as $SplFileInfo)
    {
        if (!is_dir("../articles/". $SplFileInfo))
        {
            echo "<div id='NewsWrap'>"
            . "<div id='NewsTitle'>"
            . "<a href='http://localhost/test/articles/" . basename($SplFileInfo) . "' target='IFContent'>" . basename($SplFileInfo, '.htm') . "</a></div>"
            . "<div id='NewsCreation'>on " . date ("d F Y", filemtime("../articles/". $SplFileInfo)) . " by : Admin</div>"
            . "<div id='NewsDemo'>" . file_get_contents('../articles/'. $SplFileInfo) . "')</div>"
            . "</div>";
        }
    }
?>

但我仍然没有运气来创建分页号码.. 有人可以修改我的代码添加分页号码吗??

感谢。

2 个答案:

答案 0 :(得分:0)

我认为没有理由不使用scandir()代替Filesystemiterator()Scandir()将返回指定路径中的文件(和目录)数组。您也可以使用sorting order对它们进行排序。

var files = scandir('..\articles/');
var page = 1;  //change when new page is requested
var FILES_PER_PAGE = 10;


for (i = page * FILES_PER_PAGE; i < page * FILES_PER_PAGE + FILES_PER_PAGE; i++) {
    //display HTML
}

您会注意到page * FILES_PER_PAGE创建了要显示的页面的下限,page * FILES_PER_PAGE + FILES_PER_PAGE创建了上限。

答案 1 :(得分:0)

如果您不想使用jQuery,那么在分页中显示文件的唯一方法是您需要显示/隐藏您的文件名,例如,

  1. 您需要计算文件夹中找到的总文件数。
  2. 然后您需要使用每页文件编号来获取页码,例如,您有52个文件,并且您希望每页显示10个文件,那么您的总页数为6 ((int)52/10+((52%10)>0?1:0))额外的2个文件我们需要获得额外的页面,以便我使用((52%10)>0?1:0)
  3. 不,您需要创建分页链接(从第二点起,您需要创建6个链接)。
  4. 默认情况下,显示10(显示的页数),其余的文件名被隐藏。
  5. 当您点击页码时,您需要显示该号码的文件,并隐藏其余文件名。例如,如果您单击3,那么您将显示29到39个索引(从0开始)文件和隐藏文件。
  6. 但是如果你使用jQuery那么很容易实现它而没有任何重大的复杂性。尝试使用代码段来显示/隐藏文件。

    &#13;
    &#13;
    $('.pagination li').on('click',function(){
      p=$(this).data('page'),
      $list=$('.list');
      $list.find('li[data-filePage!="'+p+'"]').hide();
      $list.find('li[data-filePage="'+p+'"]').show();
    });
    &#13;
    .list{list-style:none}
    .list li{display:none;}
    
    .pagination{list-style:none;}
    .pagination li {float:left;padding:0 5px;border:1px solid #444;cursor:pointer;margin:0 2px}
    &#13;
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <ul class="list">
      <li data-filePage="1" style="display:block">1</li>
      <li data-filePage="1" style="display:block">2</li>
      <li data-filePage="2">3</li>
      <li data-filePage="2">4</li>
      <li data-filePage="3">5</li>
      <li data-filePage="3">6</li>
      <li data-filePage="4">7</li>
    </ul>
    <ul class="pagination">
      <li data-page="1">1</li>
      <li data-page="2">2</li>
      <li data-page="3">3</li>
      <li data-page="4">4</li>
      </ul>
    &#13;
    &#13;
    &#13;

    您可以使用简单的ajax pagination,只需要更改php代码。