PHP - 在while循环中排序

时间:2013-09-24 07:54:14

标签: php while-loop

<div class="row">

<?php
$r=mysql_query("SELECT * FROM advertisements WHERE $filter exposure!='0' AND `status`='2' AND (clicks_left_micro>0 OR clicks_left_mini>0 OR clicks_left_standard>0 OR clicks_left_extended>0) ORDER BY exposure DESC");
while($ar=mysql_fetch_array($r)):

    echo "<div class='span4'> text here text here</div>";

endwhile;
?>

</div>

正如您在$r查询中看到的那样,我按exposure排序。曝光字段可以包含1-3中的数字。我想要做的是为每个曝光号码创建一个新行。例如:

曝光= 1的广告将在第一行中 在此之下,将是曝光= 2的广告 最后,会有广告曝光= 3

现在的方式,广告/ span4 div只是彼此相邻。我想在<div class='row'></div>

中的while循环中对它们进行排序

2 个答案:

答案 0 :(得分:0)

这样的事情:

<div class="row">
    <?php
        $r=mysql_query("SELECT * FROM advertisements WHERE $filter exposure!='0' AND `status`='2' AND (clicks_left_micro>0 OR clicks_left_mini>0 OR clicks_left_standard>0 OR clicks_left_extended>0) ORDER BY exposure DESC");
        $row1 = '';
        $row2 = '';
        $row3 = '';
        while($ar=mysql_fetch_array($r)):
             if($ar['exposure'] == 1)
                  $row1 .= '<span>Your code here for row 1</span>';
             else if($ar['exposure'] == 2)
                  $row2 .= '<span>Your code here for row 2</span>';
             else if($ar['exposure'] == 3)
                  $row3 .= '<span>Your code here for row 3</span>';
        endwhile;
    ?>
    <table>
        <tr>
            <td><?php echo $row1; ?></td>
            <td><?php echo $row2; ?></td>
            <td><?php echo $row3; ?></td>
        </tr>
    </table>
</div>

当然,您必须根据自己的需要进行调整,但这是个主意。

编辑:正如其他人注意到的那样,你不应再使用mysql_ *函数了。

答案 1 :(得分:0)

由于它们是通过曝光订购的,您只需执行以下操作:

$curExpo = null;

while( ... ) {
    if( $curExpo !== $row['exposure']) {
        create new row
        $curExpo = $row['exposure'];
    }
}