웹마스터 팁

view_php.gif
두시간 동안 글을 썼는데 .......

기분 좋게 (?) 글이 날라갔습니다  하하하하하~~~~ 웃어야지

긴 글을 쓸 때는 내용을 복사해 두길 생활화 합시다 ! ^_______________________^ V





오늘 해볼 사항은 리스트 파일의 제목 부분에 링크를 걸어서 view.php 파일로 넘기는 것과

view.php 파일의 소스입니다


먼저 리스트 파일의  아래 부분을 찾아 주세요

  <!-- 여기서부터 글을 반복 시켜 줍니다 -->  
    
    
    <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>
    
      <!-- 여기까지  글을 반복 시켜 줍니다 -->  

여기서

<?=$now_data[subject]?> 부분을 아래와 같이 링크를 걸어줍니다


<a href=<?="view.php?id=$data[board_id]&exec=view&no=$now_data[no]&page=$page&select_arrange=$select_arrange&desc=$desc&category=$category&sn=$sn&ss=$ss&sc=$sc&keyword=$keyword&page_num=$page_num"?>><?=$now_data[subject]?></a>


제목을 클릭하면 해당 글의 본문(view.php)을 볼 수 있는거죠


list.php 파일과 view.php 의 php소스는  아직까지는 크게 차이가 나지 않습니다

다만  view.php 파일에는 위에  본문이 담긴다는 것만 틀리죠


이하  view.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,member_id,name,homepage,email,member_no,subject,memo,reg_date,file1,hit  from member_get_memo where no='$no'"));
}

        

// 전체 글의 갯수
        $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&keyword=$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=$ss&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 align="center" border="0" cellpadding="0" cellspacing="0" width="973">
    <tr>
        <td width="973" height="25" colspan="6" bgcolor="#F6E1F5">
            글제목 : <?=$now_data[subject]?>
        </td>
    </tr>
    <tr>
        <td width="132" height="125" align="center" valign="middle" rowspan="8">
           아바타
        </td>
        <td width="841" height="25" colspan="5">
          글쓴 시간 : <?=$reg_date?>
        </td>
    </tr>
    <tr>
        <td width="841" height="1" colspan="5" bgcolor="silver">
        </td>
    </tr>
    <tr>
        <td width="841" height="25" colspan="5">
           글쓴이 : <?=$now_data[name]?>
        </td>
    </tr>
    <tr>
        <td width="841" height="1" colspan="5" bgcolor="silver">
        </td>
    </tr>
    <tr>
        <td width="841" height="25" colspan="5">
            홈페이지 :
        </td>
    </tr>
    <tr>
        <td width="841" height="1" colspan="5" bgcolor="silver">
        </td>
    </tr>
    <tr>
        <td width="841" height="25" colspan="5">
           메일 ;
        </td>
    </tr>
    <tr>
        <td width="841" height="1" colspan="5" bgcolor="silver">
        </td>
    </tr>
    <tr>
        <td width="973" height="121" align="center" valign="middle" colspan="6">
            <table border="0" cellpadding="0" cellspacing="0" width="100%" height="95%">
                <tr>
                    <td width="963" height="95%" valign="top" bgcolor="#F2F2F2">
                        <?=$now_data[memo]?>
                    </td>
                </tr>
            </table>
        </td>
    </tr>
    <tr>
        <td width="973" height="58" align="center" valign="top" colspan="6">
            <table border="1">
                <tr>
                    <td width="963" height="54" bgcolor="silver">            코멘트 글과 코멘트를 입력 시키는 곳
                    </td>
                </tr>
            </table>
        </td>
    </tr>
    <tr>
        <td width="973" height="23" align="center" valign="top" colspan="6">
            글목록 글쓰기 수정 삭제등 버튼 들어가는 곳         </td>
    </tr>
        <tr>
        <td width="973" height="33" colspan="6">
              관리   관리   게시판 >> <?=$data[board_name]?>
        </td>
    </tr>
    <tr>
        <td width="132" height="21" align="center" valign="middle" bgcolor="#DEDEF7">
            번호
        </td>
        <td width="485" 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="132" height="22">
            <?= $loop_number?>
        </td>
        <td width="485" height="22">
            

<a href=<?="view.php?id=$data[board_id]&exec=view&no=$now_data[no]&page=$page&select_arrange=$select_arrange&desc=$desc&category=$category&sn=$sn&ss=$ss&sc=$sc&keyword=$keyword&page_num=$page_num"?>><?=$now_data[subject]?></a>


        </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">
                        글쓰기 <a href=<?="list.php?id=$data[board_id]"?>>목록 </a>



                    </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>
<?
}
?>


----------------------------------------------------------------------------------------------

위까지가 소스입니다

소스를  view.php 파일로 저장해서 list.php 파일과 동일한 선상에 업로드 해주세요


list.php 파일과 view.php 파일은  글목록 부분 (리스트) 부분이 while문 안에서 반복되어져서 불러들여집니다

글을 쓰게 되면 member_get_memo 테이블 (글의 정보가 담기는 테이블) 에 모든 조건이 담깁니다

그 중에서도 제일 처음에 있는 no필드에 글이 들어올 때 마다 번호를 부여해서 하나씩 증가하게 됩니다

처음글은 1 그 다음 글이 들어오면 2 그 다음글은 3   ~~~~   이런식으로 쓰여지게 되는거죠

만약에 10개의 글을 썼다면 no 라는 필드엔 1에서부터 10까지 차례대로 순번(숫자)이 들어가 있습니다

이 숫자 들이 글의 번호입니다  제로보드의 회원번호도 이와 같습니다

로그인한 회원의 번호는 $member[no] 이구 여기에서 쓰이는 no 값은 제로보드 회원 테이블 맨 앞에 혹은 위에

있는 처음 쓰여진  no 필드의 값입니다  처음 생성한 사람이 1번이니까 최고 관리자의 번호는 1번이 되는거죠

쉽게 말하면 일종의 번호표인 것입니다  글이나 어떠한 값의 위치를 알려 줄수 있는 하나의 순서표(조건값)인거죠


아래와 같은 상황이 있습니다

제로보드

웹 스터디

php

사용자가  웹스터디에 들어간 목록을 보구 싶을 때  웹스터디에 관한 글을 불러오라며 직접 써 넣을 수도

있습니다 ( 찾기 기능)  하지만 글을 볼려구 일일이 써 넣을 수는 없으니 쉽게 접근할 수 있는 방법이

해당글에 순서를 부여하고 그 순서를 이용해서 글을 정렬 시키는거죠




// 선택된 메모가 있을시 데이타 뽑아오기;;


if($no) {
                $now_data=mysql_fetch_array(mysql_query("select no,board_name,board_id,member_id,name,homepage,email,member_no,subject,memo,reg_date,file1,hit  from member_get_memo where no='$no'"));
}



$now_data 는 글이 담기는 member_get_memo 의 데이터입니다

$now_data 라구 정의된 데이터들은 member_get_memo 테이블에서 불러오되 no='$no' 라는 값을 맞춰서

즉 no라는 필드에서 들어온 변수 ($no  = 글 번호가 되겠죠 ) 에 맞게  해당 열에 써진 부분을 찾아 와라가 됩니다




select no,board_name,board_id,member_id,name,homepage,email,member_no,subject,memo,reg_date,file1,hit  

이분은 member_get_memo 에서 $now_data로 불러들이는 필드의 종류입니다 만약에 여기에 없는 필드를

기입한다면 에러가 나겠죠 또한 테이블에는 있는 필드지만 위에 기재가 되어 있지 않다면  표기가 되지 않구요

저도 가끔 이부분에서 에러를 냅니다  하도 많이 고쳐 대서 ...

select * frim member_getmemo where no='$no'")); 와 같이 모든 필드의 값을 불러들여도 되지만

양이 많아질 때는 일일이 써주는게 더 효율적이라고 하더군요

$now_data[name] 은 글쓴이 $now_data[board_id] 는 글이 담긴 게시판 아이디 $now_data[memo]는 글내용

이런식으로 되겠죠

처음 쓴 글은 당연히 no필드에 1이 기입 되니 글번호 1번에 담긴걸 불러온다면 주소의 표시는 아래와 같이 됩니다

view.php?id=repter&no=1  

여기서 &는 조건값들을 연결 시켜줍니다  게시판 아이디는 repter 이면서 글 번호 1인 값이 되는거죠

만약 카테고리가 지원 된다면
view.php?id=repter&category=1&no=1  

과 같이 되겠죠

게시판에서 부여되는 조건값을 &로 연결고리로 넣어주는거죠





잠깐 팁

게시판을 디자인 하실 때 테이블 안에 테이블을 넣는 식으로 하시는게 속 시원하실 수도 있습니다

테이블 속성상  넓이가 지정되면 다음의 셀은 그 전 셀의 영향을 받게 되어 원하는 위치에 정렬이 되지 않습니다

또한 스타일 태그에 대해 한번쯤  필요한 페이지를 찾아서 봐두시길 바랍니다 (nowrap 으로 네이버나 야후에서

찾아 보시면 게시판에서 쓰일만한 스타일 태그들이 많이 나옵니다 )

원하는 스타일의 테이블을 만들었어도 게시판의 사이즈에 의해 정렬된 부분이 깨질 수 있습니다

또한 글을 쓸때 엔터를 치지 않은 또한 띄어 쓰기가 되지 않은 글이 들어오면  넓이 부분에서 게시판 크기를

벗어납니다 그러니 필요한 부분 부분을 적절히 스타일 태그를 넣어서 사용해야 합니다

특히 미니홈에 들어가는 게시판은 획일화된 사이즈의 레이아웃에만 쓰는게 아닌 여러가지의 레이아웃에

쓰여야 하기 때문에 사이즈의 변화에도 이상이 없어야 합니다



차후에는 리스트나 뷰파일의 아래부분
-------------------------------------
<?
        // 출력
        $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]);  

?>


  <!-- 여기서부터 글을 반복 시켜 줍니다 -->  
---------------------------------------------


의 글을 쓴 날짜 밑에 부분에 $reg_date를 미리 지정해 준것 처럼 여러 사항을 지정해서 넣어 주게 됩니다

while 의 밖에서 소스를 적용하면  하나의 변수로 인식해서 같은 결과를 출력해 버리는 결과가 나오기도 합니다

그래서 while 안에서 필요한 소스를 넣어주게 됩니다 차후에 들어갈 소스는

멤버의 이름 아이콘과 만약 이름레이어를 쓰게 된다면 이름레이어에 관한 부분과 글을 읽고 리스트로 돌아 왔을

때 내가 읽었던 글이 어떤 글이였는지 표시해 주는 가상번호에 관한것등 필요한 부분  부분을 넣게 됩니다



올려진 파일을 점검해야 할 사항은 오류가 나지 않은 상태에서 list.php 파일에서 글제목을 클릭하고 들어갔을 때

해당 글이 업로드 된 그림과 같이 잘 나오는지 확인하며

그 아래에 있는 리스트에서 다시 다른 글로 넘어가는지  목록보기를 눌렀을 때

list.php 파일로 넘어 오는지 그리고 hit 수가 제대로 표기 되는지를 확인하시면 됩니다

제목 글쓴이 날짜
개판 오분전 라인 그래프 [4] 미친개 2004.12.01
실명 진위여부 확인 [10] piasol 2004.12.01
나만의 미니홈 만들기 ㅡ write.php 파일과 write_ok [5] 예뜨락 2004.11.30
나만의 미니홈 만들기 ㅡ view.php 파일과 제목링크 [9] file 예뜨락 2004.11.27
나만의 미니홈 만들기 ㅡ list.php , 디비 테이블 생성 [6] file 예뜨락 2004.11.26
나만의 미니홈 만들기 ㅡ 게시판 list.php 파일의 모양새 [6] 예뜨락 2004.11.23
나만의 미니홈 만들기 ㅡ 게시판의 디자인 file 예뜨락 2004.11.22
나만의 미니홈 만들기 ㅡ 미니홈 생성 페이지 [3] file 예뜨락 2004.11.20
나만의 미니홈 만들기 ㅡ 기초적인 관리 페이지 [3] file 예뜨락 2004.11.20
나만의 미니홈 만들기 ㅡ 메인 기초 설계3 .레이아웃 [2] file 예뜨락 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