뷰페이지에서 게시판 카테고리 옆에 게시판목록을 셀렉트 박스로 쓰고싶습니다.
본문
보통 카테고리가 1차카테 2차카테고리가 있는데
저는 1차카테고리안에 있는 게시글목록을 바로 셀렉트박스에 넣어 이동시키고 싶습니다.
예를들어
딸기 > a게시글, b게시글, c게시글
포도 > a게시글, b게시글
해당카테고리에 있는 게시글목록을 바로 불러와서 셀렉트박스를 선택하면 바로이동할 수 있게요..
팁이 있을까요
답변 2
이걸 참고해 보세요~
1. HTML 파일에서 셀렉트 박스와 목록을 표시할 영역을 준비
<select id="categorySelect">
<option value="">카테고리 선택</option>
<!-- 1차 카테고리 옵션들 -->
</select>
<select id="postSelect">
<option value="">게시글 선택</option>
<!-- 해당 카테고리의 게시글 목록 옵션들 -->
</select>
2.JavaScript에서 1차 카테고리 선택 시 해당 카테고리에 있는 게시글 목록을 AJAX로 가져와서 셀렉트 박스에 추가
$(document).ready(function() {
// 1차 카테고리 변경 시 이벤트 처리
$("#categorySelect").change(function() {
var selectedCategory = $(this).val();
if (selectedCategory !== "") {
// AJAX 요청으로 해당 카테고리의 게시글 목록 가져오기
$.ajax({
url: "get_posts.php", // 게시글 목록을 가져올 PHP 파일 경로
method: "POST",
data: { category: selectedCategory },
dataType: "json",
success: function(response) {
if (response.success) {
var postOptions = "";
$.each(response.posts, function(index, post) {
postOptions += '<option value="' + post.id + '">' + post.title + '</option>';
});
// 게시글 목록을 셀렉트 박스에 추가
$("#postSelect").html('<option value="">게시글 선택</option>' + postOptions);
}
}
});
} else {
// 1차 카테고리가 선택되지 않은 경우 게시글 셀렉트 박스 초기화
$("#postSelect").html('<option value="">게시글 선택</option>');
}
});
});
3. PHP 파일 에서 AJAX 요청을 처리하여 해당 카테고리에 있는 게시글 목록을 반환
<?php
// DB 연결 등 필요한 설정 수행
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$selectedCategory = $_POST["category"];
// 선택된 카테고리에 해당하는 게시글 목록을 DB에서 가져오는 로직 작성
// 가져온 게시글 목록을 JSON 형식으로 반환
$response = array(
"success" => true,
"posts" => array(
array("id" => 1, "title" => "a게시글"),
array("id" => 2, "title" => "b게시글"),
array("id" => 3, "title" => "c게시글")
)
);
echo json_encode($response);
exit;
}
?>
view.skin.php
적당한 곳에
<select
onchange="location.href='?bo_table=<?=$bo_table?>&wr_id='+this.value;" ><?php
$r0=sql_query("select wr_id, wr_subject from $write_table where ca_name='$sca' and wr_is_comment=0");
while( $r1= sql_fetch( $r0)){
Echo '<option value="', $r1['wr_id'],'" >', $r1['wr_subject'],'</option>';
}
?></select>