php sql호출 관련 질문입니다 ㅠ

php sql호출 관련 질문입니다 ㅠ

QA

php sql호출 관련 질문입니다 ㅠ

본문

그누분들이 어제 도와주셔서.. 앞단위는 해결했으나..

뒤에 또 난관에 봉착을 해버렸어요...

 

2041240632_1645680348.9045.png

윗 부분은 아래 코드로 해결했으나..


<?
$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>    
 

이제 아래 이미지 처럼 뽑으려 하니(결론이미지, 희망)

2041240632_1645681111.1023.png

문제가 많이 발생하드라구요


<?
$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 합치고 중복제외 나열
$name_sql = "SELECT * FROM g5_write_color";
$name_group =sql_query($name_sql);
?>
<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>    
 

1. if절에서 첫째 for문의 color1(union된 값)과 둘째 for문의 color1을 비교할 때

둘째 for문은 union이 아니기때문에 첫째 필드값만 조사, 또 union을 써야하나요..?ㅠ

 

2. 첫째 for문은 돌아가는데 둘째 for문에서 한번돌 고 끝나버리드라구요..

 

아래는 현재 상황입니다 ㅠ

2041240632_1645681122.4557.png

작은 조언이라도 ㅠ 감사하겟습니다..

이 질문에 댓글 쓰기 :

답변 3

참고로 이렇게 나옵니다.

MariaDB > select distinct 'aa' aa, bo_subject from g5_board;
+----+-----------------+
| aa | bo_subject      |
+----+-----------------+
| aa | 공지사항        |
| aa | 자유게시판      |
| aa | 갤러리          |
+----+-----------------+
7 rows in set (0.00 sec)

1890394026_1645681407.9608.png

위 그림을 보시면 $i 가 바로 아래에서 다시 사용되기 때문에 루프가 중단됩니다.

다음과 같이 하단을 고치세요


<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>

ㅜㅜ똑같이 한번만 도네요..
일반적 for 로 돌렸을 때는 되는데
-------
($j < 5) echo 'asd' 각 영역마다 asd가 다섯번씩 호출
-------

조건값에  $row_name=sql_fetch_array($name_group); 이렇게 넣으면
한번만 돌드라구요..

답변감사합니다..

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를 쓰신 거 맞죠?

loop는 한번만 있으면 됩니다.


$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'];
}

1. $row['color']; 에서 $row는 어디서 나온거에요 ㅠ?

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++) {  ?>

이 두개 중 하나만 있으면 된다는 말씀이신건가요?

답변을 작성하시기 전에 로그인 해주세요.
전체 728
QA 내용 검색
filter #sql ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT