2013-05-30 178 views
0

我正在制定一个时间表脚本,其中星期三的开始时间是星期三,结束时间是星期二。我一直在研究各地,并找到如何在周三开始,但最后一天总是在星期六或星期日结束,取决于使用DAYOFWEEK或WEEKDAY。php/mysql在星期二和星期二的一周的最后一天开始一周中的某一天

我的代码是正确的,现在的每七天...

   <td class="hours" colspan="2"> 
      <?php $hour3 = mysql_query("SELECT h.* FROM hours AS h, employees AS e 
             WHERE h.s_id = '" .$s_id. "' AND e.u_id = h.u_id AND DAYOFWEEK(h.date) = 4 
             ORDER BY e.emp_id ASC"); 
      while($time3 = mysql_fetch_array($hour3)) { ?> 

       <div class="hours"> 
        <?php $starting = date("g:ia", strtotime($time3['timestart'])); 
         $ending = date("g:ia", strtotime($time3['timeend'])); 
          if ($time3['work'] == '1') { 
           if ($time3['why_off'] == '1') 
            {echo "<div class='off'>OFF [R]</div>";} 
           elseif ($time3['why_off'] == '2') 
            {echo "<div class='off'>OFF [ML]</div>";} 
           elseif ($time3['why_off'] == '0') 
            {echo "<div class='off'>OFF</div>";} 
          } 
           elseif ($time3['work'] == '0') { 
            if ($time3['work_type'] == '1') { 
             if ($time3['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[TL]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[TL]</div>";} 
            } 
            elseif ($time3['work_type'] == '2') { 
             if ($time3['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[SF]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[SF]</div>";} 
            } 
            elseif ($time3['work_type'] == '3') { 
             if ($time3['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[-/+]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[-/+]</div>";} 
            } 
            elseif ($time3['work_type'] == '4') { 
             if ($time3['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[TR]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[TR]</div>";} 
            } 
            elseif ($time3['work_type'] == '0') { 
             if ($time3['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."</div>";} 
            } 
           }?> 

       </div> 
       <?php } ?> 

      </td> 
      <td class="hours" colspan="2"> 
      <?php $hour4 = mysql_query("SELECT h.* FROM hours AS h, employees AS e 
             WHERE h.s_id = '" .$s_id. "' AND e.u_id = h.u_id AND DAYOFWEEK(h.date) = 5 
             ORDER BY e.emp_id ASC"); 
      while($time4 = mysql_fetch_array($hour4)) { ?> 

       <div class="hours"> 
        <?php $starting = date("g:ia", strtotime($time4['timestart'])); 
         $ending = date("g:ia", strtotime($time4['timeend'])); 
          if ($time4['work'] == '1') { 
           if ($time4['why_off'] == '1') 
            {echo "<div class='off'>OFF [R]</div>";} 
           elseif ($time4['why_off'] == '2') 
            {echo "<div class='off'>OFF [ML]</div>";} 
           elseif ($time4['why_off'] == '0') 
            {echo "<div class='off'>OFF</div>";} 
          } 
           elseif ($time4['work'] == '0') { 
            if ($time4['work_type'] == '1') { 
             if ($time4['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[TL]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[TL]</div>";} 
            } 
            elseif ($time4['work_type'] == '2') { 
             if ($time4['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[SF]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[SF]</div>";} 
            } 
            elseif ($time4['work_type'] == '3') { 
             if ($time4['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[-/+]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[-/+]</div>";} 
            } 
            elseif ($time4['work_type'] == '4') { 
             if ($time4['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[TR]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[TR]</div>";} 
            } 
            elseif ($time4['work_type'] == '0') { 
             if ($time4['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."</div>";} 
            } 
           }?> 

       </div> 
       <?php } ?> 

      </td> 
      <td class="hours" colspan="2"> 
      <?php $hour5 = mysql_query("SELECT h.* FROM hours AS h, employees AS e 
             WHERE h.s_id = '" .$s_id. "' AND e.u_id = h.u_id AND DAYOFWEEK(h.date) = 6 
             ORDER BY e.emp_id ASC"); 
      while($time5 = mysql_fetch_array($hour5)) { ?> 

       <div class="hours"> 
        <?php $starting = date("g:ia", strtotime($time5['timestart'])); 
         $ending = date("g:ia", strtotime($time5['timeend'])); 
          if ($time5['work'] == '1') { 
           if ($time5['why_off'] == '1') 
            {echo "<div class='off'>OFF [R]</div>";} 
           elseif ($time5['why_off'] == '2') 
            {echo "<div class='off'>OFF [ML]</div>";} 
           elseif ($time5['why_off'] == '0') 
            {echo "<div class='off'>OFF</div>";} 
          } 
           elseif ($time5['work'] == '0') { 
            if ($time5['work_type'] == '1') { 
             if ($time5['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[TL]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[TL]</div>";} 
            } 
            elseif ($time5['work_type'] == '2') { 
             if ($time5['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[SF]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[SF]</div>";} 
            } 
            elseif ($time5['work_type'] == '3') { 
             if ($time5['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[-/+]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[-/+]</div>";} 
            } 
            elseif ($time5['work_type'] == '4') { 
             if ($time5['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[TR]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[TR]</div>";} 
            } 
            elseif ($time5['work_type'] == '0') { 
             if ($time5['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."</div>";} 
            } 
           }?> 

       </div> 
       <?php } ?> 

      </td> 
      <td class="hours" colspan="2"> 
      <?php $hour6 = mysql_query("SELECT h.* FROM hours AS h, employees AS e 
             WHERE h.s_id = '" .$s_id. "' AND e.u_id = h.u_id AND DATE_ADD((DAYOFWEEK(h.date) = 7), INTERVAL 7 DAY) 
             ORDER BY e.emp_id ASC"); 
      while($time6 = mysql_fetch_array($hour6)) { ?> 

       <div class="hours"> 
        <?php $starting = date("g:ia", strtotime($time6['timestart'])); 
         $ending = date("g:ia", strtotime($time6['timeend'])); 
          if ($time6['work'] == '1') { 
           if ($time6['why_off'] == '1') 
            {echo "<div class='off'>OFF [R]</div>";} 
           elseif ($time6['why_off'] == '2') 
            {echo "<div class='off'>OFF [ML]</div>";} 
           elseif ($time6['why_off'] == '0') 
            {echo "<div class='off'>OFF</div>";} 
          } 
           elseif ($time6['work'] == '0') { 
            if ($time6['work_type'] == '1') { 
             if ($time6['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[TL]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[TL]</div>";} 
            } 
            elseif ($time6['work_type'] == '2') { 
             if ($time6['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[SF]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[SF]</div>";} 
            } 
            elseif ($time6['work_type'] == '3') { 
             if ($time6['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[-/+]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[-/+]</div>";} 
            } 
            elseif ($time6['work_type'] == '4') { 
             if ($time6['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[TR]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[TR]</div>";} 
            } 
            elseif ($time6['work_type'] == '0') { 
             if ($time6['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."</div>";} 
            } 
           }?> 

       </div> 
       <?php } ?> 

      </td> 
      <td class="hours" colspan="2"> 
      <?php $hour0 = mysql_query("SELECT h.* FROM hours AS h, employees AS e 
             WHERE h.s_id = '" .$s_id. "' AND e.u_id = h.u_id AND DATE_ADD((DAYOFWEEK(h.date) = 1), INTERVAL 7 DAY) 
             ORDER BY e.emp_id ASC"); 
      while($time0 = mysql_fetch_array($hour0)) { ?> 

       <div class="hours"> 
        <?php $starting = date("g:ia", strtotime($time0['timestart'])); 
         $ending = date("g:ia", strtotime($time0['timeend'])); 
          if ($time0['work'] == '1') { 
           if ($time0['why_off'] == '1') 
            {echo "<div class='off'>OFF [R]</div>";} 
           elseif ($time0['why_off'] == '2') 
            {echo "<div class='off'>OFF [ML]</div>";} 
           elseif ($time0['why_off'] == '0') 
            {echo "<div class='off'>OFF</div>";} 
          } 
           elseif ($time0['work'] == '0') { 
            if ($time0['work_type'] == '1') { 
             if ($time0['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[TL]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[TL]</div>";} 
            } 
            elseif ($time0['work_type'] == '2') { 
             if ($time0['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[SF]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[SF]</div>";} 
            } 
            elseif ($time0['work_type'] == '3') { 
             if ($time0['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[-/+]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[-/+]</div>";} 
            } 
            elseif ($time0['work_type'] == '4') { 
             if ($time0['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[TR]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[TR]</div>";} 
            } 
            elseif ($time0['work_type'] == '0') { 
             if ($time0['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."</div>";} 
            } 
           }?> 

       </div> 
       <?php } ?> 

      </td> 
      <td class="hours" colspan="2"> 
      <?php $hour1 = mysql_query("SELECT h.* FROM hours AS h, employees AS e 
             WHERE h.s_id = '" .$s_id. "' AND e.u_id = h.u_id AND DATE_ADD((DAYOFWEEK(h.date) = 2), INTERVAL 7 DAY) 
             ORDER BY e.emp_id ASC"); 
      while($time1 = mysql_fetch_array($hour1)) { ?> 

       <div class="hours"> 
        <?php $starting = date("g:ia", strtotime($time1['timestart'])); 
         $ending = date("g:ia", strtotime($time1['timeend'])); 
          if ($time1['work'] == '1') { 
           if ($time1['why_off'] == '1') 
            {echo "<div class='off'>OFF [R]</div>";} 
           elseif ($time1['why_off'] == '2') 
            {echo "<div class='off'>OFF [ML]</div>";} 
           elseif ($time1['why_off'] == '0') 
            {echo "<div class='off'>OFF</div>";} 
          } 
           elseif ($time1['work'] == '0') { 
            if ($time1['work_type'] == '1') { 
             if ($time1['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[TL]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[TL]</div>";} 
            } 
            elseif ($time1['work_type'] == '2') { 
             if ($time1['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[SF]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[SF]</div>";} 
            } 
            elseif ($time1['work_type'] == '3') { 
             if ($time1['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[-/+]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[-/+]</div>";} 
            } 
            elseif ($time1['work_type'] == '4') { 
             if ($time1['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close<br>[TR]</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[TR]</div>";} 
            } 
            elseif ($time1['work_type'] == '0') { 
             if ($time1['timeend'] == '23:00:00') 
             {echo "<div class='working_w'>".$starting." - Close</div>";} 
              else {echo "<div class='working_w'>".$starting." - ".$ending."</div>";} 
            } 
           }?> 

       </div> 
       <?php } ?> 

      </td> 
      <td class="hoursboth" colspan="2"> 
      <?php $hour2 = mysql_query("SELECT h.* FROM hours AS h, employees AS e 
             WHERE h.s_id = '" .$s_id. "' AND e.u_id = h.u_id AND DATE_ADD((DAYOFWEEK(h.date) = 3), INTERVAL 7 DAY) 
             ORDER BY e.emp_id ASC"); 
      while($time2 = mysql_fetch_array($hour2)) { ?> 

       <div class="hours"> 
        <?php $starting = date("g:ia", strtotime($time2['timestart'])); 
         $ending = date("g:ia", strtotime($time2['timeend'])); 
          if ($time2['work'] == '1') { 
           if ($time2['why_off'] == '1') 
            {echo "<div class='off'>OFF [R]</div>";} 
           elseif ($time2['why_off'] == '2') 
            {echo "<div class='off'>OFF [ML]</div>";} 
           elseif ($time2['why_off'] == '0') 
            {echo "<div class='off'>OFF</div>";} 
          } 
          elseif ($time2['work'] == '0') { 
           if ($time2['work_type'] == '1') { 
            if ($time2['timeend'] == '23:00:00') 
            {echo "<div class='working_w'>".$starting." - Close<br>[TL]</div>";} 
             else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[TL]</div>";} 
           } 
           elseif ($time2['work_type'] == '2') { 
            if ($time2['timeend'] == '23:00:00') 
            {echo "<div class='working_w'>".$starting." - Close<br>[SF]</div>";} 
             else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[SF]</div>";} 
           } 
           elseif ($time2['work_type'] == '3') { 
            if ($time2['timeend'] == '23:00:00') 
            {echo "<div class='working_w'>".$starting." - Close<br>[-/+]</div>";} 
             else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[-/+]</div>";} 
           } 
           elseif ($time2['work_type'] == '4') { 
            if ($time2['timeend'] == '23:00:00') 
            {echo "<div class='working_w'>".$starting." - Close<br>[TR]</div>";} 
             else {echo "<div class='working_w'>".$starting." - ".$ending."<br>[TR]</div>";} 
           } 
           elseif ($time2['work_type'] == '0') { 
            if ($time2['timeend'] == '23:00:00') 
            {echo "<div class='working_w'>".$starting." - Close</div>";} 
             else {echo "<div class='working_w'>".$starting." - ".$ending."</div>";} 
           } 
          }?> 

       </div> 
       <?php } ?> 

      </td> 

我想感谢任何人提前给予任何帮助!

+1

哇。这是一系列if块中的一个。你不能每天都应用一个偏移量吗?你知道星期日是什么被认为是一周的开始,所以转移一切的恒定偏移量3. – crush

+0

是的,我试过了...... 我在前一周做了额外的计划时间,当我做偏移它显示要么没有或前一周 –

回答

0

如何开始的一周,周三

所以基本上你只是想“转移”值范围从06给定数目的......嗯,这是非常简单:

$shifted_value = ($actual_value + $offset) % $number_of_values; 

所以这里$offset将是4(周三是在PHP星期几#3,但减去 3可能会导致不必要的负值与模分割 - 所以我们只是将“进入未来”而不是过去,通过 4 [= 7-3])和$number_of_values将是7.

这将是PHP版本,在MySQL中它可以以同样的方式完成 - 只有偏移量必须根据事实进行调整,因为MySQL星期三是本周的第2天。

+0

所以我把它放入mysql中如何选择? \t $星期四=请求mysql_query(“SELECT h.timestart,h.timeend,h.work,h.why_off,h.work_type,h.date从数小时AS小时,员工为E \t \t \t \t \t \t其中h。 S_ID = ' “$ S_ID。”' AND e.u_id = h.u_id AND DAYOFWEEK(h.date)= 5 \t \t \t \t \t \t GROUP BY e.emp_id \t \t \t \t \t \t ORDER BY即emp_id ASC“); –

+0

我现在看到您似乎在为每个(工作)工作日进行单个查询 - 这相当复杂,您应该也可以使用“移位值”作为第二个(或第一个,取决于您希望如何循环数据)ORDER BY标准,而不是将其放入WHERE子句中,因此您可以在_one_查询中获取_all_ weekdays的相关数据。 – CBroe

+0

我尝试过,并不确定如何正确写入... –

0

如何从日期减少某些日子并选择最后一周?

SELECT h.* FROM hours AS h, employees AS e 
WHERE h.s_id = '" .$s_id. "' AND e.u_id = h.u_id AND 
    WEEK(DATE_ADD(h.date, INTERVAL -3 DAY)) = 4 
ORDER BY h.date, e.emp_id ASC 
+0

无济于事。 –

+0

日期函数在[MySQL 4.1](https://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html#function_date-add)中可用。你不能做'ORDER BY DAYOFWEEK(DATE_ADD(h.date,INTERVAL -3 DAY)),e.emp_id'以便在星期几之前对所有empoyees进行排序? –

相关问题