2011-10-02 21 views
0

確定這就是我:選擇所有周XX,無法正常工作的PHP

function getFirstDayOfWeek($iYear, $iWeekNumber) 
{ 
    if (is_null($iYear)) $iYear = date('Y'); 
    if ($iWeekNumber < 10) $iWeekNumber = '0'.$iWeekNumber; 

    $iTime = strtotime($iYear.'W'.$iWeekNumber); 

    return $iTime; 
} 

$firstdayofweek = getFirstDayOfWeek($data['year'], $data['week']); 
$mDate = date('m', $firstdayofweek); 
$dDate = date('d', $firstdayofweek); 
$min = mktime(0, 0, 0, $mDate, $dDate, $data['year']); 
$max = mktime(23, 59, 59, $dDate, $dDate+6, $data['year']); 

凡後來做:

SELECT id 
FROM training_activities 
WHERE date time >= {$min} 
    AND time <= {$max} 

正如你可能現在到現在爲止,時代保存在unix時間戳中。

此代碼無法正常工作。

比方說,$數據今年是2011年和一週39

這說明我從26/09-04/10,8天的日期,而本週39 29/09 - 02/10

我怎樣才能讓它選擇並顯示幾周?

+1

你'$ min' /'$ max'變量的聲明是很難理解的。請爲某些/所有內聯函數調用('date()','getFirstDayOfWeek()')使用變量。 –

+0

@JaredFarrish現在怎麼樣? – Karem

+0

嗯,那樣更好。 ':''現在你的查詢看起來不正確:'SELECT id FROM training_activities WHERE date time> = {$ min} AND time <= {$ max} '它是'date time'還是'time'? ?第一個看起來不正確。 –

回答

1

$max月份使用的是$dDate而不是$mDate;以下工作:

<?php 

function getFirstDayOfWeek($iYear, $iWeekNumber) 
{ 
    if (is_null($iYear)) $iYear = date('Y'); 
    if ($iWeekNumber < 10) $iWeekNumber = '0'.$iWeekNumber; 

    $iTime = strtotime($iYear.'W'.$iWeekNumber); 

    return $iTime; 
} 

for ($i = 1; $i <= 52; $i++) { 
    $firstdayofweek = getFirstDayOfWeek(2011, $i); 
    $mDate = date('m', $firstdayofweek); 
    $dDate = date('d', $firstdayofweek); 
    $min = mktime(0, 0, 0, $mDate, $dDate, 2011); 
    $max = mktime(23, 59, 59, $mDate, ($dDate+6), 2011); 
    echo date('m/d/Y',$min)." - ".date('m/d/Y',$max)." ($dDate - ".($dDate+6).")\n"; 
} 

?> 

http://codepad.org/7hMJQFhq