6. PHP 게시판 만들기, view 제작 1

2015. 4. 5. 23:53
저자 : Kurien

주의: 본 게시판은 보안을 생각하지 않고 만들어졌으므로 실제로 사용되어서는 안되는 코드입니다.

공부할 때 게시판이 이처럼 동작한다는 정도로만 이해해주세요.


이번에는 글을 보여주는 view.php를 제작할 차례입니다.


20150405_project.zip


먼저 위의 파일을 받아서 view.php 부분을 봅시다.


<?php

require_once("../dbconfig.php");

$bNo = $_GET['bno'];


$sql = 'select b_title, b_content, b_date, b_hit, b_id from board_free where b_no = ' . $bNo;

$result = $db->query($sql);

$row = $result->fetch_assoc();

?>

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title>자유게시판 | Kurien's Library</title>

<link rel="stylesheet" href="./css/normalize.css" />

<link rel="stylesheet" href="./css/board.css" />

</head>

<body>

<article class="boardArticle">

<h3>자유게시판 글쓰기</h3>

<div id="boardView">

<h3 id="boardTitle"><?php echo $row['b_title']?></h3>

<div id="boardInfo">

<span id="boardID">작성자: <?php echo $row['b_id']?></span>

<span id="boardDate">작성일: <?php echo $row['b_date']?></span>

<span id="boardHit">조회: <?php echo $row['b_hit']?></span>

</div>

<div id="boardContent"><?php echo $row['b_content']?></div>

</div>

</article>

</body>

</html>


view.php는 데이터베이스에 있던 데이터를 화면에 보여주는 간단한 코드입니다.

http://kurien.co.kr/project/board/ 에서 글을 하나 클릭해보면 알겠지만,

단순히 view.php로 끝나는게 아니라 http://kurien.co.kr/project/board/view.php?bno=43처럼 bno이라는 값이 존재합니다.

이 bno을 가지고 데이터베이스의 글을 검색, 출력하게 됩니다.


먼저 $bNo = $_GET['bno'];을 적어서 url 뒤의 bno의 값을 변수에 입력합니다.

그 다음 sql문을 만드는데, 여기서 $bNo의 값을 이용해서 하나의 데이터를 지정해줘야합니다.

여기서 b_no은 primary key(기본 키) 였으니 중복되는 값이 없을 것이고, 여기서 지정되는 번호는 단 하나의 게시물을 출력하겠죠?

$sql을 가지고 쿼리를 전송하고, fetch_assoc을 통해서 데이터를 받아옵니다.

여기서 mysqli_fetch_array(), mysqli_fetch_assoc(), mysqli_fetch_row()라는 세 가지의 방식이 있는데요.

세 가지의 차이를 알아봅시다.


먼저 fetch_array()를 통해서 $row라는 변수에 데이터를 받아오게 되면 $row['b_no'] 혹은 $row[0]으로 결과를 출력할 수 있습니다.

fetch_assoc()의 경우에는 $row['b_no']만 가능하고, fetch_row는 $row[0]으로만 출력이 가능합니다.


저는 주로 fetch_assoc()을 쓰는데, fetch_array()의 경우 쓸대없이 하나의 데이터를 두개의 결과로 표시해서 메모리가 낭비 되서 그렇구요,

또 하나의 이유는 fetch_row()를 사용할 경우엔 어떤 데이터를 가리키는지를 쉽게 알기 힘듭니다.


이 부분도 취향이니 원하는대로 사용하시면 되겠습니다.


데이터는 $row 변수에 받아 뒀으니 이제 출력만 남았습니다.

CSS 조금과 HTML을 이용해서 대충 폼을 만들고 거기에 <?php echo $row[키]?>를 통해서 출력했습니다.


입력을 해보신분이 있다면 textarea에서 엔터를 쳤을 때 이상한 점을 발견할 수 있을겁니다.

분명 엔터를 여러번 쳤는데도 view.php에서 보면 띄어쓰기만 한번 되어있는 것처럼 보일꺼에요.


이유를 설명해보자면, 혹시 html을 작성할 때 엔터를 여러번 쳐 본적이 있으신가요?

아무리 엔터를 쳐도 띄어쓰기 한번만 되는 걸 알 수 있습니다.

<br>을 쳐야만 브라우저에서 엔터를 친 것과 같은 효과를 얻을 수 있죠.


여기서도 마찬가지로 엔터를 치기 위해서는 <br>을 사용해야 하지만,

HTML을 모르는 사용자에게 엔터를 쓸 때마다 <br>을 사용하라고할 수 없겠죠.


이런 경우에는 PHP 함수 중 하나인 nl2br이라는 함수를 사용하면 됩니다.

이 부분은 아직 위에 올려둔 파일에는 적용하지 않았구요,

일단은 게시판 형태를 먼저 갖추고 난 뒤에 수정할 부분입니다.


오늘은 여기까지 적도록 하겠습니다!

진행사항이 궁금하시다면 http://kurien.dothome.co.kr로 접속해주세요~

궁금한 사항은 댓글에 남겨주세요!