繁体   English   中英

PHP和MySQL日历问题

[英]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>&nbsp;</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>&nbsp;</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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM