[英]PHP and MySQL calendar issue
我正在写尝试从头开始构建日历的方法。 我正在使用David Walsh编写的函数( 请参阅link ),它很棒。 他对每天的牢房进行查询。 但是,恐怕当脚本必须在每个渲染器中运行30个查询时,它将会是sloooow 。
因此,我试图以另一种逻辑进行思考,例如, 在脚本开始处从X日期到Y日期进行一次大查询,然后在每一天中,检查上一个查询中的特定日期是否有事件 。 但是我不知道该怎么做...所以,如果有人可以帮助,请大喊大叫!
谢谢。
代替
/* keep going with days.... */
for($list_day = 1; $list_day <= $days_in_month; $list_day++):
$calendar.= '<td class="calendar-day">';
/* add in the day number */
$calendar.= '<div class="day-number">'.$list_day.'</div>';
/** QUERY THE DATABASE FOR AN ENTRY FOR THIS DAY !!
IF MATCHES FOUND, PRINT THEM !! **/
$calendar.= str_repeat('<p> </p>',2);
$calendar.= '</td>';
if($running_day == 6):
$calendar.= '</tr>';
if(($day_counter+1) != $days_in_month):
$calendar.= '<tr class="calendar-row">';
endif;
$running_day = -1;
$days_in_this_week = 0;
endif;
$days_in_this_week++; $running_day++; $day_counter++;
endfor;
做
/** QUERY THE DATABASE FOR AN ENTRY FOR THE PERIOD !!
IF MATCHES FOUND, STORE THEM !! **/
$entries = getEntriesFromDB($month,$year);
/* keep going with days.... */
for($list_day = 1; $list_day <= $days_in_month; $list_day++):
$calendar.= '<td class="calendar-day">';
/* add in the day number */
$calendar.= '<div class="day-number">'.$list_day.'</div>';
if ($entries[$list_day]):
/** ADD THE ENTRIES FOR THE DAY!! **/
endif;
$calendar.= str_repeat('<p> </p>',2);
$calendar.= '</td>';
if($running_day == 6):
$calendar.= '</tr>';
if(($day_counter+1) != $days_in_month):
$calendar.= '<tr class="calendar-row">';
endif;
$running_day = -1;
$days_in_this_week = 0;
endif;
$days_in_this_week++; $running_day++; $day_counter++;
endfor;
更严重的是,在第一种情况下,您会遇到类似
SELECT date,event from entries where date = $date
现在你有
SELECT date,event from entries where date between $date_minus_one_month and $date
然后将结果存储在以天为索引的关联数组中。
是的,我会同意你的...嗯...大胆的建议。 如上所述,循环运行查询没有任何意义。 那么,您到底需要什么帮助呢?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.