최근 PHP를 사용하여 간단한 공지사항을 만들 수 있는 방법에 대하여 알려주면서 이를 정리해보았습니다. 공지사항이지만 조금만 응용하면 바로 게시판 역시 만들 수 있을거라 생각합니다.

아래의 수준은 HTML, CSS를 알고 클라이언트단의 UI만 구축할 수 있는 정도의 수준에서 설명하려 합니다. 이미 알고 계시는 부분이 있다면 양해바랍니다^^


# PHP를 사용하여 공지사항을 어떻게 만들 것인가?

공지사항을 만드려면 자료 구조, 데이터의 저장에 대한 고민이 선행되어야합니다. php는 서버를 구동하여 방문자의 접근이 가능한 환경을 구축할 뿐 데이터의 저장은 데이터베이스, db의 구축이 필요합니다.

! 그럼 DB는 어떻게 구축해야하는가?DB가 있다면 우리는 그 곳에 원하는 정보를 저장하거나 읽을 수 있을 것입니다. 그리고 php는 APM이 잘 알려져있고 가장 손쉽게 구축할 수 있으니 APM의 M에 해당하는 MySQL을 기준으로 설명합니다. 그럼 이제 우리가 해야할 일이 대략적으로 나왔군요. 이를 간단하게 적어보면...

  • 1. html, css를 사용한 공지사항 만들기
  • 2. php 서버 구축하기
  • 3. DATABASE 구축하기
  • 4. html에 php 코드를 작성하기
  • 5. php에서 데이터베이스 불러오기, 저장하기

php와 데이터베이스를 구축하는 과정은 인터넷을 찾아보시거나 APM을 사용하여 이미 구축하였다고 가정합니다. 세세한 설정 부분을 설명하려면 너무 길어질 것 같아 생략하오니 양해 부탁드립니다. 그럼 위에서부터 하나하나 알아볼까요? ^^ 먼저 html입니다.


! 1부터 4까지 html, css, php아래의 코드는 html을 작성하고 php를 사용하는 부분입니다. html 안에 php를 사용할 수 있우며아래처럼 <?php로 시작하는 부분이 바로 php가 선언된 부분입니다.

- notice.html
<h3>공지사항 보기</h3>
<div>
  <?php
    // 데이터베이스 불러와 연결하기
  ?>
</div>

여기까지는 매우 간단하죠? 이제 php가 database와 연결되어 공지사항을 불러오면 되겠습니다. 그럼 php에서 db, 데이터베이스는 어떻게 연결할까요?


! php에서 db, MySQL 연결하여 데이터 가져오기데이터베이스에 연결하기 위한 방법으로 mysqli_connect()를 사용할 수 있습니다.

<?php
  $dbc = mysqli_connect(localhost, userName, password, databaseName, port);
?>

위에서는 데이터베이스를 연결하는 코드입니다. MySQL에 설정된 계정으로 접근할 수 있도록 함수의 인자에 맞는 정보를 입력합니다. 정상적으로 연결된 경우 선언된 변수 $dbc를 사용하여 데이터베이스의 정보를 가져오거나 저장 등등 여러가지 수행이 가능합니다. 아래에서는 데이터베이스에서 원하는 값만 불러오도록 하겠습니다.


# 데이터베이스 구축 및 설계

조금 늦은 감이 있지만 불러올 db에 내용이 없군요; 데이터베이스를 만들고 테이블을 만드는 부분이 선행되야합니다. 용어를 잠시 설명하면...

! 데이터베이스 관련 용어정리아래의 용어들은 데이터베이스, 특히 관계형 데이터베이스(RDB 또는 RDBMS)에서 자주 사용되는 용어입니다.

데이터베이스 : DB에 저장되며 php에서 연결할 때 사용하는 db이름

테이블 : 데이터베이스 안에는 여러개의 테이블을 가질 수 있음. 예를들어 게시판 테이블, 공지사항 테이블, 방문자 테이블 등등을 만들어 사용 가능함

컬럼(필드) : Column, Field 영역은 데이터를 구분할 수 있는 기준이 됨. 공지사항은 id, date, title 세개의 컬럼을 갖으려함 (물론 더 많은 컬럼을 갖을 수 있습니다!)

레코드 : 하나의 셀. db에서 사용되는 데이터의 최소 단위 값
(예. 2002-01-01 <- 날짜가 date 컬럼 레코드로 저장됨)
(예2. 3 <- 3이라는 숫자가 id 컬럼 중 하나의 레코드로 저장됨)

APM을 사용하였다면 phpmyadmin을 사용할 수 있으며 여기서는 데이터베이스를 조작할 수 있는 인터페이스를 제공합니다. 여기서는 쿼리문 없이 데이터베이스를 만들거나 테이블을 만들 수도 있고 값을 넣을 수 있습니다. 아래서는 이런 방법으로 데이터베이스가 만들어졌다고 가정하여 다음과 테이블을 만들었습니다.

* Database : webisfree
* table name : notice
=============================
id  |  date               |  title
-------------------------------------------------
1   |   2017-09-22  | 공지사항 만드는 중
=============================


# php에서 데이터베이스  불러와 보여주기
이제 마지막 과정입니다. 위에서 데이터베이스를 php에 연결했으며 이제 notice 테이블의 내용을 불러와 화면에 보여주는 과정이 남았습니다.

! 데이터베이스를 불러오기 위한 쿼리문 적용
데이터베이스를 조작하려면 간단한 쿼리(Query)문을 알아야합니다. 아래에는 table의 내용을 가져오는 쿼리문을 알아봅니다. 이때 SELECT 문법을 사용합니다.

SELECT * FROM notice;

위 쿼리문은 notice테이블의 모든 정보를 읽어옵니다. 그럼 이를 php에서 어떻게 적용할까요? 먼저 적용된 쿼리를 본 후 알아보겠습니다.

<?php
  // DB connection
  $dbc = mysqli_connect(localhost, userName, password, databaseName, port);
  $query = 'SELECT * FROM notice';
  $data = mysqli_query($dbc, $query);
  $rowVal = mysqli_fetch_array($data);
?>

mysqli_query() 함수는 연결된 데이터베이스에 쿼리를 적용하고 그 결과를 반환합니다. 반환된 값을 $data에 저장하고 이를 배열로 가져와 출력되도록 mysqli_fetch_array() 함수를 적용합니다.

이제 가져온 데이터베이스에서 불러온 데이터가 $rowVal 변수에 저장되었습니다. 이를 보여주기만 하면 모든 과정은 끝입니다^^


# html에서 php 출력하기

html에서 php를 출력하는 방법으로 표현식을 사용하거나 echo 키워드를 이용할 수도 있습니다. 아래서는 echo문을 사용하여 읽어온 데이터를 html에 출력, 브라우저에서 볼 수 있도록 해보려합니다. 마지막 과정입니다!

<h3>공지사항 보기</h3>
<table>
<?php
  $dbc = mysqli_connect(localhost, userName, password, 'webisfree');

  $query = 'SELECT * FROM notice';
  $data = mysqli_query($dbc, $query);
  while($rowVal = mysqli_fetch_array($data)) {
    echo '<tr>';
    echo '<td>ID: '.$rowVal('id').'</td>';
    echo '<td>Title: '.$rowVal('title').'</td>';
    echo '</tr>'
?>
</table>
테이블로 보여주는 것이 좋을 것 같아 table태그를 사용하여 출력해 보았습니다. 여기까지 모든 과정이 끝났으며 원하는 공지사항이 출력되었습니다^^

이처럼 몇가지 함수들과 간단한 쿼리문을 알면 html에 서버를 구축, 데이터베이스를 만들어 값을 가져올 수 있습니다.