테스트 사이트 - 개발 중인 베타 버전입니다

게시판의 제목을 셀렉트 박스로 구현... 채택완료

탐크루지 3년 전 조회 1,915

안녕하세요. 

A(예약게시판)의 게시판에 예약처럼 제목을 B(상품명게시판) 게시판의 제목란에서 리스트를 셀렉트 형식으로 가져오고 있습니다. 

아래의 소스처럼 하니 B게시판에서 잘 되고 있습니다. 

그런데 B게시판의 제목들이 갯수가 많아지다보니 A게시판의 제목부분의 셀렉트박스 부분이 너무 길어져서 찾기가 불편하더라구요.... 그래서 B(상품명게시판)에 분류코드를 사용하는것으로해서 분류(가든뷰|오션뷰|시티뷰) 이렇게 분류를 만들어서 하고 있습니다. 

그런데 B의 분류가 A 예약할때는 안나오더라구요. 혹시 A 예약 등록시 B에서 분류를 먼저 선택하면 두번째 셀렉트에서 가든뷰에 해당하는 리스트만 셀렉트에 나오게 하고 싶은데 분류 부분의 코드를 어떻게 넣어야 할가요? 도와주시면 감사하겠습니다.

 

</p>

<p><?php

$sql = "select wr_subject from g5_write_roomsubject ORDER BY wr_subject";

$result = sql_query($sql);

?></p>

<p> </p>

<p><!--1번째 분류선택--></p>

<p><select></p>

<p>   <option>B게시판의 분류</option></p>

<p></select></p>

<p><!--2번째 제목선택-->

<select id="wr_subject" name="wr_subject" class="bo_w_select" required></p>

<p>    <option value="">---상품선택---</option>

    <?php while ($row = sql_fetch_array($result)) {?>

    <option value="<?php echo $row['wr_subject'] ?>" <?php echo ($row['wr_subject'] == $subject) ? " selected" : "";?>><?php echo $row['wr_subject'] ?></option>

    <?php    } ?>

</select></p>

<p>

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
Dessi
3년 전

실시간으로 값을 가져 와야하니 ajax로 하셔야합니다.

 

단, 아래 코드는 글 작성시에만 적용되는 예시 코드입니다.

(글 수정시에는 B게시판 카테고리 값에 맞게 while 돌려서 게시글 옵션 불러오셔야합니다.)

 

편의상 A게시판을 test1 , B게시판은 test2라고 하겠습니다.

 

그리고 A게시판에서 B 게시판 카테고리를 저장할 필드를 wr_1로 하구요.

 

A게시판 write.skin.php 상단에

 

</p>

<p><?php

$sql = "SELECT `bo_category_list` FROM `g5_board` WHERE `bo_table` = 'test2' "; //test2 게시판의 카테고리를 가져옴

$row = sql_fetch($sql);</p>

<p>$ca_option = explode("|",$row['bo_category_list']);</p>

<p>foreach($ca_option as $val){

    $cate_op .= "<option value = '".$val."' ".get_selected($wr_1, $val).">".$val."</option>";

}

?></p>

<p>        <select name="wr_1" id="wr_1" required>

            <option value="">분류를 선택하세요</option>

            <?php echo $cate_op ?>

        </select></p>

<p> </p>

<p><!--2번째 제목선택-->

<select id="wr_subject" name="wr_subject" class="bo_w_select" required>

</select>

<script>

$( document ).ready(function() {    

    $('#wr_1').change(function(e){    

        e.preventDefault(e);

        $.ajax({

            url:g5_url+'/ajax/cate.php',//php함수가 실행될 경로 및 파일

            type: "post",        

            data: {ca_name : $("#wr_1 option:selected").val() },

            success : function(data) {

            if(data){

                $("#wr_subject").html(data);

            }else{

                alert('결과가 없습니다');

            }

            }

        });        

    });

});</p>

<p></script></p>

<p>

 

그누보드 설치 폴더 최상단에 ajax폴더 만드시고 하단에 cate.php 폴더 생성후 파일 내용을 아래와 같이

</p>

<p><?php

include_once('../common.php');

if(!preg_match("/".$_SERVER['HTTP_HOST']."/i",$_SERVER['HTTP_REFERER']))

exit('');</p>

<p>

$data_result = "SELECT `wr_subject` FROM `g5_write_test2` WHERE `ca_name` = '".$_POST['ca_name']."' ";

$data_result = sql_query($data_result);</p>

<p>$sub_op ="<option value=''>---상품선택---</option>";</p>

<p> while ($row = sql_fetch_array($data_result)) { 

     $sub_op .= "<option value = '".$row['wr_subject']."' ".get_selected($subject,$row['wr_subject']).">".$row['wr_subject']."</option>";

 }

 echo $sub_op;

 ?></p>

<p>

 

이런식으로 한번 해보세요.

 

 

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 4개

탐크루지
3년 전
답변 감사드립니다.
그런데 작동을 잘 안하는것 같아서요.. 아작스는 잘 되는것 같은데 처음 카테고리 값을 잘 못가져 오는것 같습니다. 그냥 빈칸으로만 나오네요.ㅠㅠ
D
Dessi
3년 전
1차가 안되시는건가요? 1차가 안되면 ajax도 안되야 될거에요

$ca_option 위에

$ca_option = "가든뷰|오션뷰|시티뷰";

등 값을 직접 넣어서 테스트해보세요.

게시판 테이블 명등 맞게 하셨는지 확인해보시구요.

그리고 수정시에도 해당 값이 유지되게 하실려면

<?php
$sub_op = "";

if($w=="u") {

$data_result = "SELECT `wr_subject` FROM `g5_write_test2` WHERE `ca_name` = '".$wr_1."' ";
$data_result = sql_query($data_result);
$sub_op ="<option value=''>---상품선택---</option>";

while ($row = sql_fetch_array($data_result)) {
$sub_op .= "<option value = '".$row['wr_subject']."' ".get_selected($row['wr_subject'], $wr_2).">".$row['wr_subject']."</option>";
}

} ?>
<select id="wr_2" name="wr_2" class="bo_w_select" required>
<?php echo $sub_op ;?>
</select>


이런식으로 하심 되실거에요.
탐크루지
3년 전
시간내주셔서 감사합니다. 

[code]

<?php
                        $sql = "SELECT `bo_category_list` FROM `g5_board` WHERE `bo_table` = 'g5_write_roombooking' "; //test2 게시판의 카테고리를 가져옴
                        $row = sql_fetch($sql);
                        $ca_option = "가든뷰|오션뷰|시티뷰";
                        foreach($ca_option as $val){
                            $cate_op .= "<option value = '".$val."' ".get_selected($wr_1, $val).">".$val."</option>";
                        }
                        ?>
                                <select name="wr_1" id="wr_1" required>
                                    <option value="">분류를 선택하세요</option>
                                    <?php echo $cate_op ?>
                                </select>

                        <!--2번째 제목선택-->
                        <select id="wr_subject" name="wr_subject" class="bo_w_select" required>
                        </select>
                        <script>
                        $( document ).ready(function() {    
                            $('#wr_1').change(function(e){    
                                e.preventDefault(e);
                                $.ajax({
                                    url:g5_url+'/ajax/cate.php',//php함수가 실행될 경로 및 파일
                                    type: "post",        
                                    data: {ca_name : $("#wr_1 option:selected").val() },
                                    success : function(data) {
                                    if(data){
                                        $("#wr_subject").html(data);
                                    }else{
                                        alert('결과가 없습니다');
                                    }
                                    }
                                });        
                            });
                        });
                        </script>



[/code]



아작스도 다 넣었고 테이블 명도 다 확인했는데 잘 안되네요... ㅠㅠ

데이터에 wr_1 값도 다 들어가 있고 ca_name에도 값들이 다 있습니다. ㅠㅠ
D
Dessi
3년 전
[code]
$sql = "SELECT `bo_category_list` FROM `g5_board` WHERE `bo_table` = 'g5_write_roombooking' "; //test2 게시판의 카테고리를 가져옴
$row = sql_fetch($sql);
$ca_option = "가든뷰|오션뷰|시티뷰";
[/code]



[code]
$sql = "SELECT `bo_category_list` FROM `g5_board` WHERE `bo_table` = 'roombooking' "; //test2 게시판의 카테고리를 가져옴
$row = sql_fetch($sql);
$ca_option = explode("|",$row['bo_category_list']);

[/code]

로 변경해주세요.

g5_write_roombooking 는 게시판 테이블 전체 이름이고 여기서 bo_table은 roombooking입니다.

그리고

[code]
<select id="wr_subject" name="wr_subject" class="bo_w_select" required>
</select>
[/code]

이 부분은

[code]
<?php
$sub_op2 = "";

if($w=="u") {

$data_result = "SELECT `wr_subject` FROM `g5_write_test2` WHERE `ca_name` = '".$wr_1."' ";
$data_result = sql_query($data_result);
$sub_op2 ="<option value=''>---상품선택---</option>";

while ($row = sql_fetch_array($data_result)) {
$sub_op2 .= "<option value = '".$row['wr_subject']."' ".get_selected($row['wr_subject'], $wr_2).">".$row['wr_subject']."</option>";
}

} ?>
<select id="wr_2" name="wr_2" class="bo_w_select" required>
<?php echo $sub_op2 ;?>
</select>
[/code]

이렇게 변경해야 수정시에도 유지됩니다.

댓글을 작성하려면 로그인이 필요합니다.

1년 전

크루지님과 Dessi님의 좋은 예시제공과 친절한 설명에 좋아요 누르고 갑니다

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

https://sir.kr/qa/169861

https://sir.kr/qa/126647

https://sir.kr/qa/401737

이런 것들을 참고하셔서 만드시면 될 듯합니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인