다시 질문 드려봅니다. 조건에 맞는 배열 값의 개수 구하기..
본문
먼저 비슷한 질문을 또 드리게 되서 죄송합니다.
어제 이곳에 '조건에 맞는 배열 값의 개수 구하기'라는 질문을 드렸었습니다.
제가 생각해도 질문이 많이 허접했습니다.
스스로도 정리가 되지않은 상태에서 질문을 드리다보니 핵심을 벗어난 질문이 되었습니다.
그래서 오늘 나름 정리를 해봤습니다. 내가 정말 구하고자 하는 것들이 무엇인지를요...
배열이라는 것을 처음 사용하다보니 많이 헷갈립니다만 다시 한 번 정신줄 잡고 질문 드려봅니다.
제가 지금까지 이곳의 많은 분들의 도움을 받아 작업한 내용들입니다.
$bo_table = aaa (교육강좌 개설 게시판)
- 교육회차별 강좌수 유동적 (최소 1개 ~ 최대 20강좌 개설)
- aaa게시판에 저장된 교육회차별 강좌수는 $wr_2의 값은 교육신청시 bbb게시판의 $wr_2에도 저장
- aaa게시판 $wr_2의 값만큼 개설된 강좌수 만큼 $wr_3에 온라인 교육(=1) 인지 오프라인 교육(=2)인지 저장
- $wr_2 배열개수에 따라 생성된 강좌가 온라인 교육인지 오프라인 교육인지의 값들이 $wr_3에 저장
$bo_table = bbb (aaa게시판에서 개설된 교육에 대한 각 강좌별 교육 신청게시판)
- bbb게시판 $wr_2 저장된 강좌수가 write.skin.php에서 for 문을 통해 리스트업 되고 각각의 강좌별 교육신청(check)이 되도록 하고 있음
- 각 강좌별 신청(강좌별 체크된 값)은 bbb게시판 $wr_3에 배열변수로 입력되어 있음
아래는 bbb게시판에서 교육신청을 하고난 이후 보여지는 view.skin.php 페이지 소스입니다.
제가 알고 싶은 것은 아래 소스 하단에 있는 홍길동이라는 사람이 bbb게시판에서 신청한 여러개의 강좌 중 온라인강좌가 몇 개인지, 오프라인강좌가 몇 개인지입니다.
<table>
<tr>
<td>교육일</td>
<td>강의명</td>
<td>운영</td>
<td>교육비</td>
<td>납부마감일</td>
<td>신청여부</td>
</tr>
<?php for ($i = 0; $i < $view['wr_2']; $i++) {
$wr3_check = explode(",", $view['wr_3']);
$wr3_tot = array_count_values($wr3_check); // 신청한 강좌수
$wr_3k = explode(',', $aaa['wr_3']); // aaa게시판의 $wr_3 배열값, 온라인강좌인지 오프라인 강좌인지
?>
<tr>
<td><?php echo date("y.m.d", strtotime($wr_bosu['c1_no'.$i.''])); ?></td><!-- 교육일 -->
<td><?php echo $wr_bosu['c5_no'.$i.'']; ?> </td><!-- 강의명 -->
<td><?php echo ($wr_3k[$i]=="1") ? '온라인강좌' : '오프라인강좌'; ?></td><!-- 강의운영 : 온라인 or 오프라인 -->
<td><?php echo $aaa['wr_5']; ?></td> <!-- 교육비 : 1개 강좌당 강의비 aaa게시판 $wr_5에 저장된 값은 불러옴 -->
<td><?php echo (in_array($i, $wr3_check) != '') ? date("y.m.d", strtotime($wr_bosu['c8_no'.$i.''])) : '' ?></td><!-- 교육비 납부 마감일 -->
<td><?php echo (in_array($i, $wr3_check) != '') ? '신청' : '미신청' ?></td><!-- 해당 강좌 교육신청 여부 표시 -->
</tr>
<?php } ?>
<tr>
<td colspan="3">총 <?php echo count($wr3_tot);?>개 강좌 신청 (온라인 강좌 : ??? 개, 오프라인 강좌 : ??? 개)</td>
<td>합계</td>
<td> 원</td>
<td colspan="2"></td>
<tr>
</table>
지식동냥 좀 하겠습니다. 정답이면 정말 좋겠지만 그게 안된다면 이 문제를 풀 수 있는 작은 힌트라도 주시면 감사하겠습니다.
답변 3
질문 설명은 이해불가
위 테이블의 for문에 의한 출력은 희망하는대로 정확하게 나오는 것인가요?
그렇다면 온/오프 총 갯수 구하는 것은 아래처럼
(출력 방법대로라면 온출력갯수 오프출력 갯수 따로 더해가면 됨)
그리고 explode구문은 for문 밖에서 처리(for문내에 두면 loop를 돌때마다 explode를 반복 함)
그런데 신청게시판(bbb)에서 저장 및 출력 이해불가
하여튼 출력 된 코드로 보아서는 온오프 합계는 아래 코드로 하면 됩니다
$wr3_check = explode(",", $view['wr_3']);
$wr3_tot = count($wr3_check);
//$wr3_tot = array_count_values($wr3_check); // 신청한 강좌수<--이것이 아님
$wr_3k = explode(',', $aaa['wr_3']); // aaa게시판의 $wr_3 배열값, 온라인강좌인지 오프라인 강좌인지
$on = $off =0;
for ($i = 0; $i < $view['wr_2']; $i++) {
if($wr_3k[$i]==1) $on++; else $off++;
출력
~~개 강좌 신청 (온라인 강좌 : <? php echo $on; ? > 개, 오프라인 강좌 : <? php echo $off; ? > 개)
핵심은 마지막 줄 같은데요.
개인적인 의견이지만, 이걸 왜 꼭 게시판 테이블의 여분 필드를 이용해서 해야 하나 하는 생각을 해봅니다.
- 강좌테이블
- 신청테이블 이렇게 2개의 테이블을 만들어서 운영하면 편하게 원하는 값들을 구현할 수 있을 것 같습니다.
다만, 현재 구성된 내용으로 하자면.
1. 전체 온라인 강좌의 고유아이디를 배열로 만듬
2. 전체 오프라인 강좌의 고유아이디를 배열로 만듬
1번과 2번의 경우 1번과 2번의 고유아이디가 중복되면 안됨.
3. 회원이 신청한 강좌의 고유아이디를 배열로 만듬
4. 3가지 배열을 가지고 1,3 배열과 2,3 배열의 중복값으로 각각의 갯수를 구함.
우선 query문 부터 보여 주셔야 합니다. join ... group by로 해결가능할 거 같은데 말이죠...
==
$bo_table = aaa (교육강좌 개설 게시판)
- 교육회차별 강좌수 유동적 (최소 1개 ~ 최대 20강좌 개설)
==
이것도 어떤 형태인지 잘 모르겠네요.
aaa게시만 게시물 하나가 의미하는 것이 무엇인가요?
국어 1차 강의 - 6월 ( 10강, 강의실 103호)
국어 2차 강의 - 7월 ( 11강, 강의실 104호)
이런 형태인가요?