웹마스터 팁

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

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



제목 글쓴이 날짜
특정 도메인 가입 않되게 (인증메일 관련) 컴박살 2014.08.06
비밀번호 변경시 비밀번호 재입력 생략하기 Summer 2014.08.06
자주 쓰지 않지만, 알아두면 좋은 명령어들.. SIN 2014.08.06
fedora core4 기준으로 iptables 최소한 이정도는 막아줘야 할듯,, [3] [1] 인호씨 2005.11.19
게시글 주소 아주 짧게 줄이기 [11] 웹 엔진 2011.08.07
Bind 설정하기 뚱녀파파 2014.07.30
잦은 등급변경으로, 회원 등급이 엉켰을 경우 해결방법. [1] NZ448 2009.09.10
MySQL Replication 사용중 Binary Log 삭제 하기 박희망찬삶 2014.07.29
게시판 데이터 일괄 삽입 방법 [1] Happyphp 2014.07.26
짧은 주소를 가능 하게 하는 서버(아파치, httpd) 설정 [3] 꿈섬 2014.07.27
인증메일 안가는 문제- 완전 간단 해결 꿈섬 2014.07.27
/XE/떼어 내기 방법... 꿈섬 2014.07.27
CURL 등 리퀘스트가 느리다고 생각될때 [1] 銀童 2014.07.25
[초보팁] .htaccess 파일을 이용하여 여러가지 주소 한 주소로 리다이렉트 하기 ( 주소 통합 ) [5] 태풍_님 2014.07.23
빈공간 더블 클릭시 상하 이동 스크립트 socialskyo 2014.07.23
이메일인증 Error 한방정리 참고해보세요. [4] 애드바이러스 2014.02.12
로그인 안하면 코멘트 볼 수 없게 스킨 수정하는 법 [3] W.O 2014.03.23
회원 비밀번호 수정시 자동으로 로그아웃 되게 하는 방법 [4] sejin7940 2014.07.18
특정 확장변수를 글 추천자에게만 보이게 하기 [10] 뮤랑이 2010.01.11
관리자만 글 등록이 되고, 일반 유저는 글 등록버튼을 누르면 아무런 반응이 없을 때. [1] whitemind 2013.11.07