7. PHP 홈페이지 만들기 프로그램 메뉴 3

2014.07.14 15:48
저자 : Kurien


이번엔 프로그램을 누르면 프로그램에 자세한 내용이 출력되는 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 공부하시는 분이라면 어렵지 않게 따라하실 수 있을꺼라고 생각합니다.


혹시라도 이해가 안되는 부분은 댓글에 남겨주세요^^