PHP - 在一段时间循环中排序


PHP - Order in a 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

的广告

现在的情况是,广告/span4div 只是彼此相邻地呼应。我想在 while 循环中对它们进行排序<div class='row'></div>

像这样的事情呢:

<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_*功能。

由于它们是按曝光排序的,因此您可以简单地执行以下操作:

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