본문 바로가기
프로젝트/게시판 사이트

[html, php] 게시판사이트 만들기 4.게시판 페이지, 글/댓글 쓰기

by 바디스 2021. 3. 1.

게시판 페이지

사이트 왼쪽에 카테고리에서 선택한 게시판이 열리게된다.

게시글은 한 페이지에 5개씩 출력되고 여러 페이지로 나뉜다.

처음 이전 다음 마지막 버튼과 페이지 번호들로 페이지 이동이 가능하다.

검색창으로 제목, 작성자, 내용으로 검색하여 게시판을 검색할 수 있다.

게시판 코드는 너무 길어서 생략합니다.

 

 

글쓰기

게시판 페이지에서 글쓰기 버튼을 누르면 글쓰기 페이지로 이동한다.

제목과 내용을 입력하고 글 작성 버튼을 누르면 글이 작성된다.

파일을 업로드 가능하다.

 

<write.php> - 글작성 ui

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
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<title>게시판</title>
 
</head>
<body>
  <?$board_id=$_GET['board_id'];?>
    <div id="board_write">
        <h4>글을 작성하는 공간입니다.</h4>
            <div id="write_area">
                <form enctype="multipart/form-data" action="write_ok.php?board_id=<?echo $board_id;?>" method="post">
                    <div id="in_title">
                        <textarea name="title" id="utitle" rows="1" cols="55" placeholder="제목" maxlength="100" required></textarea>
                    </div>
 
                    <div class="wi_line"></div>
                    <div id="in_content">
                        <textarea name="content" id="ucontent" placeholder="내용" required></textarea>
                    </div>
 
                      <input type="file" name="SelectFile" />
 
 
                    <div class="bt_se">
                        <button type="submit">글 작성</button>
                    </div>
                </form>
            </div>
        </div>
    </body>
</html>
 
cs

 

<write_ok.php> - 오류를 확인하고 데이터베이스에 글을 작성하는 부분 

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
59
60
61
62
63
64
65
66
<?php
 
  include ('db_connect.php');
 
 
  $username = $_SESSION['userid'];
  $usernic = $_SESSION['user_nic'];
  $board_id = $_GET['board_id'];
  $title = $_POST['title'];
  $content = $_POST['content'];
  $date = date('Y-m-d');
 
  $upload_dir = 'uploads/';
  $upload_file = $upload_dir . $_FILES['SelectFile']['name'];
 
  $file_name = iconv("utf-8","CP949",$upload_file);
  echo "<script>
  alert('$tmpfile');
  </script>";
  print "<pre>";
  if (move_uploaded_file($_FILES['SelectFile']['tmp_name'], $file_name)) {
    print "[수신한 내용]<br><br>";
    print "PATH: " .$upload_file."<br>";
    print "제목 : ".$_POST['title']."<br>";
    print "내용 : ".$_POST['content']."<br>";
    print "파일 :".$_FILES['SelectFile']['type']."<br>";
    if($_FILES['SelectFile']['type']=="image/jpeg"||$_FILES['SelectFile']['type']=="image/gif"){
      print "<img src=$upload_file width='300'>";
    }
  }
  else {
    print "파일 업로드  실패 : ";
    switch ($_FILES[SelectFile][error]) {
      case UPLOAD_ERR_INI_SIZE:
        print "php.ini 파일의 upload_max_filesize(".ini_get("upload_max_filesize").")보다 큽니다.<br>";
      break;
      case UPLOAD_ERR_FORM_SIZE:
        print "업로드 한 파일이 Form의 MAX_FILE_SIZE 값보다 큽니다.<br>";
      break;
      case UPLOAD_ERR_PARTIAL:
        print "파일의 일부분만 전송되었습니다.<br>";
      break;
      case UPLOAD_ERR_NO_FILE:
        print "파일이 전송되지 않았습니다.<br>";
      break;
      case UPLOAD_ERR_NO_TMP_DIR:
        print "임시 디렉토리가 없습니다.<br>";
      break;
    }
    print_r($_FILES);
  }
  print "</pre>";
 
  if($username && $title && $content){
      $sql = mq("insert into ".$board_id."(id,name,title,content,date,file) values('".$username."','".$usernic."','".$title."','".$content."','".$date."','".$_FILES['SelectFile']['name']."');");
      echo "<script>
      alert('글쓰기 완료되었습니다.');
      location.href='board.php?board_id=$board_id';</script>";
    }
    else{
      echo "<script>
      alert('글쓰기에 실패했습니다.');
      history.back();</script>";
    }
?>
 
cs

 

글읽기

게시판 페이지에서 게시글을 누르면 데이터베이스에서 그 게시글을 읽어와 출력한다.

글을 읽어 올 때 댓글도 같이 읽어 온다.

 

<read.php> - 게시글과 댓글을 읽어오는 부분

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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
    include ('db_connect.php');
?>
<!doctype html>
<html>
<head>
  <meta charset="UTF-8">
  <title>게시판</title>
</head>
<body>
    <?php
    $board_id = $_GET['board_id'];
        $bno = $_GET['idx']; /* bno함수에 idx값을 받아와 넣음*/
        $hit = mysqli_fetch_array(mq("select * from ".$board_id." where idx ='".$bno."'"));
        $hit = $hit['hit'] + 1;
        $fet = mq("update ".$board_id." set hit = '".$hit."' where idx = '".$bno."'");
        $sql = mq("select * from ".$board_id." where idx='".$bno."'"); /* 받아온 idx값을 선택 */
        $board = $sql->fetch_array();
    ?>
<!-- 글 불러오기 -->
  <div id="board_read">
       <h2><?php echo $board['title']; ?></h2>
           <div id="user_info" align=right>
                  <?php echo $board['name']; ?> <?php echo $board['date']; ?> 조회:<?php echo $board['hit']; ?>
                    <div id="bo_line"></div>
            </div>
            <div>
                파일 : <a href="uploads/<?php echo $board['file'];?>" download><?php echo $board['file']; ?></a>
            </div>
            <div id="bo_content">
                <?php echo nl2br("$board[content]"); ?>
            </div>
 
    <!-- 목록, 수정, 삭제 -->
 
       <div id="bo_ser">
             <ul>
                    <li><a href="board.php?board_id=<?echo $board_id;?>">[목록으로]</a></li>
              <?if ($board['name']==$_SESSION['userid']){?>
                    <li><a href="modify.php?idx=<?php echo $board['idx']; ?>">[수정]</a></li>
                    <li><a href="delete.php?idx=<?php echo $board['idx']; ?>">[삭제]</a></li>
              <?}?>
            </ul>
      </div>
 
  </div>
  <!--- 댓글 불러오기 -->
<div class="reply_view">
    <h3>댓글목록</h3>
        <?php
            $sql3 = mq("select * from ".$board_id."_reply where con_num='".$bno."' order by idx desc");
            while($reply = $sql3->fetch_array()){
        ?>
        <div class="dap_lo">
            <div><b><?php echo $reply['name'];?></b></div>
            <div class="dap_to comt_edit"><?php echo nl2br("$reply[content]"); ?></div>
            <div class="rep_me dap_to"><?php echo $reply['date']; ?></div>
 
        </div>
    <?php } ?>
 
    <!--- 댓글 입력 폼 -->
    <div class="dap_ins">
        <form action="reply_ok.php?board_id=<?echo $board_id;?>&idx=<?php echo $bno; ?>" method="post">
            <input type="hidden" name="dat_user" id="dat_user" class="dat_user" size="15" placeholder="아이디" value=<?$_SESSION['userid']?>>
            <div style="margin-top:10px; ">
                <textarea name="content" class="reply_content" id="re_content" ></textarea>
                <button id="rep_bt" class="re_bt">댓글</button>
            </div>
        </form>
    </div>
</div><!--- 댓글 불러오기 끝 -->
<div id="foot_box"></div>
</div>
</body>
</html>
 
cs

 

<reply_ok.php> 댓글을 작성하는 부분

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
   include ('db_connect.php');
   $board_id = $_GET['board_id'];
    $bno = $_GET['idx'];
        $username = $_SESSION['userid'];
        $date = date("Y-m-d H:i:s");
    if($bno && $username && $_POST['content']){
        $sql = mq("insert into ".$board_id."_reply (con_num,id,name,content,date) values ('".$bno."','".$username."','".$username."','".$_POST['content']."','".$date."');");
        echo "<script>alert('댓글이 작성되었습니다.');
        location.href='read.php?board_id=$board_id&idx=$bno;';</script>";
    }else{
        echo "<script>alert('댓글 작성에 실패했습니다.');
        history.back();</script>";
    }
 
?>
 
cs

 

 

댓글