从数据库显示图像

时间:2012-06-03 20:40:31

标签: php mysql image image-gallery

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

这是我的代码:

<?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做任何问题,但是我必须使用一种方法在会话中存储当前显示pic的id,这样我就能在下图中显示当前显示和下一张图片的投票数。

有什么看法吗?

1 个答案:

答案 0 :(得分:1)

这部分非常神秘,为什么你这样写?我假设您已经测试了几种方法,但是......在您更正或测试时清理代码。这样,阅读就不会太神秘了。

$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是图像数量减1,而$z$x减去$y(这是一个,加密是)。这意味着$znumber of images minus 2。这就是为什么最后的记录没有显示。清理该代码,它开始工作,很容易修复,但我会把它留给你练习。