웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
그제는 엔지오에 접속이 안되구 어제는 개인적인 일 때문에 글을 쓰지 못했네요
글을 쓰기에 앞서 첫머리에도 썼지만 제 글이 하나의 생각의 전환이 되길 바라는 마음에서 쓴 점을
다시 한번 이해해 주시면 고맙겠습니다 게시판의 속도 개선이라던지 보안면에선 아무래도 내 자신 조
차도
튜닝해야 할 필요성은 느끼구 있습니다 제가 강의라는 말을 쓰지 않구 제 생각이라구 쓰는 점도 이유를
거기에 두고 있기 때문입니다 미니홈 만들기라는 타이틀로 글을 쓰는 가장 큰 이유는 여러 사람에게 미
니홈을
어떻게 만들어 주며 거기에 사용되는 게시판을 원하는 갯수만큼 어떻게 만들어 나누어 줄 수 있는지에
더 큰 비중을 두고 있다는 점을 양지해 주셨으면 고맙겠습니다 php에 어느 정도 자신 있으신 분은
제 글이 와 닿는 글은 아니지만 저와 같이 php를 막 시작 하셨거나 또는 미니홈이라는 부제를 생각하시
는
분에겐 도움이 되리라 믿구 글을 씁니다 그렇지만 자꾸 뒤돌아 보게 되는군요 ^^;;;
미니홈과 게시판 생성에 어느 정도 자신이 생기신 분은 필요에 의해 디자인 게시판 속도 개선과 소스
개선
등을 하시길 권고합니다
글을 클릭하구 들어가서 내용을 볼수 있는 view.php파일은
전 단계와 동일한 형태이며 거기에 더 추가된 사항은 윗부분에 글쓴이와 날짜 등 기본 정보와 아울러
내용이 들어간 사항만 더해질 뿐입니다
그러니 과정은 생략하구 소스분석과 어떻게 해서 여러개의 게시판을 생성한 사람에 맞게 불러오는지
대해 쓰겠습니다
관리 페이지에서 게시판을 생성하게 되면 디비에 게시판을 생성한 사람의 아이디 멤버번호 보드아이디
보드네임
과 게시판의 생성되어진 갯수를 표시하기 위해서 임의로 부여되는 board_no 가 있습니다 이부분은 없어
도 되지만
컨트롤 해주기 위해서 넣은 부분입니다
레벨별로 게시판 생성수를 제한하구 싶다면 각자 몇개의 게시판을 보유하구 있는지 알아야 합니다
디비 테이블에서 일률적으로 몇개 갖구 있는지 구문을 만들어 돌려도 되지만 그 보다도 필드를 하나 할
당해서
거기에 순번을 적어 둔다면 다음 게시판을 만들 때 조건을 불러 들이기가 편합니다
또한 게시판1, 게시판2, 게시판3 과 같이 일률적으로 게시판 이름을 부여하기에도 편하구요
- 게시판의 이름과 아이디를 기재하지 않았을 경우에는 미리 지정된 이름과 아이디가 있어야하기 때문입
니다-
또한 삭제시 비어 있는 값을 찾아 미리 지정해 놓은 게시판 이름을 불러들여 쓸 수가 있는거죠
위의 예시 처럼 3개의 게시판이 있는데 게시판2를 삭제 시켰을 경우 다음에 불러들이는 값이 게시판4가
아닌
비어 있는 값인 게시판2가 쓰여질 수 있도록 호출되는거죠
초기에 만들어 보는 게시판의 정보를 담는 테이블에는 기본 사항만 기재되지만 여기에 담길 수 있는것
들은
보드타입 혹은 스킨타입이라던지 목록 보여주기 혹은 감추기 , 이름레이어쓰기 혹은 감추기,코멘트 받음
안받음,
읽기 쓰기 접근 권한 설정 ,게시판의 바탕 배경이미지 등을 이곳에서 설정하실 수 있습니다
다 넣지는 못해드려도 몇개의 기본 사항은 어떤식으로 넣어야 하며 어떻게 동작되어지는지를 본 후에
차후에
게시판 다듬기에서 필드 추가와 함께 필요한 사항을 넣어 보겠습니다
아래의 소스는 list.php 의 소스입니다
파일로 저장해서 home.php와 동일 선상에 업로드 해주시면 됩니다
파일로 업로드를 하지 않음은 소스 중간에 페이지 처리하는 부분에 있어
제로보드의 쪽지 소스를 사용하기 때문입니다
------------------------------------------------------------------------------------------------
---
<?
제로보드 절대경로
제로보드 상대경로
include $_zb_path."lib.php";
// DB 연결
if(!$connect) $connect=dbConn();
// 멤버정보 구하기
$member=member_info();
// 글쓴이의 정보를 갖고옴;;
$data=mysql_fetch_array(mysql_query("select no, board_no, user_id,name, member_no,board_id
,board_name ,back_img from member_board where board_id='$id'"));
$data[no] = stripslashes($data[no]);
$data[name] = stripslashes($data[name]);
$data[user_id] = stripslashes($data[user_id]);
$data[board_name] = stripslashes($data[board_name]);
$data[member_no] = stripslashes($data[member_no]);
$data[width] = stripslashes($data[width]);
$data2=mysql_fetch_array(mysql_query("select * from $member_table where user_id='$id' ||
no='$member_no'"));
// $data 가 없을때, 즉 탈퇴한 회원인경우 표시
if(!$data[no]) Error("생성되지 않은 게시판입니다");
// 선택된 메모가 있을시 데이타 뽑아오기;;
if($no) {
$now_data=mysql_fetch_array(mysql_query("select
no,board_name,board_id,user_id,member_id,name,homepage,email,member_no,subject,memo,reg_date,file
1,hit from member_get_memo where no='$no' "));
//and a.board_id ='$data[board_id]';
}
// 전체 글의 갯수
$temp2=mysql_fetch_array(mysql_query("select count(*) from member_get_memo where
board_id='$data[board_id]'"));
$total=$temp2[0];
// 페이지 계산
if(!$page) $page=1;
$page_num=10;
$start_num=($page-1)*$page_num; // 페이지 수에 따른 출력시 첫번째가 될 글의 번호 구함
$total_page=(int)(($total-1)/$page_num)+1; // 전체 페이지 구함
if($page>$total_page) $page=$total_page; // 페이지가 전체 페이지보다 크면 페이지 번호 바
꿈
// 데이타 뽑아오는 부분...
$que="select * from member_get_memo where board_id='$data[board_id]' order by no desc limit
$start_num,$page_num";
$result=mysql_query($que) or Error(mysql_error());
// 이용자 아바타 보이기
// 조회수 증가
if($data[member_no] != $member[no])
{
@mysql_query("update member_get_memo set hit=hit+1 where no='$no'") or mysql_error();
}
// MySQL 닫기
if($connect) mysql_close($connect);
// 페이지 계산 $print_page 라는 변수에 저장
$print_page="";
$show_page_num=10;
$start_page=(int)(($page-1)/$show_page_num)*$show_page_num;
$i=1;
if($page>$show_page_num) {
$prev_page=$start_page;
$print_page="<a href=$PHP_SELF?
id=$id&page=$prev_page&select_arrange=$select_arrange&desc=$desc&category=$category&sn=$sn&ss=$ss
&sc=$sc&keyword=$keyword&page_num=$page_num>[Prev]</a> ";
$print_page.="<a href=$PHP_SELF?
id=$id&page=1&select_arrange=$select_arrange&desc=$desc&category=$category&sn=$sn&ss=$ss&sc=$sc&k
eyword=$keyword&page_num=$page_num>[1]</a>..";
}
while($i+$start_page<=$total_page&&$i<=$show_page_num) {
$move_page=$i+$start_page;
if($page==$move_page) $print_page.=" <b>$move_page</b> ";
else $print_page.="<a href=$PHP_SELF?
id=$id&page=$move_page&select_arrange=$select_arrange&desc=$desc&category=$category&sn=$sn&ss=$ss
&sc=$sc&keyword=$keyword&page_num=$page_num>[$move_page]</a>";
$i++;
}
if($total_page>$move_page) {
$next_page=$move_page+1;
$print_page.="..<a href=$PHP_SELF?
id=$id&page=$total_page&select_arrange=$select_arrange&desc=$desc&category=$category&sn=$sn&ss=$s
s&sc=$sc&keyword=$keyword&page_num=$page_num>[$total_page]</a>";
$print_page.=" <a href=$PHP_SELF?
id=$id&page=$next_page&select_arrange=$select_arrange&desc=$desc&category=$category&sn=$sn&ss=$ss
&sc=$sc&keyword=$keyword&page_num=$page_num>[Next]</a>";
}
?>
<?
if($data[no]) {
?>
<html>
<head>
<title>제목없음</title>
<meta name="generator" content="Namo WebEditor v4.0">
</head>
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width="963" height="33" colspan="6">
<p> 관리 게시판 >> 테스트 게시판 1</p>
</td>
</tr>
<tr>
<td width="48" height="21" align="center" valign="middle" bgcolor="#DEDEF7">
번호
</td>
<td width="569" height="21" align="center" valign="middle" bgcolor="#DEDEF7">
내용
</td>
<td width="112" height="21" align="center" valign="middle" bgcolor="#DEDEF7">
이름
</td>
<td width="103" height="21" align="center" valign="middle" bgcolor="#DEDEF7">
날짜
</td>
<td width="73" height="21" align="center" valign="middle" bgcolor="#DEDEF7">
조회
</td>
<td width="68" height="21" align="center" valign="middle" bgcolor="#DEDEF7">
추천
</td>
</tr>
<tr>
<td width="973" height="1" align="center" valign="middle" colspan="6" bgcolor="silver">
</td>
</tr>
<?
// 출력
$loop_number=$total-($page-1)*$page_num;
while($now_data=mysql_fetch_array($result)) {
//글을 쓴 날짜;
$reg_date=date("Y/m/d H:i",$now_data[reg_date]);
?>
<!-- 여기서부터 글을 반복 시켜 줍니다 -->
<tr>
<td width="48" height="22">
<?= $loop_number?>
</td>
<td width="569" height="22">
<?=$now_data[subject]?>
</td>
<td width="112" height="22">
<?=$now_data[name]?>
</td>
<td width="103" height="22">
<?=$reg_date?>
</td>
<td width="73" height="22">
<?=$now_data[hit]?>
</td>
<td width="68" height="22">
추천수
</td>
</tr>
<tr>
<td width="973" height="1" colspan="6" bgcolor="silver">
</td>
</tr>
<!-- 여기까지 글을 반복 시켜 줍니다 -->
<?
$loop_number--;
}
?>
<tr>
<td width="973" height="24" colspan="6">
<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width="498">
<font style=font-family:Tahoma;font-size:7pt;color:#cc0000><?
=$print_page?></font>
</td>
<td width="475" align="right">
글쓰기 목록
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="617" height="21" colspan="2">
</td>
<td width="356" height="21" colspan="4">
찾기 기능
</td>
</tr>
</table>
</body>
</html>
<?
}
?>
------------------------------------------------------------------------------------------------
----
소스 설명 :
//해당 게시판을 불러옴;;
$data=mysql_fetch_array(mysql_query("select * from member_board where board_id='$id'+ '"));
이 부분이 게시판 아이디로 호출했을 때 불러오는 부분입니다 member_board 라는 테이블에 게시판의
기본 정보가 담기구 거기에 있는 자료를 불러들여 게시판의 스킨이나 아이디 게시판 이름을 보여주는거
죠
$data2=mysql_fetch_array(mysql_query("select * from $member_table where user_id='$id'+ ' ||
no='$member_no'"));
전에 설명 드렸듯이 멤버 테이블에서 기본 정보를 빼오기 위해서 해준 부분입니다
차후 이름 레이어를 쓰신다면 멤버의 홈페이지 이메일등 기초 사항은 멤버 테이블에서 불러들여야 하기
때문입니다
if($no) {
$now_data=mysql_fetch_array(mysql_query("select
no,board_name,board_id,user_id,member_id,name,homepage,email,member_no,subject,memo,reg_date,file
1,hit from member_get_memo where no='$no' "));
}
$now_data 글의 데이터입니다 (데이터명을 달리 줘도 되겠지만 어디까지나 게시판으로의 발상은 제로
보드
쪽지에서 왔기 때문에 표기명을 바꾸지 않았습니다 )
member_get_memo 라는 테이블에서 글을 뽑아 오는데 no 라는 필드에서 번호별로 뽑아옵니다
- 이부분은 초기의 만들어서 섰던 소스입니다 현재의 제 소스와는 틀립니다 -
// 데이타 뽑아오는 부분...
$que="select * from member_get_memo where board_id='$data[board_id]' order by no desc limit
$start_num,$page_num";
$result=mysql_query($que) or Error(mysql_error());
member_get_memo 테이블에서 board_id='$data[board_id]' 보드 아이디라는 필드에서 $data[board_id]
라는 변수를 가진 데이터의 글들을 뽑아 오는데 no desc limit $start_num,$page_num"; 번호로 불러오되
역순 시켜서 ($start_num,$page_num)갯수 만큼 불러들입니다 새글이 맨 위로 올라오게 되는거죠
$result=mysql_query($que의 값을 대입) or Error(mysql_error());
$data[board_id] 는 member_board라는 디비 테이블에 사용자가 임의로 집어 넣은 게시판 아이디입니다
만약 repter 라는 이름으로 게시판을 생성했다면 board_id 라는 필드에 repter 라고 기록되어지겠죠
불러들이면 http://계정주소/mini/list.php?id=repter 가 될테구요
글이 입력되는 member_get_memo 디비테이블에는 글이 올라가면서 해당 게시판의 아이디도 들어갑니다
그래서 글을 불러 들일 때 repter라는 게시판의 이름이 써진 부분만 빼오는거죠
// 조회수 증가
if($data[member_no] != $member[no])
{
@mysql_query("update member_get_memo set hit=hit+1 where no='$no'") or mysql_error();
}
$data[member_no] 여기서의 데이터는 미니홈 어드민 테이블의 데이터가 아닌 게시판의 정보가 담긴 곳입
니다
물론 member_board 라는 테이블에 게시판을 생성한 사람의 멤버번호가 기입 될 수 있는 member_no 라
는
필드가 있구요
게시판의 주인과 로그인한 회원이 서로 같지 않다면 중괄호 안의 상황을 연출합니다
hit 라는 필드에 1씩 페이지를 열 때 마다 업데이트를 시켜 주는거죠 물론 비회원과 게시판의 주인과
멤버 번호가 틀리니 비회원이 보았을 때도 히트 수는 증가되죠
페이징 처리하는 부분은 제로보드 쪽지 소스에 아이디만 추가했습니다
아래의 html 부분은 전 페이지에서 써 놓은 소스를 이용해서 붙여 넣은거구 말씀 드렸듯이
tr 을 기준으로 반복되어 글이 돌려지기 때문에 맨위에는
<?
// 출력
$loop_number=$total-($page-1)*$page_num;
while($now_data=mysql_fetch_array($result)) {
//글을 쓴 날짜;
$reg_date=date("Y/m/d H:i",$now_data[reg_date]);
?>
이부분이
아래에는
<?
$loop_number--;
}
?>
이부분이 들어가고 중간에는 글쓴이와 날짜등이 표기 될수 있도록 소스를 넣었습니다
$loop_number 는 가상 번호입니다 글을 썼을 때 맨 앞에 있는 숫자를 먹여주는 역활을 하죠 글이 1000개
가
있다면 1000 부터 999 ,998,997~~~ 1 하는 식으로 글의 위치를 짐작할 수 있게 해주는 가상 번호입니다
$loop_number--; 숫자를 하나씩 빼주는 역활을 해 줍니다
올려드린 디비 테이블 생성파일을 전과 동일하게 생성해 주시구
아래의 주소로 불러들여 보세요
http://계정주소/mini/list.php?id=repter
http://계정주소/mini/list.php?id=repter_1
http://계정주소/mini/list.php?id=repter_2
로 불러들여서 업로드2 에 올려진 그림과 같이 테스트 제목 1~9 까지 (게시판 별로 3개씩)잘 표기되어
나오는지 확인해 주세요
나만의 미니홈 만들기 ㅡ list.php , 디비 테이블 생성
2004.11.26 05:33
그제는 엔지오에 접속이 안되구 어제는 개인적인 일 때문에 글을 쓰지 못했네요
글을 쓰기에 앞서 첫머리에도 썼지만 제 글이 하나의 생각의 전환이 되길 바라는 마음에서 쓴 점을
다시 한번 이해해 주시면 고맙겠습니다 게시판의 속도 개선이라던지 보안면에선 아무래도 내 자신 조
차도
튜닝해야 할 필요성은 느끼구 있습니다 제가 강의라는 말을 쓰지 않구 제 생각이라구 쓰는 점도 이유를
거기에 두고 있기 때문입니다 미니홈 만들기라는 타이틀로 글을 쓰는 가장 큰 이유는 여러 사람에게 미
니홈을
어떻게 만들어 주며 거기에 사용되는 게시판을 원하는 갯수만큼 어떻게 만들어 나누어 줄 수 있는지에
더 큰 비중을 두고 있다는 점을 양지해 주셨으면 고맙겠습니다 php에 어느 정도 자신 있으신 분은
제 글이 와 닿는 글은 아니지만 저와 같이 php를 막 시작 하셨거나 또는 미니홈이라는 부제를 생각하시
는
분에겐 도움이 되리라 믿구 글을 씁니다 그렇지만 자꾸 뒤돌아 보게 되는군요 ^^;;;
미니홈과 게시판 생성에 어느 정도 자신이 생기신 분은 필요에 의해 디자인 게시판 속도 개선과 소스
개선
등을 하시길 권고합니다
글을 클릭하구 들어가서 내용을 볼수 있는 view.php파일은
전 단계와 동일한 형태이며 거기에 더 추가된 사항은 윗부분에 글쓴이와 날짜 등 기본 정보와 아울러
내용이 들어간 사항만 더해질 뿐입니다
그러니 과정은 생략하구 소스분석과 어떻게 해서 여러개의 게시판을 생성한 사람에 맞게 불러오는지
대해 쓰겠습니다
관리 페이지에서 게시판을 생성하게 되면 디비에 게시판을 생성한 사람의 아이디 멤버번호 보드아이디
보드네임
과 게시판의 생성되어진 갯수를 표시하기 위해서 임의로 부여되는 board_no 가 있습니다 이부분은 없어
도 되지만
컨트롤 해주기 위해서 넣은 부분입니다
레벨별로 게시판 생성수를 제한하구 싶다면 각자 몇개의 게시판을 보유하구 있는지 알아야 합니다
디비 테이블에서 일률적으로 몇개 갖구 있는지 구문을 만들어 돌려도 되지만 그 보다도 필드를 하나 할
당해서
거기에 순번을 적어 둔다면 다음 게시판을 만들 때 조건을 불러 들이기가 편합니다
또한 게시판1, 게시판2, 게시판3 과 같이 일률적으로 게시판 이름을 부여하기에도 편하구요
- 게시판의 이름과 아이디를 기재하지 않았을 경우에는 미리 지정된 이름과 아이디가 있어야하기 때문입
니다-
또한 삭제시 비어 있는 값을 찾아 미리 지정해 놓은 게시판 이름을 불러들여 쓸 수가 있는거죠
위의 예시 처럼 3개의 게시판이 있는데 게시판2를 삭제 시켰을 경우 다음에 불러들이는 값이 게시판4가
아닌
비어 있는 값인 게시판2가 쓰여질 수 있도록 호출되는거죠
초기에 만들어 보는 게시판의 정보를 담는 테이블에는 기본 사항만 기재되지만 여기에 담길 수 있는것
들은
보드타입 혹은 스킨타입이라던지 목록 보여주기 혹은 감추기 , 이름레이어쓰기 혹은 감추기,코멘트 받음
안받음,
읽기 쓰기 접근 권한 설정 ,게시판의 바탕 배경이미지 등을 이곳에서 설정하실 수 있습니다
다 넣지는 못해드려도 몇개의 기본 사항은 어떤식으로 넣어야 하며 어떻게 동작되어지는지를 본 후에
차후에
게시판 다듬기에서 필드 추가와 함께 필요한 사항을 넣어 보겠습니다
아래의 소스는 list.php 의 소스입니다
파일로 저장해서 home.php와 동일 선상에 업로드 해주시면 됩니다
파일로 업로드를 하지 않음은 소스 중간에 페이지 처리하는 부분에 있어
제로보드의 쪽지 소스를 사용하기 때문입니다
------------------------------------------------------------------------------------------------
---
<?
제로보드 절대경로
제로보드 상대경로
include $_zb_path."lib.php";
// DB 연결
if(!$connect) $connect=dbConn();
// 멤버정보 구하기
$member=member_info();
// 글쓴이의 정보를 갖고옴;;
$data=mysql_fetch_array(mysql_query("select no, board_no, user_id,name, member_no,board_id
,board_name ,back_img from member_board where board_id='$id'"));
$data[no] = stripslashes($data[no]);
$data[name] = stripslashes($data[name]);
$data[user_id] = stripslashes($data[user_id]);
$data[board_name] = stripslashes($data[board_name]);
$data[member_no] = stripslashes($data[member_no]);
$data[width] = stripslashes($data[width]);
$data2=mysql_fetch_array(mysql_query("select * from $member_table where user_id='$id' ||
no='$member_no'"));
// $data 가 없을때, 즉 탈퇴한 회원인경우 표시
if(!$data[no]) Error("생성되지 않은 게시판입니다");
// 선택된 메모가 있을시 데이타 뽑아오기;;
if($no) {
$now_data=mysql_fetch_array(mysql_query("select
no,board_name,board_id,user_id,member_id,name,homepage,email,member_no,subject,memo,reg_date,file
1,hit from member_get_memo where no='$no' "));
//and a.board_id ='$data[board_id]';
}
// 전체 글의 갯수
$temp2=mysql_fetch_array(mysql_query("select count(*) from member_get_memo where
board_id='$data[board_id]'"));
$total=$temp2[0];
// 페이지 계산
if(!$page) $page=1;
$page_num=10;
$start_num=($page-1)*$page_num; // 페이지 수에 따른 출력시 첫번째가 될 글의 번호 구함
$total_page=(int)(($total-1)/$page_num)+1; // 전체 페이지 구함
if($page>$total_page) $page=$total_page; // 페이지가 전체 페이지보다 크면 페이지 번호 바
꿈
// 데이타 뽑아오는 부분...
$que="select * from member_get_memo where board_id='$data[board_id]' order by no desc limit
$start_num,$page_num";
$result=mysql_query($que) or Error(mysql_error());
// 이용자 아바타 보이기
// 조회수 증가
if($data[member_no] != $member[no])
{
@mysql_query("update member_get_memo set hit=hit+1 where no='$no'") or mysql_error();
}
// MySQL 닫기
if($connect) mysql_close($connect);
// 페이지 계산 $print_page 라는 변수에 저장
$print_page="";
$show_page_num=10;
$start_page=(int)(($page-1)/$show_page_num)*$show_page_num;
$i=1;
if($page>$show_page_num) {
$prev_page=$start_page;
$print_page="<a href=$PHP_SELF?
id=$id&page=$prev_page&select_arrange=$select_arrange&desc=$desc&category=$category&sn=$sn&ss=$ss
&sc=$sc&keyword=$keyword&page_num=$page_num>[Prev]</a> ";
$print_page.="<a href=$PHP_SELF?
id=$id&page=1&select_arrange=$select_arrange&desc=$desc&category=$category&sn=$sn&ss=$ss&sc=$sc&k
eyword=$keyword&page_num=$page_num>[1]</a>..";
}
while($i+$start_page<=$total_page&&$i<=$show_page_num) {
$move_page=$i+$start_page;
if($page==$move_page) $print_page.=" <b>$move_page</b> ";
else $print_page.="<a href=$PHP_SELF?
id=$id&page=$move_page&select_arrange=$select_arrange&desc=$desc&category=$category&sn=$sn&ss=$ss
&sc=$sc&keyword=$keyword&page_num=$page_num>[$move_page]</a>";
$i++;
}
if($total_page>$move_page) {
$next_page=$move_page+1;
$print_page.="..<a href=$PHP_SELF?
id=$id&page=$total_page&select_arrange=$select_arrange&desc=$desc&category=$category&sn=$sn&ss=$s
s&sc=$sc&keyword=$keyword&page_num=$page_num>[$total_page]</a>";
$print_page.=" <a href=$PHP_SELF?
id=$id&page=$next_page&select_arrange=$select_arrange&desc=$desc&category=$category&sn=$sn&ss=$ss
&sc=$sc&keyword=$keyword&page_num=$page_num>[Next]</a>";
}
?>
<?
if($data[no]) {
?>
<html>
<head>
<title>제목없음</title>
<meta name="generator" content="Namo WebEditor v4.0">
</head>
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width="963" height="33" colspan="6">
<p> 관리 게시판 >> 테스트 게시판 1</p>
</td>
</tr>
<tr>
<td width="48" height="21" align="center" valign="middle" bgcolor="#DEDEF7">
번호
</td>
<td width="569" height="21" align="center" valign="middle" bgcolor="#DEDEF7">
내용
</td>
<td width="112" height="21" align="center" valign="middle" bgcolor="#DEDEF7">
이름
</td>
<td width="103" height="21" align="center" valign="middle" bgcolor="#DEDEF7">
날짜
</td>
<td width="73" height="21" align="center" valign="middle" bgcolor="#DEDEF7">
조회
</td>
<td width="68" height="21" align="center" valign="middle" bgcolor="#DEDEF7">
추천
</td>
</tr>
<tr>
<td width="973" height="1" align="center" valign="middle" colspan="6" bgcolor="silver">
</td>
</tr>
<?
// 출력
$loop_number=$total-($page-1)*$page_num;
while($now_data=mysql_fetch_array($result)) {
//글을 쓴 날짜;
$reg_date=date("Y/m/d H:i",$now_data[reg_date]);
?>
<!-- 여기서부터 글을 반복 시켜 줍니다 -->
<tr>
<td width="48" height="22">
<?= $loop_number?>
</td>
<td width="569" height="22">
<?=$now_data[subject]?>
</td>
<td width="112" height="22">
<?=$now_data[name]?>
</td>
<td width="103" height="22">
<?=$reg_date?>
</td>
<td width="73" height="22">
<?=$now_data[hit]?>
</td>
<td width="68" height="22">
추천수
</td>
</tr>
<tr>
<td width="973" height="1" colspan="6" bgcolor="silver">
</td>
</tr>
<!-- 여기까지 글을 반복 시켜 줍니다 -->
<?
$loop_number--;
}
?>
<tr>
<td width="973" height="24" colspan="6">
<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width="498">
<font style=font-family:Tahoma;font-size:7pt;color:#cc0000><?
=$print_page?></font>
</td>
<td width="475" align="right">
글쓰기 목록
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="617" height="21" colspan="2">
</td>
<td width="356" height="21" colspan="4">
찾기 기능
</td>
</tr>
</table>
</body>
</html>
<?
}
?>
------------------------------------------------------------------------------------------------
----
소스 설명 :
//해당 게시판을 불러옴;;
$data=mysql_fetch_array(mysql_query("select * from member_board where board_id='$id'+ '"));
이 부분이 게시판 아이디로 호출했을 때 불러오는 부분입니다 member_board 라는 테이블에 게시판의
기본 정보가 담기구 거기에 있는 자료를 불러들여 게시판의 스킨이나 아이디 게시판 이름을 보여주는거
죠
$data2=mysql_fetch_array(mysql_query("select * from $member_table where user_id='$id'+ ' ||
no='$member_no'"));
전에 설명 드렸듯이 멤버 테이블에서 기본 정보를 빼오기 위해서 해준 부분입니다
차후 이름 레이어를 쓰신다면 멤버의 홈페이지 이메일등 기초 사항은 멤버 테이블에서 불러들여야 하기
때문입니다
if($no) {
$now_data=mysql_fetch_array(mysql_query("select
no,board_name,board_id,user_id,member_id,name,homepage,email,member_no,subject,memo,reg_date,file
1,hit from member_get_memo where no='$no' "));
}
$now_data 글의 데이터입니다 (데이터명을 달리 줘도 되겠지만 어디까지나 게시판으로의 발상은 제로
보드
쪽지에서 왔기 때문에 표기명을 바꾸지 않았습니다 )
member_get_memo 라는 테이블에서 글을 뽑아 오는데 no 라는 필드에서 번호별로 뽑아옵니다
- 이부분은 초기의 만들어서 섰던 소스입니다 현재의 제 소스와는 틀립니다 -
// 데이타 뽑아오는 부분...
$que="select * from member_get_memo where board_id='$data[board_id]' order by no desc limit
$start_num,$page_num";
$result=mysql_query($que) or Error(mysql_error());
member_get_memo 테이블에서 board_id='$data[board_id]' 보드 아이디라는 필드에서 $data[board_id]
라는 변수를 가진 데이터의 글들을 뽑아 오는데 no desc limit $start_num,$page_num"; 번호로 불러오되
역순 시켜서 ($start_num,$page_num)갯수 만큼 불러들입니다 새글이 맨 위로 올라오게 되는거죠
$result=mysql_query($que의 값을 대입) or Error(mysql_error());
$data[board_id] 는 member_board라는 디비 테이블에 사용자가 임의로 집어 넣은 게시판 아이디입니다
만약 repter 라는 이름으로 게시판을 생성했다면 board_id 라는 필드에 repter 라고 기록되어지겠죠
불러들이면 http://계정주소/mini/list.php?id=repter 가 될테구요
글이 입력되는 member_get_memo 디비테이블에는 글이 올라가면서 해당 게시판의 아이디도 들어갑니다
그래서 글을 불러 들일 때 repter라는 게시판의 이름이 써진 부분만 빼오는거죠
// 조회수 증가
if($data[member_no] != $member[no])
{
@mysql_query("update member_get_memo set hit=hit+1 where no='$no'") or mysql_error();
}
$data[member_no] 여기서의 데이터는 미니홈 어드민 테이블의 데이터가 아닌 게시판의 정보가 담긴 곳입
니다
물론 member_board 라는 테이블에 게시판을 생성한 사람의 멤버번호가 기입 될 수 있는 member_no 라
는
필드가 있구요
게시판의 주인과 로그인한 회원이 서로 같지 않다면 중괄호 안의 상황을 연출합니다
hit 라는 필드에 1씩 페이지를 열 때 마다 업데이트를 시켜 주는거죠 물론 비회원과 게시판의 주인과
멤버 번호가 틀리니 비회원이 보았을 때도 히트 수는 증가되죠
페이징 처리하는 부분은 제로보드 쪽지 소스에 아이디만 추가했습니다
아래의 html 부분은 전 페이지에서 써 놓은 소스를 이용해서 붙여 넣은거구 말씀 드렸듯이
tr 을 기준으로 반복되어 글이 돌려지기 때문에 맨위에는
<?
// 출력
$loop_number=$total-($page-1)*$page_num;
while($now_data=mysql_fetch_array($result)) {
//글을 쓴 날짜;
$reg_date=date("Y/m/d H:i",$now_data[reg_date]);
?>
이부분이
아래에는
<?
$loop_number--;
}
?>
이부분이 들어가고 중간에는 글쓴이와 날짜등이 표기 될수 있도록 소스를 넣었습니다
$loop_number 는 가상 번호입니다 글을 썼을 때 맨 앞에 있는 숫자를 먹여주는 역활을 하죠 글이 1000개
가
있다면 1000 부터 999 ,998,997~~~ 1 하는 식으로 글의 위치를 짐작할 수 있게 해주는 가상 번호입니다
$loop_number--; 숫자를 하나씩 빼주는 역활을 해 줍니다
올려드린 디비 테이블 생성파일을 전과 동일하게 생성해 주시구
아래의 주소로 불러들여 보세요
http://계정주소/mini/list.php?id=repter
http://계정주소/mini/list.php?id=repter_1
http://계정주소/mini/list.php?id=repter_2
로 불러들여서 업로드2 에 올려진 그림과 같이 테스트 제목 1~9 까지 (게시판 별로 3개씩)잘 표기되어
나오는지 확인해 주세요
댓글 6
-
예뜨락
2004.11.26 05:46
-
임
2004.11.26 12:01
너무 어렵 군요 전 제로보드 자체가 어려워서 아직 못 하고 잇습니다 정말로 간단 하게
설치 하는 법 부탁드립니다 -
예뜨락
2004.11.26 16:04
간단하게 설치하는 법은 없습니다 ^^;;
모르시는 부분이 있으면 코멘트 남기면 답해 드리겠습니다
그리고 제가 알려드리는 것은 만드는 법을 알려드리는 것이지 플러그인 처럼 완전한 형태의
소스를 분석해 드리는 것은 아니거든요 제가 제시한 소스 형태외적으로 많은 소스를
추가 해야 제대로 모양새가 갖추어집니다 따라하기 어려우시면 추후에 플러그인으로 나오면
설치하시는게 나을듯 싶구요 플러그인으로 나온다 해도 제로보드를 이용한
연동 프로그램이기에 제로보드는 설치가 되어 있어야 합니다 ^^; -
신동진
2004.11.26 21:33
오늘 강좌에는 예뜨락님의 자신감이 느껴지지 않네요~
예뜨락님 강좌를 보며 저처럼 많은 걸 배우고 가는 사람이 훨씬 많습니다.
다만 코멘트를 안하고 갈뿐이죠 ^^
힘내시구요~ 자신감 100%충전한 다음강좌 기다릴께요~~
ㅎㅎㅎ 홧팅이요 ^^ -
예뜨락
2004.11.26 22:04
고맙습니다 ^^
강좌라구 하니까 뜨끔하네요 ^^;;; 필요에 의해서 연재되는 시간이 하루 이틀 늦어질 수 있습니다
현재 제가 사용하는 소스를 토대로 올려드리기 때문에 디비나 소스가 중복되어서 현재 올리구
있는 부분을 다른이름으로 올려서 저장했거든요 디비도 그렇구 그래서 일단 한번씩 오류나는
부분이 없는지 확인 해야 하고 또 준비해 놓은 자료가 아닌 즉흥적으로 쓰는 자료이기 때문에
혹여 하루 이틀 늦어질 수 있음을 이해해 주시길 부탁 드립니다 -
컨츄리꼬꼬게임
2008.11.09 00:42
대한민국에서 가장 오래(3년)동안 지속되 오고 있습니다.다른 게임사이트와는 비교를 거부합니다.
환전 5분내 환전입니다. 포커,바둑이,맞고 입니다.
*게임주소:http;//203.180.151.7 *게임신청:010-2392-7783
http://59.106.114.45#관리자님 허락없이 글을 올려서 죄송합니다. 불편하시더라도, 한번만
거부의사를 사이트주소와 함께 메일(bobsom38@naver.com)로 보내
주시면 다시는 글을 올리지 않겠습니다. 죄송합니다.
*삭제비번:1111
제목 | 글쓴이 | 날짜 |
---|---|---|
개판 오분전 라인 그래프 [4] | 미친개 | 2004.12.01 |
실명 진위여부 확인 [10] | piasol | 2004.12.01 |
나만의 미니홈 만들기 ㅡ write.php 파일과 write_ok [5] | 예뜨락 | 2004.11.30 |
나만의 미니홈 만들기 ㅡ view.php 파일과 제목링크 [9] | 예뜨락 | 2004.11.27 |
나만의 미니홈 만들기 ㅡ list.php , 디비 테이블 생성 [6] | 예뜨락 | 2004.11.26 |
나만의 미니홈 만들기 ㅡ 게시판 list.php 파일의 모양새 [6] | 예뜨락 | 2004.11.23 |
나만의 미니홈 만들기 ㅡ 게시판의 디자인 | 예뜨락 | 2004.11.22 |
나만의 미니홈 만들기 ㅡ 미니홈 생성 페이지 [3] | 예뜨락 | 2004.11.20 |
나만의 미니홈 만들기 ㅡ 기초적인 관리 페이지 [3] | 예뜨락 | 2004.11.20 |
나만의 미니홈 만들기 ㅡ 메인 기초 설계3 .레이아웃 [2] | 예뜨락 | 2004.11.19 |
나만의 미니홈 만들기 ㅡ 메인 기초 설계2 .레이아웃 | 예뜨락 | 2004.11.18 |
나만의 미니홈 만들기 ㅡ 글쓰기에 앞서... [1] | 예뜨락 | 2004.11.17 |
[타키의 초보강좌]PHP 기초 강좌 제 2탄[mysql로 들어가보자.] [2] | 타키 | 2004.10.24 |
소수[솟수] 쉽게 구하기[에라토스테네스의 해 알고리즘사용] , 경우의 수 구하기 [5] | 타키 | 2004.10.23 |
[타키의 초보강좌]PHP 기초 강좌 제 1탄[패스워드 인증] [8] | 타키 | 2004.10.23 |
www자동 붙히기 [8] | 미오유 | 2004.10.22 |
IP to 정수변환(;) [4] | 플로렐라 | 2004.10.21 |
한글자르는 문제 PHP차원에서 해결된 건가? [5] | 겜방 | 2004.10.20 |
MySQL의 패턴 매칭 맛보기 [2] | 손상모 | 2004.10.19 |
그래프 만들어주는 소스 [10] | 미친개 | 2004.10.15 |
mysql_query($que,$connect)or die("member_board2테이블설치오류".mysql_error());
echo "member_board 테이블 생성완료!"; 라는 부분이 있습니다
member_board 입니다 제 디비에 이미 설치된 사항이라 따로 디비테이블을 만들다
보니 본의 아니게 실수가 생길 수 있습니다 위에 사항은 에러 났을때 출력되는 글귀이니
고치지 않아도 괜챦습니다 소스나 디비 테이블에 의한 에러시 코멘트 남겨 주세요
설치한 주소도 남겨 주시면 고맙겠습니다