SQL문과 for문 질문~
<?
// -- 특정그룹 선택
$sql = " select * from $g4[board_table] where gr_id = 'ms_02_1' order by bo_table ";
$result = sql_query($sql);
for ($i=0; $row=mysql_fetch_array($result); $i++) {
//-- 그룹내 게시판에서 bo_1 선택
$sql2 = " select bo_1 from $g4[board_table] where bo_table = '$row[bo_table]' order by bo_table ";
$result2 = sql_fetch($sql2);
$row3 = explode("|", $result2[bo_1]);
for ($j=0; $j<count($row3); $j++) {
if ($row[bo_1] == 1) {
echo "게시판";
}
}
}
?>
// -- 특정그룹 선택
$sql = " select * from $g4[board_table] where gr_id = 'ms_02_1' order by bo_table ";
$result = sql_query($sql);
for ($i=0; $row=mysql_fetch_array($result); $i++) {
//-- 그룹내 게시판에서 bo_1 선택
$sql2 = " select bo_1 from $g4[board_table] where bo_table = '$row[bo_table]' order by bo_table ";
$result2 = sql_fetch($sql2);
$row3 = explode("|", $result2[bo_1]);
for ($j=0; $j<count($row3); $j++) {
if ($row[bo_1] == 1) {
echo "게시판";
}
}
}
?>
위처럼 했더만 게시판이 4개 떠 버립니다.
즉, ms_02_1 그룹에 속한 bo_1 에 1이라는 값이 입력된 게시판은 다 떠버립니다.
한개만 나타나게 할 수 있을까요?
점심 맛있게 드세요. ^ ^
|
댓글을 작성하시려면 로그인이 필요합니다.
댓글 15개
허나... 다 떠버립니다. ㅡ.ㅡ
제가 그냥 붙여넣기 하다보니...
다음과 같이 직접 지정하셔야 될겁니다.
where bo_table = '$row[bo_table]'//원본
where gr_id = 'ms_02_1' //수정
물론 '게시판 테이블'이나 '그룹 테이블'에서도 gr_id라는 필드를 사용하고 있다는 것도 참조하시기 바랍니다.
잘 됩니다!! ^ ^ 감사합니다. ㅎ
for문에서는 해결이 안되나요...? ^ ^
ms_02_1 그룹에 첫번째 게시판이 비공개이면 다음 게시판으로 떠야되는데~
limit으로 하니까 안 뜨네요. ㅡ.ㅡ
gr_use_access = 0
헐.. 이게 아니군요.
테이블의 공개와 비공개의 기준이 어떻게 되나요??
limit는 쿼리문의 순차적인 처리결과값의 한계 카운트만 고려하게 됩니다.
즉, limit 2(또는 limit 0, 2); 라면 정렬순서를 고려하여 두번째까지...
(예) where bo_table = '$row[bo_table]' and gr_use_access = '0' order by asc ~
$sql = " select * from $g4[board_table] where gr_id = '{$mb_id}_1' order by bo_table ";
$result = sql_query($sql);
for ($i=0; $row=mysql_fetch_array($result); $i++) {
$row2 = explode("|", $result[bo_1]);
for ($j=0; $j<count($row2); $j++) {
if ($row[bo_1] == 1) {
echo "
<A href=$g4[bbs_path]/board.php?bo_table=$row[$j]>게시판</A>
";
}
}
}
?>
적절하게 수정 부탁드려요.. (_ _)*
쿼리는 꽝이라~~~~~ ㅠㅠ
회원 각자의 테이블을 지원하시나 봅니다^^;
자~ root님께 패쑤~~~*
테이블의 공개/비공개 설정이 있나요?
그룹의 공개/비공개의 개념이 아닐런지요?
(배포버전에서 이것은 '그룹접근'이라는 용어로 통칭되어 있습니다.)
첫번째 쿼리에서 $g4[board_table] 에서 조회를 한후 for를 돌리는데...
하나만 필요하다면 첨에 하나만 찾으면 될것을 왜 for를 돌리나요?
그리고 bo_1 에 뭐가 들어있는데 for 를 돌리나요??
이것 저것 같다가 붙이다보니~ ㅎ
위를 전부 무시하고 정확하게 하자는 것은...
A라는 그룹에 게시판1, 게시판2, 게시판3 이라고 있을 때,
각 게시판의 여분필드 1에 1이라는 값이 있으면 보여주고, 2라는 값이 있으면 보여주지 않는 것입니다.
예를 들자면...
게시판2가 여분필드 1에 2라는 값이 있으면,
보여주고자 하는 페이지에서는 게시판1, 게시판3 이렇게 뜨지 않고~
게시판1만 나타나게 하는거죠~~
sql1 = 동일그룹 아이디를 갖고 있는 게시판 테이블명을 추출.
sql2 = 동일그룹 아이디를 갖고 있는 각각의 게시판에서
게시판 확장필드 1번인 bo_1값을 추출.
row3 = 구분자를 '|'로 설정한 후 잘라내는 방법(카테고리명의 구분형태를 참조하신듯...)
하단의 for문의 실제 실행결과에 대한 부분은 차치하고서라도,
의미상 select count에 대한 쿼리결과(데이터 갯수)에 따른 반복이며,
연계되어 있는 조건문은 갯수의 개념이 아닌 문자열 "1"의 값에 대한 조건문으로 보입니다.
for문 이하의 조건이 의미가 없지 않을까 생각됩니다만...
$result = sql_query($sql);
if($result[bo_table]) {
echo "$result[bo_table]";
}
위 쿼리를 적용하시면 $g4[board_table] 테이블에서 그룹ID는 '{$mb_id}_1' 이고 bo_1의 값이 '1'인것을 찾아줍니다
많은 도움이 되고 많이 배워가네요. ^ ^ 3시간동안 고생했던 것 해결되니 기쁘네요! ~_~