本帖最后由 u010801782 于 2013-07-30 23:32:15 编辑

解决方案 »

  1.   

    先按是否过期进行排序,再按时间进行排序,order by 过期,time
      

  2.   

    如果仅仅是顺序排列,已过期的在下边未过期的在上边 各自按时间倒序排列$sql = 'select * from news order by guoqi desc,time desc如果需要将之分门别类  可以进行两次循环,未过期的列表位置循环一次,已过期的列表位置循环一次,直接在循环输出内容时判断过期与否的字段 
      

  3.   


    <table border='3' style="width: 500px; text-align:center;">
    <?php 
    foreach ($array as $key => $value) 
    {
    array_multisort($sTime, SORT_ASC, $value);
    ?>
        <tr><td colspan='5'><?=$key?></td></tr>
        <?php 
           foreach ($value as $k => $v) 
           { 
    if(time() <= $v['eTime']){
    $sTime[$key]  = $v['sTime'];    
    ?>
       <tr>
       <td><?=date('H:i',$v['sTime'])?></td>
       <td><?=$v['title']?></td>
       <td>
       <?php
    if(time() > $v['sTime'] && time() < $v['eTime'] ){ echo '<span style="color: green;">开放中</span>'; }
    if(time() < $v['sTime']){echo '<span style="color: #999;">暂未开放</span>';}
    ?>
    </td>
    </tr>
            <?php 
    }
        }
        ?>
    <?php 
    }
    ?>
    <tr><td colspan='5'>已过期</td></tr>
    <?php 
    foreach ($array as $key => $value) 
    {
    array_multisort($sTime, SORT_ASC, $value);
    ?>
        <tr><td colspan='5'><?=$key?></td></tr>
        <?php 
           foreach ($value as $k => $v) 
           { 
    if(time() > $v['eTime']){
    $sTime[$key]  = $v['sTime'];    
    ?>
       <tr>
       <td><?=date('H:i',$v['sTime'])?></td>
       <td><?=$v['title']?></td>
       <td>
    已过期
    </td>
    </tr>
            <?php 
    }
        }
        ?>
    <?php 
    }
    ?>
    </table>两次循环  循环中判断是否过期  已过期的下边显示 其他的上边显示