요기보드3   필수기초 선택과목 요기보드 그누보드 로그인

요기보드 Ver.3


홈피소개 ( intro.php )

요기보드 화면의 상단 메뉴의 [홈피소개] 메뉴를 클릭하면 홈피소개 페이지로 이동하는 것을 볼 수 있을 거야.
이때 브라우저의 주소를 보면 http://사이트주소/intro.php로 “아~ 이 페이지는 intro.php에서 만들어졌구나.”를 추리할 수 있겠지?
이 파일을 에디터로 열어 보자구.

- intro.php

<?php
    include_once('./_path.php');
    $current_menu = '홈피소개' ;
    include_once('layout1.php');  // 1단 레이아웃 + 메인메뉴

    $bno = 2;
    $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME) or die('DB 접속에러!');
    $query = "SELECT `content`FROM yg_bbs WHERE bno = $bno" ;
    $result = mysqli_query($dbc, $query) or die('DB 쿼리에러 intro.php');
    $row = mysqli_fetch_array($result) ;
    $content = $row['content'];
?>
<div class="w3-content w3-padding-64 w3-border w3-white" style="max-width:1200px">
<div style="max-width:600px; margin:auto">
<?php
    echo $content; // bno=2 로 DB에서 가져온 내용을 출력 
?>
</div> <!-- 600px -->
</div> <!-- 1200px -->

<?php
include_once('footer.php'); 
?>

위 4 줄 include_once('layout1.php'); 까지는 index.php 와 동일해.
맨 아래줄에 웹페이지의 꼬리말을 보여주는 include_once('footer.php'); 도 동일하고.
그런데 중간에 웹페이지 내용을 표시하는 부분이 index.php 와는 다르게 php 코드로만 써 있는 것을 볼 수 있어.

index.php 에서는 상단메뉴, 하단 꼬리말 사이에 있는 본문 내용은 모두 index.php 파일 안에 직접 html 로 내용을 입력해서 작성했었어.
그런데 여기서는 DB에 저장된 내용을 가져와서 그 내용을 보여 줄거야.

웹사이트를 만들 때 어떤 메뉴는 내용이 자주 바뀌어야 하는 곳도 있을 수 있어.
예를들어 최근 소식이나 동향, 뉴스 같은 내용 말이지. 그런데 이런 페이지를 변경할 때 마다 FTP로 접속해서 파일을 다운 받아서 에디터로 내용을 수정하고 다시 FTP 로 올린다면 . . 상당히 귀찮은 작업이 될거야.

이때 관리자페이지 게시판에 특정 글을 지정해서 그곳의 글을 수정하면 이 페이지 내용도 같이 수정되어 보인다면 편리하지 않겠어?
그러면 관리자는 FTP 나 에디터 필요없이 관리자로 로그인해서 관리자페이지에서 해당 글을 수정만 하면 되겠지?

중간에 있는 코드들이 바로 DB에서 특정 번호의 글을 가져와서 화면에 뿌려 주는 역할을 하는거야.
코드를 분석해 보자구..

▶ $bno = 2
이전 [관리자 등록] 화면을 공부면서 관리자 게시판에 등록한 글 번호를 기억해 두라고 했지?
바로 그 번호야.
지금 요기보드 설치후 기본값은 2 이지만 여러분이 작성한 글 번호는 다를 수 있어.
해당 번호로 한 번은 수정해 줘야해.

▶ $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME) or die('DB 접속에러!');
PHP 를 공부하면서 배운 명령이야. mySQL 데이터베이스에 접속하는 명령이지.

▶ $query = "SELECT `content` FROM yg_bbs WHERE bno = $bno" ;
역시 PHP 에서 배운 명령이야. 이때 $bno 에는 게시글 번호값(2)이 들어가 있겠지?
해석하자면 "yg_bbs 테이블에서 bno=2 인 자료를 찾아서 content 내용을 가져와라!"

▶ $result = mysqli_query($dbc, $query) or die('DB 쿼리에러 intro.php');
실제 위 쿼리문을 실행해서 결과가 있으면 이 내용을 $result 라는 배열 안에 저장이 될거야.
쿼리문에 문제가 있으면 'DB 쿼리에러 intro.php' 라는 에러만 보여주고 끝나겠지.

▶ $row = mysqli_fetch_array($result) ;
이것도 PHP 학습에서 배운거야.
위 쿼리의 결과를 담은 $result 에서 한 줄을 꺼내서 $row 라는 배열에 저장하는거야.
여기서 while 반복문을 사용하지 않은 것은 결과가 보나마나 딱 1개이기 때문이야.
왜냐하면 yg_bbs 테이블에서 bno 는 고유번호로 똑같은 번호가 1개 밖에 없기 때문이지.
(여기서 while 을 써도 문제는 없어. 그렇지만 1 바퀴 밖에 돌지 않을거야. 결과가 1개 뿐이니..)

▶ $content = $row['content'];
이렇게 yg_bbs 테이블에서 가져온 내용중 content 의 내용을 $content 변수에 저장해 두었어.
그리고 여기서 php 코드를 끝내고 다음에는 내용이 출력될 자리와 크기를 아래와 같은 html 로 정한 것을 볼 수 있어.
<div class="w3-content w3-padding-64 w3-border w3-white" style="max-width:1200px">
<div style="max-width:600px; margin:auto">

▶ echo $content;
마지막으로 DB에서 가져와 $content 변수에 저장해 두었던 글내용을 이 자리에 출력하는 거야.
그리고 글내용 자리를 위해서 두 개의 <div> 를 사용했으니 두 개 다 닫아 주어야 겠지?

</div> <!-- 600px -->
</div> <!-- 1200px -->

자, 이제 코드 내용들이 이해되지?
관리자페이지 게시글 번호와 여기의 $bno 값이 같은지 확인하고, 틀리면 수정한 뒤 FTP로 intro.php 파일을 서버로 다시 전송한 뒤 새로고침 해서 확인해봐.
또 관리자페이지에 가서 해당 글의 내용을 변경하고 다시 [홈피소개]를 가서 내용이 함께 변경되어 보여 지는 것도 확인해 보고....

보통 회사용 웹페이지에서는 처음 들어가는 메인화면은 전체를 그림으로 근사하고 화려하게 꾸며두고, 메뉴를 선택해 들어가면 다음 부터는 요기보드 처럼 실용적인 화면으로 꾸미는 경우가 많잖아.
이러한 경우 index.php 는 요기보드 없이 디자이너의 솜씨를 한껏 발휘한 화면으로 꾸미고, 일단 메뉴 안에 들어가서는 지금 intro.php 처럼 정보 위주로 표시할 때는 지금 이 방법이 좋아.
그러면 처음에 개발자가 이렇게 만들어 두면 실제 홈페이지를 운영하는 회사의 관리자가 FTP 사용법이나 php 를 잘 몰라도 html 만으로도 관리자 게시판에 가서 내용을 수정할 수 있을테니까..

계속해서 다음 공부를 해야지..


목차제 목조회
284
161
127
115
120
112
70
83
64
65
81
97
114
48
67
68
68
86