0

我在一个目录中有 100 多张图片,我使用以下 php 代码生成一个页面,在顶部显示最新图片。

<?php
function mtimecmp($a, $b) {
    $mt_a = filemtime($a);
    $mt_b = filemtime($b);

    if ($mt_a == $mt_b)
        return 0;
    else if ($mt_a < $mt_b)
        return -1;
    else
        return 1;
}

$images = glob($dirname."*.jpg");
usort($images, "mtimecmp");

for ($i = count($images) - 1; $i >= 0; $i--) {
    $image = $images[$i];
    echo '<img src="'.$image.'" height ="400"/><br />';
}

?>

我想要做的是生成一个显示最后 20 页的新页面(在 html 或 php 中),然后为用户提供加载更多图像的选项。这样,当他们访问页面时,他们不必加载所有 100 多张图片,而只需加载 20 张。

谢谢您的帮助。

4

2 回答 2

1

一般来说,任何涉及在加载后修改页面的事情都是用 php 以外的东西完成的。我使用 javascript,对于你想要做的事情,我会使用 JQuery。使用 JQuery,它看起来像这样

<a id='load_twenty_button'>Load 20 more!</a>
<div id='where_to_put_the_images'></div>

<script>
   var img_start = 20;

   //when link is clicked, do the function
   $('#load_twenty_button').click( function() {
       var link = 'my_site/form_actions/getImages.php'
       $.post(link
        , {   start: img_start
            , end: img_start +20
          }
        , function (result) 
          { 
              //set the html of the div element to the html your php link return
              $('#where_to_put_the_images').html(result);  
              img_start += 20;
          }   
        );
    });
</script>

然后对于您的 getIMages.php,使用 $_POST['start'] 和 $_POST['end'] 找出要在 html 中回显的图像。任何回显的内容都将发布到 div 元素“where_to_put_images”。如果您想在此之后再添加 20 个,您将不得不稍微努力一下,但这应该可以让您到达那里。

另外,请确保链接 JQuery。只需查找一个基本的 JQuery 示例,它将在顶部链接。

于 2013-07-06T19:37:36.047 回答
0

想的很简单,只是把我的代码作为参考,你可以array_slice在这里使用函数

<?php
  function mtimecmp( $a, $b ) {
    $mt_a = filemtime( $a );
    $mt_b = filemtime( $b );

    if ( $mt_a == $mt_b ) {
      return 0;
    }
    elseif ( $mt_a < $mt_b ) {
      return -1;
    }
    return 1;
  }

  $images = glob( $dirname."*.jpg" );
  usort( $images, "mtimecmp" );

  $page   = ( isset( $_GET["page"] ) ) ? $_GET["page"] : 1; // current page
  $offset = ( $page * 20 ); // array_slice offset
  $length = 20; // maximum images per page
  $images = array_slice( $images, -$offset, $length ); // slice images array

  if ( !empty( $images ) ) {
    foreach( $images as $image ) {
      echo '<img src="'.$image.'" height="400" /> ';
    }
  }
?>

对于分页,html 看起来像这样,它非常简单的方法

<div>
  <a href="?page=<?php echo ( $page - 1 ); ?>">Prev</a>
  <a href="?page=<?php echo ( $page + 1 ); ?>">Next</a>
</div>
于 2013-07-06T19:58:39.057 回答