1

这是一个非常基本的问题,但我对 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;

                ?>

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

4

3 回答 3

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,然后将其设置为接近开头 - 要么完全没问题 - 无论你需要它做什么/你更喜欢哪种方式。

最后,检查 $i 是否能被 3 整除(有点像余数 - 它被称为“mod”,由百分比符号表示)。如果是,则回显换行符。

于 2012-11-15T16:46:19.510 回答
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>
于 2012-11-15T16:48:50.897 回答
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>在它们周围包裹另一个元素。

于 2012-11-15T16:50:36.913 回答