我在一个目录中有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张。
感谢您的帮助。
答案 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>