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

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

QA

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

본문

안녕하세요. 

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

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

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

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

 


<?php
$sql = "select wr_subject from g5_write_roomsubject ORDER BY wr_subject";
$result = sql_query($sql);
?>
 
<!--1번째 분류선택-->
<select>
   <option>B게시판의 분류</option>
</select>
<!--2번째 제목선택-->
<select id="wr_subject" name="wr_subject" class="bo_w_select" required>
    <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>

이 질문에 댓글 쓰기 :

답변 3

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

 

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

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

 

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

 

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

 

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

 


<?php
$sql = "SELECT `bo_category_list` FROM `g5_board` WHERE `bo_table` = 'test2' "; //test2 게시판의 카테고리를 가져옴
$row = sql_fetch($sql);
$ca_option = explode("|",$row['bo_category_list']);
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>

 

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


<?php
include_once('../common.php');
if(!preg_match("/".$_SERVER['HTTP_HOST']."/i",$_SERVER['HTTP_REFERER']))
exit('');

$data_result = "SELECT `wr_subject` FROM `g5_write_test2` WHERE `ca_name` = '".$_POST['ca_name']."' ";
$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($subject,$row['wr_subject']).">".$row['wr_subject']."</option>";
 }
 echo $sub_op;
 ?>

 

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

 

 

 

 

답변 감사드립니다.
그런데 작동을 잘 안하는것 같아서요.. 아작스는 잘 되는것 같은데 처음 카테고리 값을 잘 못가져 오는것 같습니다. 그냥 빈칸으로만 나오네요.ㅠㅠ

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>


이런식으로 하심 되실거에요.

시간내주셔서 감사합니다. 



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







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

데이터에 wr_1 값도 다 들어가 있고 ca_name에도 값들이 다 있습니다. ㅠㅠ


$sql = "SELECT `bo_category_list` FROM `g5_board` WHERE `bo_table` = 'g5_write_roombooking' "; //test2 게시판의 카테고리를 가져옴
$row = sql_fetch($sql);
$ca_option = "가든뷰|오션뷰|시티뷰";





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



로 변경해주세요.

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

그리고


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


이 부분은


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


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

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

회원로그인

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