웹마스터 팁

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 수가 제대로 표기 되는지를 확인하시면 됩니다

제목 글쓴이 날짜
레이아웃에 배경이미지 업로드 하고 적용시키기 [1] 웹빌드ver2 2014.06.10
Windows 서버에서 XE 속도 대폭 개선 방법 [29] StyleRoot 2013.02.25
Google Public DNS 강제 Flush Cache 하기 AJKJ 2014.06.08
PHP에서 Socket.IO 서버로 요청 보내기 [3] 이즈야 2014.06.01
윈도우7/8에서네임서버 운영 POSTZI 2014.06.08
XHTML 과 CSS 오류검사를 해주는 사이트 입니다. 디테일 2014.06.07
회원정보에서 '서명' 수정이 반영되지 않을 경우 Novelic 2014.06.03
홈페이지에 접속한 장치의 너비 구하기 [3] CosignStudio 2014.05.28
익스플로러의 자동완성 기능 off 하기 [7] WOWpc 2001.10.23
스크롤바 색깔 바꾸는 스타일... [8] 잔디 2001.01.05
[1초팁] Google Fonts의 폰트파일이 XE템플릿 문법으로 불러와지지 않을때 mAKEkr 2014.05.31
게시판 comment 스타일 수정 웹빌드ver2 2014.05.30
Mysql DB사용량 출력하기 [4] 대류 2012.01.01
유저가 자신의 회원정보 전체를 공개/비공개 설정하게 하는 방법 [2] sejin7940 2014.05.27
윈도에서 버츄얼박스 실행 시에 작업표시줄에 보이지 않게 하기 hyun 2014.05.26
사용자정의에서 날짜형의 경우, 달력의 년수 선택범위를 늘리는 방법 sejin7940 2014.05.24
Draggable Captcha System for XE1.7.5 Member Module (QapTcha) [7] file 우진홈 2014.05.21
메뉴가 많을때 레이아웃 쉽게 변경하기 웹빌드ver2 2014.05.23
XE 코어 1.7 버전에서 최근이미지 출력하기 [1] file 때린데 또때려 2013.12.14
스팸 회원 삭제시 동시에 관련 글 / 댓글 자동 삭제 + 스팸IP 등록기능 구현방법입니다 [20] sejin7940 2013.05.22