웹마스터 팁

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

미리보기 : 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));



제목 글쓴이 날짜
교육용 방명록 #8 [delete.php3파일에서 넘겨받은 비밀번호를 검사하여 글을 삭제합니다.] [18] zero 2000.07.03
MySQL 루트비번 분실시 대처요령 [29] zero 2001.04.18
노프레임/카운터에 관련된 PHP함수 팁 몇가지 [1] 차카게살자 2001.12.28
PHP 인증 페이지를 만들자! - Lesson 1 수정본 #2 ☺[폐]허접-_- 2002.01.24
PHP 인증 페이지를 만들자! - Lesson 2 수정본 #1 [5] ☺[폐]허접-_- 2002.01.24
회원관리 프로그램을 구현하고 싶은신 분들께.. [7] [폐]허접-_- 2002.03.18
PHP 인증 페이지를 만들자! - Lesson 3 수정본 #1 [3] ☺[폐]허접-_- 2002.01.24
M3U생성 프로그램을 통한 MP3실시간 듣기.. [11] ▒1q▒ 2001.09.13
배경 음악을 한번만 실행 시키기 - 쿠키이용 [4] 오기 2001.12.02
주소에서 음악 파일만 빼와 윈앰프로 실행하기 [1] file 오기 2001.12.04
[추천 팁] phpmyadmin 으로 복구 할때. 후니 2001.02.28
공부용 방명록이에욥^^. 주석왕창(페이지분할등.기능있어욥~) [2] 프리^^ 2001.04.16
최근게시물 - 첫글은 내용까지, 다음글부터 목록만... [15] СreдturЭ 2001.04.16
[APM] 한글, gif, jpeg, png 다되는 GD 설치 [4] 앤디(andy) 2001.05.22
GD를 이용해본 영어 발음기호 image출력 [3] 앤디(andy) 2001.05.24
쿠키 설정하고 불러올때 주의할점;; [윈도우 멀티부팅 사용하시는 초보분만] [9] daftya 2001.05.29
대화방을 만들어보쟈~ [20] 해그리드짱!!! 2001.06.03
자기 홈 또는 서버 연지 며칠이 지났는지 알 수 있는 php 소스 [15] 고종길 2001.06.03
홈페이지에 실시간뉴스 보여주기 [19] looster 2001.06.05
지금까지 살아온 날 계산해 주는 스크립트 [6] skyel 2001.07.20