php sql호출 관련 질문입니다 ㅠ 채택완료
그누분들이 어제 도와주셔서.. 앞단위는 해결했으나..
뒤에 또 난관에 봉착을 해버렸어요...

윗 부분은 아래 코드로 해결했으나..
</p>
<p><?
$color_group_union = "
SELECT distinct color1 FROM g5_write_color where color1 != ''
UNION
SELECT distinct color1 FROM g5_write_color where color1 != ''
UNION
SELECT distinct color2 FROM g5_write_color where color2 != ''
UNION
SELECT distinct color3 FROM g5_write_color where color3 != ''
"
$color_group = union_sql_query($color_group_union); // color1~4 합치고 중복제외 나열
?>
<div class="color_wrap">
<?php for($i=0; $row_color=sql_fetch_array($color_group); $i++) { ?>
<div><?php echo $row_color['color1']?></div>
<? } ?>
</div>
</p>
<p>
이제 아래 이미지 처럼 뽑으려 하니(결론이미지, 희망)

문제가 많이 발생하드라구요
</p>
<p><?
$color_group_union = "
SELECT distinct color1 FROM g5_write_color where color1 != ''
UNION
SELECT distinct color1 FROM g5_write_color where color1 != ''
UNION
SELECT distinct color2 FROM g5_write_color where color2 != ''
UNION
SELECT distinct color3 FROM g5_write_color where color3 != ''
"
$color_group = union_sql_query($color_group_union); // color1~4 합치고 중복제외 나열</p>
<p>$name_sql = "SELECT * FROM g5_write_color";
$name_group =sql_query($name_sql);</p>
<p>?></p>
<p><div class="color_wrap">
<?php for($i=0; $row_color=sql_fetch_array($color_group); $i++) { ?>
<div>
<h1><?php echo $row_color['color1']?>
<ul>
<?php for($i=0; $row_name=sql_fetch_array($name_group); $i++) { ?>
<?php if($row_name['color1']==$row_color['color1']){ ?>
<li><?php echo $row_name['name']?></li>
<? } ?>
<? } ?>
</ul>
</div>
<? } ?>
</div>
</p>
<p>
1. if절에서 첫째 for문의 color1(union된 값)과 둘째 for문의 color1을 비교할 때
둘째 for문은 union이 아니기때문에 첫째 필드값만 조사, 또 union을 써야하나요..?ㅠ
2. 첫째 for문은 돌아가는데 둘째 for문에서 한번돌 고 끝나버리드라구요..
아래는 현재 상황입니다 ㅠ

작은 조언이라도 ㅠ 감사하겟습니다..
답변 3개
참고로 이렇게 나옵니다.
MariaDB > select distinct 'aa' aa, bo_subject from g5_board; +----+-----------------+ | aa | bo_subject | +----+-----------------+ | aa | 공지사항 | | aa | 자유게시판 | | aa | 갤러리 | +----+-----------------+ 7 rows in set (0.00 sec)
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
SELECT distinct color1 FROM g5_write_color where color1 != ''
UNION
SELECT distinct color1 FROM g5_write_color where color1 != ''
UNION
SELECT distinct color2 FROM g5_write_color where color2 != ''
UNION
SELECT distinct color3 FROM g5_write_color where color3 != ''
"
1,2,3,4를 쓰신 거 맞죠?
답변에 대한 댓글 5개
$color_group_union = "
SELECT distinct 'red' color, name FROM g5_write_color where color1 != ''
UNION
SELECT distinct 'blue' color, name FROM g5_write_color where color2 != ''
UNION
SELECT distinct 'aaa' color, name FROM g5_write_color where color3 != ''
UNION
SELECT distinct 'bbbb' color, name FROM g5_write_color where color4 != ''
"
$color_group = union_sql_query($color_group_union); // color1~4 합치고 중복제외 나열
$name_sql = "SELECT * FROM g5_write_color";
$name_group =sql_query($name_sql);
...
$pre='';
for($i=0; $row_name=sql_fetch_array($name_group); $i++) {
if($row_name['color']!=$pre) echo $row['color'];
echo $row_name['name'];
$pre= $row['color'];
}
2. SELECT distinct 'red'는 레코드인건가요?
3. loop는 한번만 있으면 된다는게
<?php for($i=0; $row_color=sql_fetch_array($color_group); $i++) { ?>
<?php for($i=0; $row_name=sql_fetch_array($name_group); $i++) { ?>
이 두개 중 하나만 있으면 된다는 말씀이신건가요?
ssh나, phpmyadmin 등으로
해당 sql을 실행해서 결과를 보시는 것이 이해가 빠릅니다.
많은 도움 감사합니다!
댓글을 작성하려면 로그인이 필요합니다.

위 그림을 보시면 $i 가 바로 아래에서 다시 사용되기 때문에 루프가 중단됩니다.
다음과 같이 하단을 고치세요
</p>
<p><ul>
<?php for($j=0; $row_name=sql_fetch_array($name_group); $j++) { ?>
<?php if($row_name['color1']==$row_color['color1']){ ?>
<li><?php echo $row_name['name']?></li>
<? } ?>
<? } ?>
</ul></p>
<p>
답변에 대한 댓글 1개
일반적 for 로 돌렸을 때는 되는데
-------
($j < 5) echo 'asd' 각 영역마다 asd가 다섯번씩 호출
-------
조건값에 $row_name=sql_fetch_array($name_group); 이렇게 넣으면
한번만 돌드라구요..
답변감사합니다..
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
$color_array[] = $row_color;
}
배열로 담아서 별개로 호출하여 해결 하였습니다.
감사합니다!