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

고수님들 도와주세요...ㅠㅠ 여분필드를 카테고리로 사용하려고 합니다 채택완료

</p>

<p>                <!-- 장르 -->

                <div class="select" id="genresSelect">

                    <input type="radio" id="radio-all-genres" name="wr_5" value="" <?php if (empty($_GET['wr_5'])) { echo 'checked'; } ?>>

                    <label for="radio-all-genres">전체</label></p>

<p>                    <?php

                    $genres = array('액션', '롤플레잉', '퍼즐', '어드벤처', '시뮬레이션', '음악', '스포츠', '아케이드');

                    foreach ($genres as $genre) {

                        $checked = (isset($_GET['wr_5']) && $_GET['wr_5'] == $genre) ? 'checked' : '';

                        echo '<input type="radio" id="radio-' . $genre . '" name="wr_5" value="' . $genre . '" ' . $checked . '>';

                        echo '<label for="radio-' . $genre . '">' . $genre . '</label>';

                    }

                    ?>

                </div>
위와 같이 wr_5를 게시물리스트에서 라디오버튼으로 만들어서 카테고리처럼 사용하려고 합니다.

 

데이터 제공받아서 크롤러로 글을 자동으로 등록해주고 있는데 분류가 두 개 이상 들어가는 게 있습니다.

 

문제가 발생하는 것이 무엇이냐면  wr_5에 데이터 값이 액션,롤플레잉으로 입력되어 있으면 액션 버튼을 눌렀을때 필터링이 잘되는데 롤플레잉으로 입력되어 있으면 필터링이 되질 않습니다ㅠㅠ

 

콤마로 구분되어 있는 두번째 단어를 인식 못하는 것 같은데 이것을 해결 할 수 있는 방법이 있을까요?

 

초보자가 게임 커뮤니티를 만들고 있는데 이것 때문에 20시간 잠도못자고 씨름하고 있습니다.ㅠㅠ

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

답변 3개

채택된 답변
+20 포인트

$_get 이게 아니라 게시판 읽기 나 글쓰기 구분해서 써야되요

$write['wr_5'] 입력폼이면 이걸로 해야되구요 

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

답변에 대한 댓글 9개

$_get 을 $list[$i] 이런식으로 바꾸라는 말씀인가요?
네! 리스트면 당연히 $list[$i] 이거에요 또한 겟으로 날린다면 $wr_5 로도 되구요
리스트로바꿔도안됩니다..ㅠㅠ라디오버튼 체크된게 사라져버려요
음.. 아! 배열로 해야되요 wr_5[] 이렇게 네임을 줘야되요
wr_5[] 로 수정했는데 동일하게 두번째 항목은 필터링이 안되고 체크가 풀리는 현상이 유지 됩니다..ㅠㅠ
$_GET['wr_5'] == $genre 이거를 비교해보세요 var_dump($_GET['wr_5'] == $genre); 해보면 결과값이?
$_GET['wr_5'] 를 쓴것이랑 $[$list][$i]['wr_5[]']를 사용한것 둘다 bool(false) 이라고 나옵니다..ㅠㅠ
$genres = array('액션', '롤플레잉', '퍼즐', '어드벤처', '시뮬레이션', '음악', '스포츠', '아케이드');
foreach ($genres as $genre) {
$checked = '';
if (isset($_GET['wr_5'])) {
$categories = explode(',', $_GET['wr_5']); // wr_5 값을 콤마로 분할
if (in_array($genre, $categories)) { // 특정 카테고리가 분할된 배열에 있는지 확인
$checked = 'checked';
}
}
echo '<input type="radio" id="radio-' . $genre . '" name="wr_5" value="' . $genre . '" ' . $checked . '>';
echo '<label for="radio-' . $genre . '">' . $genre . '</label>';
흑흑... explode를 적용해도 두번째 단어를 필터링하지 못하네요...

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

디비확인해보세요 어떤식으로 저장이되는지요 wr_5 옵션 카테고리 확인 바랍니다.

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

답변에 대한 댓글 2개

데이터베이스에서는 wr_5 가 두개 이상일 경우

1개 -> 퍼즐

2개 -> 액션,롤플레잉

3개 -> 액션,롤플레잉,퍼즐

이렇게 콤마로 구분되어 저장되고 있습니다ㅠ

원하는것은 라디오버튼을 눌렀을때

wr_5 값이 액션,롤플레잉이면

액션을 클릭했을때도 해당 게시물이 나오고 롤플레잉을 눌러도 나오게 하는 것입니다..ㅠㅠ
<div class="select" id="genresSelect">
<input type="checkbox" id="checkbox-all-genres" name="wr_5[]" value="" <?php if (empty($_GET['wr_5'])) { echo 'checked'; } ?>>
<label for="checkbox-all-genres">전체</label>
<?php
$genres = array('액션', '롤플레잉', '퍼즐', '어드벤처', '시뮬레이션', '음악', '스포츠', '아케이드');
foreach ($genres as $genre) {
$checked = (isset($_GET['wr_5']) && in_array($genre, $_GET['wr_5'])) ? 'checked' : '';
echo '<input type="checkbox" id="checkbox-' . $genre . '" name="wr_5[]" value="' . $genre . '" ' . $checked . '>';
echo '<label for="checkbox-' . $genre . '">' . $genre . '</label>';
}
?>
</div>
라디오버튼을 체크박스wr_5[]로 이렇게 바꿔보세요

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

$categories 디버깅 했을때 배열로 나온거 맞나요?

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

답변에 대한 댓글 3개

카테고리로 디버깅 var_dump($categories); 했을 때 각 버튼클릭했을때 아래처럼 나옵니다..ㅠㅠ

array(1) {
[0]=>
string(6) "액션"
}


array(1) {
[0]=>
string(12) "롤플레잉"
}


array(1) {
[0]=>
string(6) "퍼즐"
}
$categories[0] 이렇게 해야될것 같아요
아니면 prin_r2 로도 디버깅해보시고 맞다면 배열 키를 0으로 줘야될거에요
$categories[0] 를 해봐도 안되네요.. 그냥 그누보드5 자체에서 동일 여분필드에서 데이터가 2개이상이면 첫번째 값만되고 두번째 값 검색은 지원 안되는것 같네요..ㅠㅠ

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

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

로그인

전체 질문 목록

🐛 버그신고