仅显示三条记录,然后移至下一行

时间:2012-11-15 16:43:23

标签: php html

这是一个非常基本的问题,但我对PHP很新。 我需要在这样的场景中显示结果,即同一行中只有三个记录然后添加<br />,然后在下一行,同样的事情应该发生。我无法使其逻辑和麻烦:( 现在,我只是用简单的方法,即

while($data = mysql_fetch_array($res_set)) {
?>
 <div><?php echo $data['name']?><img src="images/<?php echo $data['image']?>" /></div>
<?php
}

这是我的代码

$cnt = 0;

while ($prd = mysql_fetch_array($res)) {

?>
                <div class="imageRow">
                <?php

    $cat_id = $prd['cat_id'];
$sql = "select * from tbl_category where id = $cat_id";
$cat_res    = mysql_query($sql);
$cat_data   = mysql_fetch_array($cat_res);
$cat_name   =   $cat_data['name'];


?>

                        <div class="set">
                            <div class="single first">
                                <a href="<?php echo $ru ?>admin/product_images/<?php echo $cat_name ?>/thumb/<?php echo $prd['thumb_img'] ?>" rel="lightbox[plants]"><img src="<?php echo $ru ?>admin/product_images/<?php echo $cat_name ?>/large/<?php echo $prd['thumb_img'] ?>" style="height: 100px; width: 100px;" /></a><br />
                                <a href="<?php echo $ru ?>contact_form.php?id=<?php echo $prd['id'] ?>">Choose</a>
                            </div>


                        </div>

</div>
                <?php
                $cnt = $cnt++;
                if($cnt%3 == 0) {echo "<br />";}
                }

                //echo  $cnt;

                ?>

任何帮助将不胜感激。 谢谢

3 个答案:

答案 0 :(得分:3)

<div class="imageRow">
<?php
$i = 0;
while($data = mysql_fetch_array($res_set)) { ?>
    <div>
        <?php echo $data['name']; ?><img src="images/<?php echo $data['image']; ?>" />
    </div>
    <?php
    $i++;
    if($i % 3 == 0) {
        echo '</div><div class="imageRow"><br />';
    }
}
?>
</div>

<强>解释

将变量$ i设置为一个数字,然后用于跟踪您编写的项目数。

然后,在while循环中,增加$ i($ i ++),这与$ i = $ i + 1相同;通过这样做,你总能知道你在哪个项目 - 无论$ i的价值是多少。有些人选择将其设置为1,然后在最后增加 - 其他喜欢将其设置为0,并将其设置为接近开头 - 要么完全正常 - 无论您需要它做什么/以您喜欢的方式更好。< / p>

最后,检查$ i是否可被3整除(类似于余数 - 它被称为“mod”并由百分号表示)。如果是,则回显换行符。

答案 1 :(得分:0)

试试这个

<?php
echo "<div>";

while($data = mysql_fetch_attay($res_set)) {
?>
 <div style="width:30%; float:left"><?php echo $data['name]?><img src="images/<?php echo $data['image']?>" /></div>
<?php
}

echo "</div>";

?>

输出

<div>
    <div>1</div> <div>2</div> <div>3</div>
    <div>1</div> <div>2</div> <div>3</div>
    <div>1</div> <div>2</div> <div>3</div>
</div>

答案 2 :(得分:0)

那里有一些超级丑陋的代码。这将满足您的需求,并且更加清洁。

<?php
$i=1;
while($data = mysql_fetch_attay($res_set)) {
    $frame = '<div><img src="%s" /></div>';
    printf($frame, $data['image']);
    if($i % 3 == 0) { echo '<br />'; }
    $i++;
}

此外,<img>元素已经是块元素,您实际上不需要在它们周围包裹另一个<div>