从一个php文件加载20个图像,该文件加载同一目录中的所有图像

时间:2013-07-06 19:21:13

标签: php html

我在一个目录中有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 />';
}

&GT;

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

感谢您的帮助。

2 个答案:

答案 0 :(得分: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中回显。 echo的任何内容都将发布到div元素'where_to_put_images'。如果你想在那之后又增加20个,你将不得不工作一点点,但这应该会让你到那里。

另外,请确保链接JQuery。只需查看一个基本的JQuery示例,它就会被链接到顶部。

答案 1 :(得分: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>