2011-08-11 14 views
0

私のクエリは、10日と11日の両方の整数だけを返します。 8月の配列を31行で作成し、データベースに存在しない日の空白データと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++; } 

もちろん、データの行が2行しかないため、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; 
} 
関連する問題