SQL문과 for문 질문~ > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

SQL문과 for문 질문~ 정보

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 "게시판";
}
}
}
?>
 
위처럼 했더만 게시판이 4개 떠 버립니다.
 
즉, ms_02_1 그룹에 속한 bo_1 에 1이라는 값이 입력된 게시판은 다 떠버립니다.
 
한개만 나타나게 할 수 있을까요?
 
 
 
점심 맛있게 드세요. ^ ^
  • 복사

댓글 전체

앗... 죄송합니다.

제가 그냥 붙여넣기 하다보니...

다음과 같이 직접 지정하셔야 될겁니다.
where bo_table = '$row[bo_table]'//원본
where gr_id = 'ms_02_1' //수정

물론 '게시판 테이블'이나 '그룹 테이블'에서도 gr_id라는 필드를 사용하고 있다는 것도 참조하시기 바랍니다.
죄송하다니요~ ^ ^ 답변 받는 입장에서 ㅎ
잘 됩니다!! ^ ^ 감사합니다. ㅎ

for문에서는 해결이 안되나요...? ^ ^

ms_02_1 그룹에 첫번째 게시판이 비공개이면 다음 게시판으로 떠야되는데~

limit으로 하니까 안 뜨네요. ㅡ.ㅡ
공개인것을 조회하시려면 다음 조건 추가해보세요
gr_use_access = 0

헐.. 이게 아니군요.

테이블의 공개와 비공개의 기준이 어떻게 되나요??
조건문 where에서 선 처리가 되지 않는다면,
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'님께서 보실 부분이군요^^;
회원 각자의 테이블을 지원하시나 봅니다^^;

자~ 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문 이하의 조건이 의미가 없지 않을까 생각됩니다만...
$sql = " select bo_table from $g4[board_table] where gr_id = '{$mb_id}_1' and bo_1 = '1' order by bo_table limit 0,1";
$result = sql_query($sql);
if($result[bo_table]) {
    echo "$result[bo_table]";
}

위 쿼리를 적용하시면 $g4[board_table] 테이블에서 그룹ID는 '{$mb_id}_1' 이고 bo_1의 값이  '1'인것을 찾아줍니다
© SIRSOFT
현재 페이지 제일 처음으로