게시판 검색 입력 시 "undefined할 게시물을 하나 이상 선택하세요."
본문
아래 코드로 작성하면, "undefined할 게시물을 하나 이상 선택하세요." 모달이 나와요. 뭐가 문제일까요<!-- 게시판 검색 시작 { --> <fieldset id="bo_sch"> <legend>게시물 검색</legend> <form name="fsearch" method="get"> <input type="hidden" name="bo_table" value="<?php echo $bo_table ?>"> <input type="hidden" name="sca" value="<?php echo $sca ?>"> <input type="hidden" name="sop" value="and"> <label for="sfl" class="sound_only">검색대상</label> <select name="sfl" id="sfl"> <option value="wr_subject"<?php echo get_selected($sfl, 'wr_subject', true); ?>>제목</option> <option value="wr_content"<?php echo get_selected($sfl, 'wr_content'); ?>>내용</option> <option value="wr_subject||wr_content"<?php echo get_selected($sfl, 'wr_subject||wr_content'); ?>>제목+내용</option> <option value="mb_id,1"<?php echo get_selected($sfl, 'mb_id,1'); ?>>회원아이디</option> <option value="mb_id,0"<?php echo get_selected($sfl, 'mb_id,0'); ?>>회원아이디(코)</option> <option value="wr_name,1"<?php echo get_selected($sfl, 'wr_name,1'); ?>>글쓴이</option> <option value="wr_name,0"<?php echo get_selected($sfl, 'wr_name,0'); ?>>글쓴이(코)</option> </select> <label for="stx" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label> <input type="text" name="stx" value="<?php echo stripslashes($stx) ?>" required id="stx" class="frm_input required" size="15" maxlength="20"> <input type="submit" value="검색" class="btn_submit"> </form> </fieldset> <!-- } 게시판 검색 끝 -->
답변 4
저부분말고 목록부분이면 그부분 전체적인 소스코드를 올려보셔야 될거에요
게시판목록도 form으로 쌓여있는데요. 그안에 다시 검색form을 넣으신거같습니다. 중첩안되게 밖으로 이동해보세요
혹시 아미나, 나리아 빌더이신가요?
그렇다면 경우 검색을 위한 board-list 섹션 안에 잘못된 코딩이 들어있어서 그렇습니다.
board-list 클래스를 채크 해보세요
. . . 아래의 수정과 다각적인 검증 로직으로 해결하여 보세요.
검색 폼 제출 시, 불완전한 요청 파라미터
또는 자바스크립트 처리 로직의 불일치로 인해 에러가 발생할 수 있습니다.
특히, <form>에서 method="get" 설정에 따라 URL 파라미터가 올바르게 전달되지 않거나,
stx(검색어) 값이 비어 있을 경우 이러한 문제가 나타날 가능성이 큽니다.
추가로, board-list 섹션의 HTML 구조 문제나 JavaScript 이벤트 핸들러의 충돌로 인해
해당 모달 팝업이 트리거될 가능성도 있습니다.
★ HTML 폼 검증
- required 속성이 제대로 작동하지 않거나 브라우저의 기본 검증 로직이
동작하지 않을 경우를 대비해, 서버 측에서도 입력값 검증을 추가합니다.
- <input> 요소에 value가 빈 상태로 제출되지 않도록 자바스크립트로 사전 확인합니다.
<form name="fsearch" method="get" onsubmit="return validateSearchForm();">
<input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
<input type="hidden" name="sca" value="<?php echo $sca ?>">
<input type="hidden" name="sop" value="and">
<label for="sfl" class="sound_only">검색대상</label>
<select name="sfl" id="sfl">
<option value="wr_subject"<?php echo get_selected($sfl, 'wr_subject', true); ?>>제목</option>
<option value="wr_content"<?php echo get_selected($sfl, 'wr_content'); ?>>내용</option>
<option value="wr_subject||wr_content"<?php echo get_selected($sfl, 'wr_subject||wr_content'); ?>>제목+내용</option>
<option value="mb_id,1"<?php echo get_selected($sfl, 'mb_id,1'); ?>>회원아이디</option>
<option value="mb_id,0"<?php echo get_selected($sfl, 'mb_id,0'); ?>>회원아이디(코)</option>
<option value="wr_name,1"<?php echo get_selected($sfl, 'wr_name,1'); ?>>글쓴이</option>
<option value="wr_name,0"<?php echo get_selected($sfl, 'wr_name,0'); ?>>글쓴이(코)</option>
</select>
<label for="stx" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>
<input type="text" name="stx" value="<?php echo stripslashes($stx) ?>" required id="stx" class="frm_input required" size="15" maxlength="20">
<input type="submit" value="검색" class="btn_submit">
</form>
<script>
function validateSearchForm() {
const searchInput = document.getElementById('stx');
if (!searchInput.value.trim()) {
alert('검색어를 입력하세요.');
searchInput.focus();
return false;
}
return true;
}
</script>
★ PHP 서버 측 검증
검색 요청이 올바르게 처리되는지 확인하고,
$_GET 배열에서 필요한 값이 제대로 전달되었는지 검증합니다.
<?php
if (!isset($_GET['stx']) || trim($_GET['stx']) === '') {
echo '<script>alert("검색어를 입력해야 합니다."); history.back();</script>';
exit;
}
?>
★board-list 섹션 내의 HTML 구조가 올바르게 작성되지 않으면,
검색 기능과 다른 UI 요소(예: 게시물 선택 체크박스) 간 충돌이 발생할 수 있습니다.
form 태그와 게시물 체크박스 간의 명확한 분리를 통해,
서로 다른 UI가 독립적으로 동작하도록 합니다.
<section id="board-list">
<form name="fsearch" method="get">
<label>검색어: <input type="text" name="stx"></label>
<button type="submit">검색</button>
</form>
<ul>
<li><input type="checkbox" name="chk" value="1"> 게시물 1</li>
<li><input type="checkbox" name="chk" value="2"> 게시물 2</li>
</ul>
</section>
★ 자바스크립트 디버깅
- list.skin.php와 관련된 자바스크립트 파일(/js/common.js 또는 /js/jquery*.js)에서
alert() 호출이 발생하는지 확인하고, 불필요한 팝업 메시지를 제거합니다.
- 특정 이벤트가 모달 메시지를 트리거하는 경우,
해당 이벤트 핸들러를 디버깅해 정확한 원인을 찾습니다.
!-->!-->!-->