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

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

QA

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

답변 3

본문

안녕하세요. 

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>


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

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 54
© SIRSOFT
현재 페이지 제일 처음으로