만들면서 배우는 CodeIgniter Q&A

제목 126p 글쓰기 관련 질문입니다.
글쓴이 프로그래밍좀비 작성시각 2014/11/14 14:09:02
댓글 : 1 추천 : 0 스크랩 : 0 조회수 : 10311   RSS
우선 컨트롤러 부분에 write() 함수부분이구요

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
function write()
    {
        echo '<meta http-equiv ="Content-Type" content="text/html; charset=utf-8"/>';
        if( $_POST )
        {
            // 글쓰기 POST 전송 시
 
            // 경고창 헬퍼 로딩
            $this->load->helper('alert');
 
            // 주소 중에서 page 세그먼트가 있는지 검사하기 위해 주소를 배열로 변환
            $uri_array = $this->segment_explode($this->uri->uri_string());
 
            if( in_array('page', $uri_array))
            {
                $pages = urldecode($this->url_explode($uri_array, 'page'));
            }
            else
            {
                $pages = 1;
            }
 
            if(!$this->input->post('subject', TRUE) AND !$this->input->post('contents', TRUE))
            {
                // 글 내용이 없을 경우, 프로그램단에서 한 번 더 체크
                alert('비정상적인 접근 입니다.','/bbs/board/lists/'.$this->uri->segment(3).'/page/'.$pages);
                exit;
            }
 
            // var_dump($_POST);
            $write_data = array(
                'table'=>$this->uri->segment(3),
                'subject' => $this->input->post('subject',TRUE),
                'contents' => $this->input->post('contents',TRUE)
                );
 
            $result = $this->board_m->insert_board($write_data);
 
 
            if($result)
            {
                //  글 작성 성공 시 게시물 목록으로
                alert('입력되었습니다.', '/bbs/board/lists/'.$this->uri->segment(3).'/page/');
                exit;
            }
            else
            {
                // 글 실패 시 게시물 목록으로
                alert('다시 입력해 주세요.','/bbs/board/lists/'.$this->uri->segment(3).'/page/'.$pages);
                exit;
            }
        }
        else
        {
            // 쓰기 폼 view 호출
            $this->load->view('board/write_v');
        }
    }


모델 부분 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function insert_board($arrays)
    {
        $insert_array = array(
                'board_pid' => 0, // 원글이라 0을 입력, 댓글일 경우 원글 번호 입력.
                'user_id' => 'advisor', // 7장에서 로그인 처리후엔 로그인한 아이디
                'user_name' =>'advisor',
                'subject' => $arrays['subject'],
                'contents' => $arrays['contents'],
                'reg_date' => date("Y-m-d H:i:s")
            );
        $result = $this->db->insert($arrays['table'],$insert_array);
 
        return $result;
    }



뷰 부분 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<script>
$(document).ready(function(){
    $("#write_btn").click(function(){
        if($("#input01").val() == ''){
        alert('제목을 입력해주세요.');
        $("#input01").focus();
        return false;
    }else if($(#input02).val() == ''){
        alert('내용을 입력해주세요.');
        $("#input02").focus();
        return false;
    }else{
        $("#write_action").submit();
    }
    });
});
</script>
<article id="board_area">
<header>
    <h1></h1>
</header>
    
    <form class="form-horizontal" method="post" action="" id="write_action">
    <fieldset>
        <legend>게시물 쓰기</legend>
        <div class="control-group">
            <label class="control-label" for="input01">제목</label>
            <div class="controls">
                <input type="text" class="input-xlarge" id="input01" name="subject">
                <p class="help-block">게시물의 제목을 써주세요.</p>
            </div>
            <label class="control-label" for="input02">내용</label>
            <div class="controls">
                <textarea class="input-xlarge" id="input02" name="contents" rows="5"></textarea>
                <p class="help-block">게시물의 내용을 써주세요.</p>
            </div>
 
            <div class="form-actions">
                <button type="submit" class="btn btn-primary" id="write_btn">작성</button>
                <button class="btn" onclick="document.location.reload()">취소</button>
            </div>
        </div>
    </fieldset>
        
    </form>
 
</article>


이렇게 인데 문제점이 글도 다 작성되고 크게 문제될게 없는데 

글쓰기를 할때 view에서 제목이랑 내용 둘다 없을경우에는 "비정상적인 접근 입니다."

문구가 뜨는데 둘중에 하나만 적혀있으면 글 등록이 되구요

그리고 
 
<script>
$(document).ready(function(){
    $("#write_btn").click(function(){
        if($("#input01").val() == ''){
        alert('제목을 입력해주세요.');
        $("#input01").focus();
        return false;
    }else if($(#input02).val() == ''){
        alert('내용을 입력해주세요.');
        $("#input02").focus();
        return false;
    }else{
        $("#write_action").submit();
    }
    });
});
</script>


이 스크립트가 먹히질 않습니다. header_v.php 에 head태그 안에 넣어보기도했고

그냥 저렇게 사용도 해보았는데 제목이랑 내용을 적지 않고 쓰기를 누르면

"비정상적인 접근 입니다." 라는 Controller의 내용이 출력되구요

제목이나 내용 둘중 하나만 쓰면 그냥 그대로 글등록이 되어버립니다

그리고 취소버튼을 눌렀을 경우에도 "입력되었습니다" 라고 하면서 글등록이 되어버립니다.

뭐가 문제일까요??






 
 다음글 Chapter 8. Ajax에 나오는 쿠키에 대한 질문... (3)
 이전글 123p 질문있습니다 ! (3)

댓글

변종원(웅파) / 2014/11/17 18:56:34 / 추천 0
ie나 크롬, 파이어폭스에서 개발자도구로 보세요. 자바스크립트 에러가 났을겁니다.

또는 공백이 넘어갔을 수도 있구요