웹마스터 팁

페이지분할법등등.. 주석을 왕창달아놨어욥^^
보시구 이해안가시구..또 틀린데두 있지만..-_ㅠ 그냥 보아주시길^^
냐핫; 글쓰다보니....자료등록하는게 없다는걸느낀...ㅠㅠ
주석이 실제 소스보다 더많을거에욥^^
그냥링크걸어놀께욥^^
디비구조로 보나 뭘로보나 제가 초보라는걸 아실겁니당..-_ㅠ 많이 발전하도록 기도해주세욥^^

미리보기 : http://www.foibm.com/lecture_bbs/guest/guest.php3

헉..
다운받기루 해놨었눈뎅; 에러가 나네욤..ㅠㅠ
구냥 소스 아래로쭈~욱 적습니당;;
에디트플러스로 복사해서 보심 이뿌게 나와욤;;

php파일
<HTML>
<HEAD>
<style>
<!--
       A:link {color:black;text-decoration:none;}
       A:visited {color:black;text-decoration:none;}
       A:active {color:black;text-decoration:none;}
       A:hover {color:blue;text-decoration:none;}
body,p,table,tr,td,th,form,textarea,text,option {font-size:8pt;color:black;font-family:돋움;}
-->
</style>
<TITLE>@.@i</TITLE>
</HEAD>

<BODY>

<?

#초간단 테스트용 방명록 &공부용

function Msg_Alert($message) {
        print "<script>
               window.alert('$message')
                   history.go(-1)
                   </script>";
exit;
}

#db연결
$connect = @mysql_connect("HOSTNAME", "USERID", "PASSWORD") or die("db 연결오류");
@mysql_select_db("DBNAME", $connect) or die("db 선택오류");

#모드가 글쓰기모드일경우^^
if($mode == "write") :
print "<br><center> 간단 방명록</center>";
print "<form method=post action=guest.php3?mode=write_reg>
       <table width=500 border=1 bordercolor=black bordercolorlight=black bordercolordark=white cellspacing=0 cellpadding=1 align=center>
               <tr bgcolor=silver align=center>
                       <td> ::글쓰기:: </td>
                   </tr>
                   <tr>
                           <td> 이름 : <input type=text name=yourname size=15 maxlength=15> </td>
                   </tr>
                   <tr>
                           <td> EMAIL : <input type=text name=email size=20 maxlength=35> <br>
                                Home : <input type=text name=home size=20 maxlength=150></td>
                   </tr>
                   <tr>
                       <td> 제목 : <input type=text name=subject size=30 maxlength=200> </td>
                   </tr>
                   <tr>
                       <td> <textarea rows=5 cols=40 name=comment></textarea> <br> <center><input type=submit value="   ok   "> </td>
                   </tr>
           </table></form>";
exit;
endif;

#모드가 글등록모드일때
if($mode == "write_reg") :

if(!ereg("[^[:space:]]+", $yourname)) Msg_Alert("이름을 적어주세요.");
if(!ereg("[^[:space:]]+", $subject)) Msg_Alert("제목을 적어주세요.");
if(!ereg("[^[:space:]]+", $comment)) Msg_Alert("내용을 적어주세요.");

$yourname = htmlspecialchars($yourname);
$email = htmlspecialchars($email);
$home = htmlspecialchars($home);
$subject = htmlspecialchars($subject);
$comment= htmlspecialchars($comment);

$date = date("Y.m.d");
@mysql_query("insert into test_guest (name, email, home, subject, comment, date) values ('$yourname','$email','$home','$subject','$comment','$date')") or die("write error");
print "<meta http-equiv="refresh" content="0; url=guest.php3">";
endif;

$page_no = 10; #한페이지당 출력될겟수
$link_no = 10; #아래 하단부분 링크 [1][2][3]

#주소에서...geust.php3?page=? 로 넘어오는 숫자]
#만일 $page값이 1보다 작거나 같으면 $page를 1로 지정해라. 만일 사용자가 guest.php3?page=0이나 뜩밖의 수를 지정했을때 대비하는것입니다.^^
if($page <= 1) $page = 1;

#처음뽑아올 게시물수 넘어온 페이지값을 5페이지라고 칭할경우 guest.php3?page=5
#처음뽑아올 게시물수 = (정수초기화)((현재넘어온 $page값 - 1) * 10);  -> 40 = ((5 - 1) * 10);  5페이지일경우 첫번째로 뽑아올 게시물은 40
$f_article = (int)(($page - 1) * $page_no);

#총게시물수 구함
$total = @mysql_fetch_row(mysql_query("select count(*) from test_guest", $connect)) or die("총게시물수를 구하는 도중오류!");

#전체페이지수 현제 총게시물수를 100개라고 정함
#전체페이지수 = (정수초기화)((100 - 1) / 10) + 1;  -> 10.9 = ((100 - 1) / 10) + 1;  뒤에 소수점은 신경쓰지마세요^^;; 그럼 결과는10.
#즉..한페이지당 보일게시물수 는 10개였구.. 전체게시물수는 100개이니깐 10이나와야죠^^..100나누기10은 10. 총출력되야할 게시물은 10페이지.
#▤ <- 이게 한페이지라고 할경우. ▤ ▤ ▤ ▤ ▤ ▤ ▤ ▤ ▤ ▤ <- 이렇게 출력되야죠^^. ▤거 하나에는 10개의 게시물이 들어있겠죠?
$half_page = (int)(($total[0] - 1) / $page_no) + 1;

#limit $f_article, $page_no..즉 처음뽑아올 게시물수 40개에서 한페이지당출력될게시물수 10개를 뽑아오는거죠^^.
#40~50. ex)40,41,42,43,44,45,46,47,48,49개까지 10개만 뽑아오죠^^.
$query_data = mysql_query("select * from test_guest order by id desc limit $f_article,$page_no", $connect);

#html출력
print "<br><center> 간단 방명록</center>";
$k = $f_article;
while($data = mysql_fetch_array($query_data)) :
$no = $total[0] - $k;
$comment = nl2br($data[comment]);
print "<table width=500 border=1 bordercolor=black bordercolorlight=black bordercolordark=white cellspacing=0 cellpadding=1 align=center>
               <tr bgcolor=silver align=center>
                       <td> <b>${no}</b>번째로 <b>${data[name]}</b>님이 글을 남겨주셨습니다.</td>
                   </tr>
                   <tr>
                           <td>제목 : $data[subject] - [$data[date]]</td>
                   </tr>
                   <tr>
                           <td> $comment </td>
                   </tr>
           </table> <br>";
$k = $k + 1;
endwhile;
print "<center><a href=guest.php3?mode=write>[글쓰기]</a></center>";

#첫번째링크 ◀[첫번째링크][?][?][마지막링크]▶
#첫번째 하단링크부분 = (정수초기화)((현재넘어온 $page값 - 1) / 페이지하단링크부분 + 1) * 페이지하단링크부분 - (페이지하단링크부분 - 1);
# 5 = ((5 - 1) / 10 + 1) * 10 - (10 - 1);
#저두 여기는 자세히설명은 못하겠는데요..^^;; 확실히 $f_link와 $l_link는 직접적으루 쓰이진않구요.. 뒷페이지. 앞페이지등등을 계산하는데 쓰입니다.
$f_link = (int)(($page - 1) / $link_no + 1) * $link_no - ($link_no - 1);

#마지막번째 하단링크부분
#마지막번째 하단링크부분 = 첫번째링크 + (하단링크갯수 - 1);
# 14 = 5 + (10 - 1);
#사실이건 [1][2][3]... 게 있다구 칠때 3페이지로 가면 3페이지 즉..[3]이 가운데로 놓이게끔. [1][2][3][4][5] <- 이렇게 되도록하는건데요.. 어디서 실수를 해서..
#[1][2][3][4][5][6][7][8][9][10] 그냥이렇게 나오네요..ㅠ_ㅠ
#즉 현재 첫째링크는 5였구 마지막 링크는 14였는데요.. [5][6][7][8][9][10][11][12][13][14] <- 10개가 되죠?^^*
$l_link = $f_link + ($link_no - 1);

#만일 $l_link즉. 마지막링크인 14값이 총출력될 ▤페이지수 10 개보다 클경우 $l_link에 $half_page를 대입하여라.
#자세히 줌인하자면요.. 만일 총페이지수는 [1][2][3][4][5] 달랑 이 5페이지에만 걸쳐서 출력될수있는 데이타인데요..이 링크지정수가 10개라고 치면
#[1][2][3][4][5][6][7][8][9][10] <- [6]번부터 [10]번까지는 쓸모없는 페이지가되죠^^.데이타가 전혀없는..그러니깐.. 현재 마지막페지인 5페이지보다 10개지정
#페이지가 클경우 10개 지정한 페이지를 5개로 넣으란 예기죠^^.
if($l_link > $half_page) $l_link = $half_page;

#prev = 10단위 즉 $link_no단위로 페이지를 이동합니다. 이동방향은 뒤로 만일 [1] <- 이런페이지가 10개이고 $link_no은 5일경우.
#≪◎[6][7][8][9][10]  ≪◎거 클릭시 [1][2][3][4][5] 페이지로 이동됩니다. $next는 당현히 앞으루.
$prev = $f_link - 1;
$next = $l_link + 1;

#back = 1단위 즉 한페이지단위로 앞뒤로 이동합니다. 현제 페이지에서 1을 더하거나 빼주면 간단하게 해결되죠^^ 즉 현재페이지는 3페이지라구할경우
#[3]이되겠죠? 앞페이지루 가실꺼면 1을 더해줍니다. 그럼 4페이지가 되겠죠^^.
$back = $page - 1;
$forward = $page + 1;

#이제 계산한걸 직접적으루 링크를 해줍니다.^^ 이건이해가시죠?
print "<center>";

#링크페이지수 즉10이 현재 페이지수 보다 적으면 ≪◎ 출력하고 링크를 걸어줍니다.
if($link_no < $page) print "<b><a href=guest.php3?page=$prev>≪◎</a></b> ";

#앞서서 말했듯이 1페이지 단위^^.
if($back > "0") print "<b><a href=guest.php3?page=$back>◀ </a></b>";

#현재페이지가 1이아닐경우 [1]을 링크해줍니다. 즉 [top]기능과 같은기능이죠^^
if($page != "1") :
print "<b><span style=font-size:8pt;><a href=guest.php3?page=1>[1]</a>...</span></b>";
endif;

#여기가 [1][2][3][4][5]... 를 출력하는 부분입니다.
#$i = $f_link 즉 $i는 5(아까 위에서 예시한데로라면 5가됩니다.) $i가 마지막페이지인 14보다 작거나 같을때 $i를 증가합니당..
for($i = $f_link; $i <= $l_link; $i++) :

#만일 현재페이지가 $i즉 [$i] 와 같을경우 [$i] 안에 숫자 아래에 밑줄을 그어줍니다. 현재페이지란걸 표기하기위해서..^^;
if($page == $i) :
print "<span style=font-size:8pt;>[<u>$i</u>]</span>";
else :
#아닐경우 출력합니당..
print "<b><span style=font-size:8pt;><a href=guest.php3?page=$i>[$i]</a></span></b>";
endif;
endfor;

#만일 현재 페이지가 전체 페이지수와 같지안타면.. 즉 마지막페이지가 아니라면. 아까 위에서 [top]기능을 하는 [1]처럼 링크해줍니다.^^
if($page != $half_page) print "<b><span style=font-size:8pt;>...<a href=guest.php3?page=$half_page>[$half_page]</a></span></b>";

#이것두 역시 한페이지단위^^. 만일 $forward의 값이 전체 페이지겟수 + 1과 같지안다면. 앞으로가는 버튼을 링크.
if($forward != ($half_page + 1)) print "<b><a href=guest.php3?page=$forward> ▶</a></b>";

#이것두 10페이지단위..$link_no단위로 이동하죠^^. 전체페이지수..즉 마지막 페이지가 $next의 값보다 크면 ◎≫링크걸어줌.^^ 이상입니다.
if($half_page > $next) print " <b><a href=guest.php3?page=$next>◎≫</a></b>";
print "<br>Created by ifree(@.@!)</center>";

mysql_close($connect);
?>


</BODY>
</HTML>

#sql
create table test_guest (
                         id int(20) not null default'0' auto_increment,
                         name char(15) not null,
                         email varchar(40),
                         home varchar(150),
                         subject varchar(255),
                         comment text,
                         date char(22),
                         primary key(id));



제목 글쓴이 날짜
초보의 php를 활용한 OneFrame(NoFrame) 홈페이지 만들기 - 1 [17] 아이쿠 2002.08.30
array_multisort를 이용한 간단한 순위체크 [4] Doogi 2002.08.28
변수를 사용하여 echo로 변수값 출력하기. [7] ZipShin 2002.08.28
sleep() 제대루 쓰기... 요것두 [별루 알아도 도움 안되는 팁] [5] sMokaHallo 2002.08.24
[허접] implode() 함수로 배열을 변수로! Myzzix 2002.08.23
[허접] rand() 함수를 이용한 뒤죽박죽 날짜 출력 [5] Myzzix 2002.08.23
파일하나로 만드는 한줄 메모장(테마기능 포함) [8] Mr. JH 2002.08.22
PHP의 제어구조 [2] Mr. JH 2002.08.22
PHP 시간관련 함수 [3] Mr. JH 2002.08.22
PHP에서 사용하는 간단하지만 중요한 MySQL함수들 [3] Mr. JH 2002.08.22
꼭 알아야 하는 4가지 쿼리문 Mr. JH 2002.08.22
테이블 생성시 데이터베이스의 타입설정 [2] Mr. JH 2002.08.22
누구나 만들수있는 게시판 [글삭제, 수정 부분] [4] file Mr. JH 2002.08.21
누구나 만들수있는 게시판 [글보기 view.php 부분] [1] Mr. JH 2002.08.21
누구나 만들수있는 게시판 [글목록 list.php 부분] [6] Mr. JH 2002.08.21
누구나 만들수있는 게시판 [schema, write, write_ok] [10] Mr. JH 2002.08.21
제로 카운터 숫자 조정하기 [8] 이주경 2002.08.21
Print 이건또 뭐지? 사이트 찾다보니 있던데..^^ [13] ZipShin 2002.08.16
기초 통계 프로그램 for 귀차니스트;; [3] TheMics 2002.08.10
쓸모있는 PHP Tip (다 알구 있을런지 모르겠네여..^^) [1] 이삐아이(체리) 2002.08.09