2012-12-11 3 views
0

내 갤러리에 자신의 캘린더를 만들려고하는데 작동하도록 할 수 없습니다. 내 사진을 찍을 때 얻을 수 있고 연결될 날짜를 만들 수 있도록 SQL 쿼리를 추가했습니다. 모든 사진에 대해 정확한 날짜를 연결하는 데는 문제가 없습니다. 매월 날짜를 반복하는 방식입니다. 등등 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16과 :첫 번째 캘린더가 한 달 동안 30 일 이상 반복됩니다.

echo '<table width="100%" cellpadding="0" cellspacing="0">'; 

$months = Array(1 => 'Januari', 
       2 => 'Februari', 
       3 => 'Mars', 
       4 => 'April', 
       5 => 'Maj', 
       6 => 'Juni', 
       7 => 'Juli', 
       8 => 'Augusti', 
       9 => 'September', 
       10 => 'Oktober', 
       11 => 'November', 
       12 => 'December'); 

foreach($months AS $month_n => $month) { 

    # DATABAS: photos (hämta) 
    $get_photosdate = "SELECT photo_exif_taken FROM photos"; 


    echo '<tr>'; 
     echo '<td align="right" class="calendar-month" width="50">'; 
      echo '<a href="'.url('sortby/date/2012/'.($month_n < 10 ? '0'.$month_n : $month_n)).'" title="Sortera fotografierna efter den här månaden">'; 
       echo '<b>'.$month.'</b>'; 
      echo '</a>'; 
     echo '</td>'; 

     echo '<td align="left" class="calendar-day">'; 
      foreach($sql->query($get_photosdate) AS $date) { 
       for($i = 1; $i < 32; $i++) { 
        if(date('Y-m-d', strtotime($date['photo_exif_taken'])) == '2012-'.$month_n.'-'.$i) { 
         echo '<a href="'.url('sortby/date/2012/'.($month_n < 10 ? '0'.$month_n : $month_n).'/'.($i < 10 ? '0'.$i : $i)).'" class="calendar-link" title="Sortera fotografierna efter den här dagen">'; 
          echo $i < 10 ? '<span style="color: #a16e74;">0</span>'.$i : $i; 
         echo '</a>'; 
        } else { 
         echo '<span style="padding: 2px 3px;">'; 
          echo $i < 10 ? '<span style="color: #a2a1a1;">0</span>'.$i : $i; 
         echo '</span>'; 
        } 

        if($i == 11 OR $i == 22) { 
         echo '<br>'; 
        } 
       } 
      } 
     echo '</td>'; 
    echo '</tr>'; 

} 

echo '</table>'; 

그것은 일이 같은 인쇄해야합니다 :

여기에 내가 지금 사용하고 코드입니다. 그러나 그것은 월을 바꿀 때까지 01 02 03 04 05 06 ... 25 26 27 28 29 30 31 01 02 03 04 05 06을 50 번 정도 인쇄합니다.

무엇이 잘못 되었나요?

미리 감사드립니다.

답변

3

당신의 가장 바깥 쪽의 foreach는 두 번째는 쿼리의 결과를 통해 루프 개월을 통해 루프, 1에서 31

에 루프의 가장 안쪽 그래서 쿼리는 예를 들어, 제공하는 경우 5 결과, 루프

12 (개월) * 5 (결과 수) * 31 회.

당신이 원하는 것을 통해 단계적으로 생각함으로써 날짜를 다루는 방식을 재구성해야합니다. 예 : 캘린더에 이미지를 표시하려면 캘린더를 다차원 배열로 만든 다음 이미지를 올바른 색인에 배치합니다.

편집 : 실제 캘린더를 수행하려면 php 내장 기능을 사용하여 한 달 동안 올바른 일 수를 가져야합니다. mktime (http://php.net/manual/de/function.mktime.php) 또는 PHP DateTime (http://php.net/manual/de/class.datetime.php) 개체가 도움이 될 것입니다.

+1

그건 사실입니다. 나는 루프를 재구성하고 다시 시도한다 :) 많은 감사! – Erik

0

사진 배열의 각 요소에 대해 하루 목록을 반복합니다. 데이터베이스에 50 장 정도의 사진이 있고 여분의 루핑을 일으키는 것으로 예상됩니다.

사진 수에 따라 작동하지 않도록 쿼리 루프를 다시 작성하십시오.

관련 문제