게시판의 제목을 셀렉트 박스로 구현... 채택완료
안녕하세요.
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개
실시간으로 값을 가져 와야하니 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개
$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>
이런식으로 하심 되실거에요.
[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에도 값들이 다 있습니다. ㅠㅠ
$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]
이렇게 변경해야 수정시에도 유지됩니다.
댓글을 작성하려면 로그인이 필요합니다.
이런 것들을 참고하셔서 만드시면 될 듯합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
그런데 작동을 잘 안하는것 같아서요.. 아작스는 잘 되는것 같은데 처음 카테고리 값을 잘 못가져 오는것 같습니다. 그냥 빈칸으로만 나오네요.ㅠㅠ