MYSQL: SELECT WEEK(`datefield`, 1) as weeknum, `datefield` FROM `tablename` WHERE WEEK(`datefield`, 1) > WEEK(now(), 1) - 5 ORDER BY WEEK(`datefield`, 1) DESCWEEK(`datefield`, 1) 得到日期为第几周,参数1表示每周以星期一开始
WEEK(`datefield`, 1) > WEEK(now(), 1) - 5  取得五周内的资料,自行调整。

解决方案 »

  1.   

    <?php
    /* 
     * 功能:取得一周的开始日期和结束日期
     * 参数:$gdate 日期,默认为当天,格式:YYYY-MM-DD
     *       $first 一周以星期一还是星期天开始,0为星期天,1为星期一
     * 返回:数组array("开始日期", "结束日期");
     * 作者:多菜鸟
     * Email: kingerq AT msn.com
     * 来源:
     */
    function aweek($gdate = "", $first = 0){
    if(!$gdate) $gdate = date("Y-m-d");
    $w = date("w", strtotime($gdate));//取得一周的第几天,星期天开始0-6
    $dn = $w ? $w - $first : 6;//要减去的天数
    $st = date("Y-m-d", strtotime("$gdate -".$dn." days"));
    $en = date("Y-m-d", strtotime("$st +6 days"));
    return array($st, $en);//返回开始和结束日期
    }
    echo implode("|", aweek("", 1));
    ?>
      

  2.   

    3.10 -- 3.17
    aaaaaaaaaaaaaa
    bbbbbbbbbbbbbb
    cccccccccccccc3.18 -- 3.25
    dddddddddddddd
    eeeeeeeeeeeeee
    ffffffffffffff
    那我循环怎样控制呢?
      

  3.   

    不会吧,楼主,这样子还问?
    <?
    $sql = "SELECT WEEK(`datefield`, 1) as weeknum, `datefield`, `ccontent` FROM `tablename` WHERE WEEK(`datefield`, 1) > WEEK(now(), 1) - 5 ORDER BY WEEK(`datefield`, 1) DESC";
    $w = "";
    $result = mysql_query($sql);
    while($re = mysql_fetch_array($result)){
      if($w != $re["weeknum"]) {
        $w = $re["weeknum"];
        echo implode(" -- ", aweek($re["datefield"], 1))."<br>";
      }
      echo $re["ccontent"]."<br>";
    }/* 
     * 功能:取得一周的开始日期和结束日期
     * 参数:$gdate 日期,默认为当天,格式:YYYY-MM-DD
     *       $first 一周以星期一还是星期天开始,0为星期天,1为星期一
     * 返回:数组array("开始日期", "结束日期");
     * 作者:多菜鸟
     * Email: kingerq AT msn.com
     * 来源:
     */
    function aweek($gdate = "", $first = 0){
    if(!$gdate) $gdate = date("Y-m-d");
    $w = date("w", strtotime($gdate));//取得一周的第几天,星期天开始0-6
    $dn = $w ? $w - $first : 6;//要减去的天数
    $st = date("Y-m-d", strtotime("$gdate -".$dn." days"));
    $en = date("Y-m-d", strtotime("$st +6 days"));
    return array($st, $en);//返回开始和结束日期
    }
    ?>
    这样子应该差不多了。
      

  4.   

    没有那么复杂吧?反正你都是要输出的,直接用php在输出时控制就可以了
    以mysql数据库函数为例:
    $rs = mysql_query("select date,title from tbl_name order by date");
    $week = -1;
    while($row = mysql_fetch_array($rs)) {
      $t = strtotime($row['date']);//取得数据发布的日期
      $w = date("W",$t);//数据发布在第几周
      if($w != $week) {
        $week = $w;
        $wd = date("W",$t); //数据发布在周几
        if($wd != 0)
          $t = strtotime("-$wd day",$t); //本周开始的日期
        echo date("m.d",$t)." -- ".date("m.d",strtotime("7 day",$t))."<br>";//输出日期条
      }
      enho $row['title']."<br>";//输出内容
    }
      

  5.   

    我结合了两位高手的$rs = mysql_query("select opr_time,bh from dfk order by opr_time");
    $week = -1;
    while($row = mysql_fetch_array($rs)) {
      $t = strtotime($row['opr_time']);//取得数据发布的日期
      $w = date("W",$t);//数据发布在第几周
      echo $w." -- ".$week."<br>";
      if($w != $week) {
    $week = $w;
    echo implode("----",aweek("".$row['opr_time']."",1))."<br>";//输出日期条
      }
      echo $row['bh']."<br>";//输出内容
    }function aweek($gdate = "", $first = 0){
    if(!$gdate) $gdate = date("Y-m-d");
    $w = date("w", strtotime($gdate));//取得一周的第几天,星期天开始0-6
    $dn = $w ? $w - $first : 6;//要减去的天数
    $st = date("Y-m-d", strtotime("$gdate -".$dn." days"));
    $en = date("Y-m-d", strtotime("$st +6 days"));
    return array($st, $en);//返回开始和结束日期
    }