채택완료

foreach문이 돌때마다 정보가 바뀌었으면 좋겠어요.

2021-09-28 (화) 15:40:14 1,866

안녕하세요 질문이 있어서 글을 올려 봅니다. 

제가 지금 아래와 같이 만들었는데요, foreach문이 돌때마다 $daily[$i]; 이 매번 달라 졌으면 좋겠는데 지금은 계속 동일하게 나옵니다. controller쪽을 여러번 바꿔보고 있는데 마땅히 좋은 방법이 떠오르지 않아 질문글 올려 봅니다. 감사합니다~~1794555495_1632811169.7853.png

view

Copy
<?php

foreach ($posting as $detail) {
    if ($detail->posting_type == 0) {
        ?>
<tr>
            <input  type="hidden" name="posting_type[]" value="0">
            <td><input  type="hidden" name="report_day[]" value="<?=$detail->report_day?>"><?=$detail->report_day?>일</td>
            <td><input  type="hidden" name="hospital_id[]" value="<?=$detail->hospital_id?>"><?=$detail->hosp_name?></td>
            <td name="last_month"><input  type="hidden" name="last_month[]" value="<?=$detail->last_month?>"><?=$detail->last_month?>개</td>
            <td name="total"><input  type="hidden" name="total" value="<?=$detail->total?>"><?=$detail->total?>개</td>
             <?     for($i=0;$i<$maxDay;$i++){     ?>
             <td name="posting_day"><?php echo $daily[$i]; ?>
             </td>
            <?        }            ?>
            <td name="last_month"><?=$detail->last_month?>개</td>
        </tr>
<?php
    } //if
} //foreach
?>
 

controller

Copy
$arr = array();
     for($i=0; $i<5; $i++){
       $arr[$i] = rand(1, $maxDay);
                                                         $nalja9 = "$thisY-$thisM-$arr[$i]";
                                                        $yoeil = date('w' , strtotime($nalja9) );

                                                    if($yoeil==0||$yoeil==6){
                                                    //    print_r('   주말                '); 
                                                        $i--;
                                                        continue;
                                                        }

       for($j=0; $j<$i; $j++)
       {
         if($arr[$i] == $arr[$j])
         {
           $i--;
           break;
         }
       }  
     }
    sort($arr);


$result=array();
                for($day=1; $day<=$maxDay;$day++){  
                         if(in_array($day, $arr)){
                            array_push($result, "1");
                          } else {
                            array_push($result, "");
                          }
                }

 

    $data['daily'] = $result;

     $this->load->view('posting',$data);
 
|

답변 1개 / 댓글 1개

채택된 답변
+20 포인트
2021-09-28 (화) 15:51:10

view 에서 $daily값 선언이 보이지 않고 

controller 쪽에서 $data 에 배열선언이 보이지 않네요

1. 컨트롤러 $data변수 확인 (제대로 들어가있는지 확인)

2. array_push 로 daily 를 넣었으면 view 에서도 $detail-> daily 형태로 뿌려주기

순서대로 디버깅 해보시기 바랍니다

답변에 대한 댓글 1개

넵!! 답변 감사드려요!! 우선 지금 controller에서 원하는 만큼 담긴거 확인했고 view에 알맞게 정보를 전달해서 보여주기만 하면 되는 상황입니다. 그런데 지금 그 부분이 잘되는 상황인데 혹시 도움 좀 주실수 있을까요..? 바쁘시면,, 그냥 패스하셔도 됩니다. 감사합니다~~

view
[code]
//여기 foreach 써보고 있는데 잘 되지 않네요,,,
<? for($i=0;$i<30;$i++){ ?>
<td><?php echo $daily[$i]; ?> </td>
<? } ?>
[/code]

//컨트롤러는 거의 동일합니다..
[code]
for($t=0;$t<2;$t++){
$arr[] = array();
for($i=0; $i<5; $i++){
$arr[$i] = rand(1, $maxDay);
$nalja9 = "$thisY-$thisM-$arr[$i]";
$yoeil = date('w' , strtotime($nalja9) );

if($yoeil==0||$yoeil==6){
// print_r(' 주말 ');
$i--;
continue;
}

for($j=0; $j<$i; $j++)
{
if($arr[$i] == $arr[$j])
{
$i--;
break;
}
}
}
sort($arr);
//array_push($arr,$arr[$t]);

//print_r($arr);



$result=array();
for($day=1; $day<=$maxDay;$day++){
if(in_array($day, $arr)){
array_push($result, "1");
} else {
array_push($result, "");
}
}
print_r($result);
}
[/code]

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