for문으로 만들어진 span값에 원하는 값이 있을경우 span에 class를 추가할수 있나요?? 채택완료

안녕하세요?

달력을 만드는중인데 특정일자에 특정 클래스를 부여하고싶습니다.

만약 11,12,13일에만 원하는 클래스명을 부여해줄수 있나요?

Copy
<?php

//---- 오늘 날짜
$thisyear = date('Y'); // 4자리 연도
$thismonth = date('n'); // 0을 포함하지 않는 월
$today = date('j'); // 0을 포함하지 않는 일

//------ $year, $month 값이 없으면 현재 날짜
$year = isset($_GET['year']) ? $_GET['year'] : $thisyear;
$month = isset($_GET['month']) ? $_GET['month'] : $thismonth;
$vr_date = isset($_GET['day']) ? $_GET['day'] : $today;

$prev_month = $month - 1;
$next_month = $month + 1;
$prev_year = $next_year = $year;
if ($month == 1) {
    $prev_month = 12;
    $prev_year = $year - 1;
} else if ($month == 12) {
    $next_month = 1;
    $next_year = $year + 1;
}
$preyear = $year - 1;
$nextyear = $year + 1;

$predate = date("Y-m-d", mktime(0, 0, 0, $month - 1, 1, $year));
$nextdate = date("Y-m-d", mktime(0, 0, 0, $month + 1, 1, $year));

//총일수 구하기
$max_day = date('t', mktime(0, 0, 0, $month, 1, $year)); // 해당월의 마지막 날짜
//echo '총요일수'.$max_day.'<br />';

//시작요일 구하기
$start_week = date("w", mktime(0, 0, 0, $month, 1, $year)); // 일요일 0, 토요일 6

//총 몇 주인지 구하기
$total_week = ceil(($max_day + $start_week) / 7);

//마지막 요일 구하기
$last_week = date('w', mktime(0, 0, 0, $month, $max_day, $year));
?>

 

<?php
        //화면에 표시할 화면의 초기값을 1로 설정
        $vr_date=1;

        //총 주 수에 맞춰서 세로줄 만들기
        for($i=1; $i <= $total_week; $i++){?>
        <tr>
        <?php
             //총 가로칸 만들기
             for ($j = 0; $j < 7; $j++) {
            //첫번째 주이고 시작요일보다 $j가 작거나 마지막주이고 $j가 마지막 요일보다 크면 표시하지 않음
                  echo '<td height="50" valign="top"><span>';
                          if (!(($i == 1 && $j < $start_week) || ($i == $total_week && $j > $last_week))) {

                          //오늘 날짜면 굵은 글씨
                          if ($year == $thisyear && $month == $thismonth && $vr_date == date("j")) {
                          //날짜 출력

                              echo $vr_date;
                                                                
                              } else {
                                                            
                                echo $vr_date;
                              }                                                        
                              //날짜 증가
                                  $vr_date++;
                              }
                               echo '</span></td>';
                              }
                  ?>

사용한 코드입니다.

궁극적으로는 td에는 id / span에는 class를 부여하고싶습니다.

답변 2개

채택된 답변
+20 포인트

for ($j = 0; $j < 7; $j++) {
  echo '<td height="50" valign="top"><span>';
->
for ($j = 0; $j < 7; $j++) {
  if ($vr_date == 11 || $vr_date == 11 || $vr_date == 11)
      $class = 'aaa';
  else
      $class = 'bbb';
  echo '<td height="50" class="' . $class . '" valign="top"><span>';

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

$vr_date == 11 || $vr_date == 12 || $vr_date == 13

https://sir.kr/qa/476048
도움주셔서 감사합니다. 해결하였습니다

댓글을 작성하려면 로그인이 필요합니다.

Copy
<style>
.match_day { color: orange; cursor: pointer; }
</style>

<?php
//화면에 표시할 화면의 초기값을 1로 설정
$vr_date=1;
//총 주 수에 맞춰서 세로줄 만들기

$matchdays = [11, 12, 13];
echo '<table border="1">';

for($i=1; $i <= $total_week; $i++){
    echo '<tr>';

    //총 가로칸 만들기
    for ($j = 0; $j < 7; $j++) {
        $html_id = ''; 
        $html_classname = ''; 
        if (in_array($vr_date, $matchdays) == true) {
            $html_id = ' id="match_id_' . $vr_date . '" onclick="alert(this.outerHTML)"';
            $html_classname = ' class="match_day"';
        }   
        //첫번째 주이고 시작요일보다 $j가 작거나 마지막주이고 $j가 마지막 요일보다 크면 표시하지 않음
        echo '<td height="50" valign="top"' . $html_id . '><span' . $html_classname . '>';
        if (!(($i == 1 && $j < $start_week) || ($i == $total_week && $j > $last_week))) {
            //오늘 날짜면 굵은 글씨
            if ($year == $thisyear && $month == $thismonth && $vr_date == date("j")) {
                //날짜 출력
                echo $vr_date;
            } else {
                echo $vr_date;
            }              
            //날짜 증가
            $vr_date++;
        }   
        echo '</span></td>';
    }

    echo '</tr>';
}
echo '</table>';
?>
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

시간내주셔서 감사합니다. 많은도움이 되었습니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고