게시판 검색 입력 시 "undefined할 게시물을 하나 이상 선택하세요."

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
게시판 검색 입력 시 "undefined할 게시물을 하나 이상 선택하세요."

QA

게시판 검색 입력 시 "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

혹시 아미나, 나리아 빌더이신가요?

그렇다면 경우 검색을 위한 board-list 섹션 안에 잘못된 코딩이 들어있어서 그렇습니다.

board-list 클래스를 채크 해보세요

 

1982090578_1735457674.7743.png

. . . 아래의 수정과 다각적인 검증 로직으로 해결하여 보세요.

 

검색 폼 제출 시, 불완전한 요청 파라미터

또는 자바스크립트 처리 로직의 불일치로 인해 에러가 발생할 수 있습니다.

특히, <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() 호출이 발생하는지 확인하고, 불필요한 팝업 메시지를 제거합니다.

- 특정 이벤트가 모달 메시지를 트리거하는 경우,

  해당 이벤트 핸들러를 디버깅해 정확한 원인을 찾습니다.

 

답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT