2011-08-11 105 views
0

我的查詢返回兩個日期,比如第10個和第11個,都是整數。我想爲31行的8月份創建一個數組,數據庫中不存在空白數據,並且只有第10和第11個數據。如果我這樣做:從MySQL數據中創建一個php數組中的空行

$daysinmonth = array("January"=>31, "February"=>29, "March"=>31, "April"=>30, "May"=>31, "June"=>30, "July"=>31, "August"=>31, "September"=>30, "October"=>31, "November"=>30, "December"=>31); 

$days = $daysinmonth[$month] - 1; 

$i=0; 
echo $numB; 
while ($i<$days) { 
$a = $i + 1; 
$day = mysql_query($resultB,$i,"day"); 
if ($a==$day) { 
    $date[$i] = $a; 
    $movies[$i] = mysql_result($resultB,$i,"movies"); 
    $shows[$i] = mysql_result($resultB,$i,"shows"); 
    $music[$i] = mysql_result($resultB,$i,"music"); } 
else { $date[$i] = $a; 
    $movies[$i] = ""; 
    $shows[$i] = ""; 
    $music[$i] = ""; } $i++; } 

這會引發MySQL錯誤,當然,因爲只有兩行數據。我甚至不知道該問什麼,因爲我什麼都不懂。

回答

1
//select the data from your table 
$sql = "SELECT day, movies, shows, music FROM something WHERE something"; 
$result = mysql_query($sql); 
while ($row = mysql_fetch_assoc($result)) { 
    //put it in an array keyed by the date 
    $data[$row['day']] = $row; 
} 

//calculate the first and last day of the month's timestamps 
$first_day_of_this_month = mktime(0, 0, 0, date('m'), 1, date('Y')); 
$last_day_of_this_month = mktime(0, 0, 0, date('m') + 1, 0, date('Y')); 

//loop over every day of this month 
for ($i = $first_day_of_this_month; $i <= $last_day_of_this_month; $i = strtotime('+1 day', $i)) { 
    $date = date('Y-m-d', $i); 
    echo 'Date ' . $date . ':'; 
    if (isset($data[$date])) { //a row existed for this date 
    echo $data[$date]['movies'] . ' movies, ' . $data[$date]['shows'] . ' shows,' . $data[$date]['music'] . ' music'; 
    } 
    echo '<br />'; 
} 
+0

謝謝大家這麼多的幫助。這照顧了它! – timramich

+0

太棒了,很高興它有幫助。請將我的答案標記爲已接受。 [接受答案如何工作?](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) –

0

你可以做這樣的事情:

//use default features of php instead of your own $daysinmonth 
$from = new DateTime('2011-01-31'); 
$to = new DateTime('2011-02-28'); 
date_modify($from, '-1 day'); 
$emtpy_data = array(); 
//fill empty data for dates 
while ($from->format('Y-m-d') != $to->format('Y-m-d')) { 
    date_modify($from, '+1 day'); 
    $empty_data[$from->format('Y-m-d')] = array(); 
} 
//then select all data you need from db and append or overwrite empty data with db rows 
$q = mysql_query("select something from table where date='$some_date'"); 
while ($r = mysql_fetch_assoc) { 
    $empty_data[$some_date] = $r; 
} 
相關問題