0

我正在尝试使用下一个上一个按钮显示数据库中的图像。

这是我的代码:

<?PHP
session_start();
$page = "voting.php";
include ('dbconnect.php');
$q = "SELECT * FROM vote_frames";
$r = mysql_query($q);
while($row = mysql_fetch_array($r)){
    $i_array[] = $row['frame_pic'];
    $i_array1[] = $row['frame_pic1'];
    $i_array2[] = $row['frame_pic2'];
    $id_array[] = $row['frame_id'];
}
$fpp = 1;
$num_images = count($i_array);
$image_path = "frames/";
$y = $fpp;
if(!isset($_GET['first'])){
        $first = 0;
    }else{
        $first = (int) $_GET['first'];
}
$x = $num_images - 1;
$z = $x - $y;
if($first>$z) {
    $first = $z;
}
$last = $first + $fpp;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
</head>
<body>

<div>
                <?PHP
                $i = $first;
                $prev = $first-1;
                $next = $first +1;
                if($prev<0){ $prev = 0; }
                ?><a href="<?PHP echo $page; ?>?first=<?PHP echo $prev; ?>">Previous</a><?PHP
                while($i<$last) { 
                    $f = $image_path . $i_array[$i];
                    $f1 = $image_path . $i_array1[$i];
                    $f2 = $image_path . $i_array2[$i];
                    ?>
                    <img src="<?PHP echo $f; ?>">
                    <img src="<?PHP echo $f1; ?>">
                    <img src="<?PHP echo $f2; ?>">
                    <?PHP 
                    $i++; 
                }
                ?><a href="<?PHP echo $page; ?>?first=<?PHP echo $next; ?>"><Next</a><?PHP
                ?>

</div>
</body>
</html>

图像正在显示,但具有最后一条记录未显示的奇怪行为。实际上,当我回显当前显示记录的 id 时,它会显示下一个的 id,因此记录具有下一个的 id。

我知道我可以用 jquery 做到这一点而没有任何问题,但我必须使用一种方法在会话中存储当前显示图片的 id,以便我可以在下图中显示当前显示及其下一张图片的投票计数。

有什么办法吗?

4

1 回答 1

0

这里的这部分非常神秘,为什么你这样写?我假设您已经测试了几种方法来做到这一点,但是......清理代码,同时纠正或测试它。这样一来,阅读起来就不会太神秘了。

$fpp = 1;
$num_images = count($i_array);
$image_path = "frames/";
$y = $fpp;
if(!isset($_GET['first'])){
        $first = 0;
    }else{
        $first = (int) $_GET['first'];
}
$x = $num_images - 1;
$z = $x - $y;
if($first>$z) {
    $first = $z;
}
$last = $first + $fpp;

还有你的问题$x是图像数量减一,并且$z$x负数$y(这是一,神秘的是)。$z这意味着number of images minus 2. 这就是为什么最后一个记录没有显示。清理该代码,它开始工作,它很容易修复,但我会把它留给你作为练习。

于 2012-06-03T21:11:10.547 回答