7. PHP 홈페이지 만들기 프로그램 메뉴 3
이번엔 프로그램을 누르면 프로그램에 자세한 내용이 출력되는 view.php 부분입니다.
이전과 크게 다른 점이 없으니 1편부터 읽으셨다면 이해가 쉽게 될꺼에요!
바로 시작하겠습니다!
/programs/view.php
<?php
require_once '../layout.inc';
require_once '../db.php';
$base = new Layout;
$base->link = '../style.css';
$no = $_GET['v'];
if(!isset($no))
{
header("Content-Type: text/html; charset=UTF-8");
echo "<script>alert('존재하지 않는 글입니다.'); location.replace('./');</script>";
exit;
}
function ThisTable($cate, $pmenu)
{
while (list($key, $value) = each($pmenu))
{
if($cate == $value)
{
$cate = $key;
}
}
return $cate;
}
$base->style='
div.wrap {border:1px solid #ddd;min-height:580px;padding:8px;}
div.wrap div {padding:8px;}
div.header{border-top:3px solid #aaa;border-bottom:3px solid #aaa;}
div.header > h2{margin:0;}
div.name, div.date, div.os{float:left;}
div.content{margin-top:20px;}
div.image {border:1px solid #ddd;text-align:center;}
div#paging{text-align:center;}
div#paging > a{padding:2px 5px 2px 5px;border:1px solid transparent;}
div#paging > b{padding:2px 5px 2px 5px;border:1px solid transparent;}
div#paging > a:hover{border:1px solid #ddd;}
';
$db = new DBC;
$db->DBI();
$db->query = "select no, id, date, time, category, title, content, link, OS, korean, image, licence from programs where no=".$no." limit 0, 1";
$db->DBQ();
$data = $db->result->fetch_row();
if(!isset($data))
{
header("Content-Type: text/html; charset=UTF-8");
echo "<script>alert('존재하지 않는 글입니다.'); location.replace('./');</script>";
exit;
}
switch($data[11])
{
case 1:
$licence='페이웨어 : 개인, 기업 유료';
break;
case 2:
$licence='부분적 프리웨어 : 개인 무료, 기업 유료';
break;
case 3:
$licence='프리웨어 : 개인, 기업 무료';
break;
case 4:
$licence='쉐어웨어 : 일정기간 이후 유료';
break;
case 5:
$licence='부분적 쉐어웨어 : 개인 메일 인증 시 무료, 기업 유료';
break;
default:
$licence='페이지 오류입니다.';
break;
}
$cate = ThisTable($data[4], $base->pmenu);
$base->content = $base->content."
<div class='wrap'>
<div class='header'><h2>".$data[5]."</h2></div>
<div class='name'><b>".$data[1]."</b></div>
<div class='date'>".$data[2]." ".$data[3]."</div>
<div class='category'>카테고리 : <a href='./?tn=".$data[4]."'>".$cate."</a></div>
<div class='os'>OS : ".$data[8]."</div>
<div class='kr'>한국어 지원 : ".$data[9]."</div>
<div>".$licence."</div>
<div class='link'>다운로드 페이지 : <a href='".$data[7]."' target='_blank'>연결하기</a></div>
<div class='image'><img class='maxwidth' src='.".$data[10]."'/></div>
<div class='content'>".nl2br($data[6])."</div>
</div>";
$base->LayoutMain();
?>
역시 길지만, /programs/index.php에 비하면 상당히 적은 수네요.
먼저 require를 통해 파일을 include 시키는 건 아실테구요.
쭈욱 내려가서 $no 부분입니다.
6. PHP 홈페이지 만들기 프로그램 메뉴 2 에서 봤던 부분 중에 <a href='./view.php?v=".$data[0]."'>와 같은 부분이 있는데요.
이 부분에서 $data[0]는 글의 번호를 말합니다.
그러므로 이 링크를 누르게 되면 view.php?v=글번호로 이동 하는거죠.
$no은 여기서 v=글번호의 글번호 부분이 됩니다.
이걸 가지고 어떤 글인지 찾게 되는거죠.
그 다음 if문이 있는데, 만약 $no 변수에 값이 존재하지 않는다면, 존재하지 않는 글이라는 경고창과 함께 이전 페이지로 돌아갑니다.
변수가 있다면 계속 진행하게 되는데요.
function 부분은 나중에 다시 사용하므로 일단 있다고 기억해주시고 넘어가주세요.
그 다음 $base->style은 역시 이 페이지의 스타일(CSS)를 지정해주는 코드구요.
바로 아래 $db = new DBC;를 통해 DB 연동을 시작해준 후 쿼리를 전송합니다.
no, id, date, time, category, title, content, link, OS, korean, image, licence를 가져오는 쿼리구요.
view.php에 보일 페이지는 하나 뿐이니 no 부분이 $no과 같은걸 limit 0, 1로 하나만 가져옵니다.
그 다음 $db->DBQ로 쿼리 전송!
$data = $db->result->fetch_row()를 사용하면 쿼리 전송의 결과 값이 $data로 배열로 들어갑니다.
여기서 if문으로 만약 $data에 값이 존재하지 않는다면 no과 같은 $no이 없다는 말이므로 존재하지 않는 글이라고 출력합니다.
이제 배열 $data를 가지고 switch 문을 통해서 licence 번호에 맞는 값을 다시 입력한 뒤에 아까 위에서 봤던 함수를 불러오는데요.
$cate = ThisTable($data[4], $base->pmenu)는 먼저 $data[4]에는 category 부분의 내용이 들어있구요.
$base->pmenu에는 layout.inc 파일에 있던 프로그램 부분의 하위 메뉴가 배열로 key=>value 처럼 들어있습니다.
이 값을 가지고 위에 있는 함수를 보겠습니다.
먼저 $data[4]가 music이라고 가정하겠습니다.
function ThisTable('music', $base->pmenu) //이와 같이 입력이 되고,
{
while (list($key, $value) = each($base->pmenu)) // $base->pmenu의 배열을 하나하나 출력 한 후 $key와 $value로 나눠줍니다.
{
if('music' == $value) //만약 $value값이 music이라면
{
$cate = $key; //$cate에 $key를 입력, $base->pmenu 에는 음악이라고 적혀있으므로 $cate='음악'
}
}
return $cate; // $cate를 리턴
}
조금 복잡할 수도 있습니다.
하지만 실행해보시면 쉽게 이해하실 수 있을꺼에요.
그 다음은 그냥 이쁘게 출력만 해주면 됩니다.
$base->content를 통해서 div로 감싸주고 각 자리에 맞는 위치에 위에서 얻어온 $data와 $cate, $licence 부분을 넣어줍니다.
그리고 $base->LayoutMain();을 입력해주면 완성!
http://kurien.speeds.kr/programs/view.php?v=2 이게 만들어진 view.php의 모습입니다.
홈페이지를 만드는 것은 PHP와 MySQL 연동 방식만 알면 크게 어렵지 않은 것 같네요.
물론 아직 제가 모르는 미지의 부분이 많겠지만, 아마도 PHP 공부하시는 분이라면 어렵지 않게 따라하실 수 있을꺼라고 생각합니다.
혹시라도 이해가 안되는 부분은 댓글에 남겨주세요^^
'Project' 카테고리의 다른 글
9. PHP 홈페이지 만들기 프로그램 글쓰기 2 (8) | 2014.09.05 |
---|---|
8. PHP 홈페이지 만들기 프로그램 글쓰기 1 (16) | 2014.07.19 |
6. PHP 홈페이지 만들기 프로그램 메뉴 2 (4) | 2014.07.10 |
5. PHP 홈페이지 만들기 프로그램 메뉴 1 (6) | 2014.07.07 |
4. PHP 홈페이지 만들기 회원가입, 로그인 작성 (37) | 2014.07.04 |