0
 829   42   1
  View Articles

Name  
   바투  (2003-05-20 00:04:42, Hit : 11849, Vote : 1648)
Subject  
   흠 번호
번호가 1번으로 안나오고 11번부터 시작 하는 거라서 질문이요



어떤 건지 몰라서 list, view 둘 다 올립니다.
list.php
<?
//db에 연결하는 부분입니다. 항상 반복 되는 부분이니 꼭 암기!!
mysql_connect("localhost","phpbbs","phpbbs") or die(mysql_error());
mysql_select_db("itmembers");

//게시판 목록 보기에 필요한 각종 변수 초기값을 설정
$tablename="bbs";//테이블 이름
if($page=='') $page=1;//페이지 번호가 없다면 1
$list_num=10;//한페이지에 보여줄 목록 갯수
$page_num=10;//한화면에 보여줄 페이지 링크(묶음) 개수
$offset=$list_num*($page-1);//한 페이지의 시작 글 번호(listnum수만큼 나누었을 떄 시작하는 글의 번호

//전체 글 수를 구한다.(쿼리문을 사용 결과를 배열로 저장하는 일반적인 방법)
$query="select count(*) from $tablename";//bbs 테이블의 레코드 수를 구하는 쿼리문을 $query 변수에 저장한 것입니다.
$result=mysql_query($query) or die(mysql_error());//위의 쿼리문을 실행하여 결과를 result에 대입,실패하면 에러 메시지 표시
$row=mysql_fetch_row($result);//$row=mysql_fetch_row($result); 와 같이 하였다면,$row[0]에 실행 결과의 처음 값이 들어가겠죠. 15행의 쿼리 결과는 전체 레코드 수를 구하는 것이므로 하나의 값만 리턴하게 되므로 결국 $row[0]의 값만 있으면 되는 겁니다. 만약 24행에서의 같은 쿼리라면 그 결과로 $row[0], $row[1], $row[2]... 와 같이 차례대로 저장이 될 것입니다. 단 이 함수는 하나의 레코드에에만 해당되므로 여러 레코드의 결과 값을 차례대로 얻을려면 레코드 수만큼 반복해야 합니다.63행은 보면 while 문을 사용하여 레코드 수만큼 반복하여 그 결과값을 배열로 저장하는 예가 되겠습니다.

$total_no=$row[0];//배열의 첫번째 요소의 값, 즉 테이블의 전체 글 수를 저장!

//전체 페이지 수와 현재 글 번호를 구한다.
$total_page=ceil($total_no/$list_num);//전체 글수를 페이지당 글수로 나눈 값의 올림값을 구함..즉 전체 글 수가 55개라면, 55/10 = 5.5 이므로 올림 수이니까 6이 되겠죠.즉 55개의 글을 모두 표시하려면 6페이지가 필요하다는 겁니다.
$cur_num=$total_no-$list_num*(page-1);//현재 글 번호

//bbs테이블에서 목록을 가져 옵니다.(위의 쿼리문 사용예와 비슷!
$query="select * from $tablename order by number desc limit $offset, $list_num";//bbs 테이블에서 모든 것을 불러오되, number 필드(컬럼)를 기준으로 내림차순으로 정렬하여 표시하라는 문장입니다. 단 $offset 행부터 $list_num 개만큼 불러오라는 뜻입니다. $offset 변수에는 한 페이지의 시작 글 번호가 저장되어 있고, $list_num에는 한 페이지에 표시할 목록의 개수가 저장되어 있습니다.


$result=mysql_query($query) or die(mysql_error());//쿼리문을 실행 결과
//쿼리 결과를 하나씩 불러와 실제 html에 나타내는 것은 html문 중간에 삽입!
?>

<html>
<head>
<meta http-equiv=content-type content=text/htm; charset=euc-kr>
<title>글목록 보기</title>
<STYLE TYPE=text/css>
BODY,TD,SELECT,input,div,form,TEXTAREA,center,option,pre,blockqute{font-family:굴림;font-size:9pt;color:#555555;}
A:link {color:black;text-decoration:none;}
A:active{color:black;text=decoration:none;}
A:hover{color:gray;text-decoration:none;}
</STYLE>
</head>
<body background=/image/body_bg.gif>
<img src=./images/maintitle.gif>
<table border=1 cellspacing=0 width=680 bordercolordark=white bordercolorlight=#999999>
        <tr>
           <td width=30 bgcolor=#CCCCC>
              <p align=center>no</p>
            </td>
            <td bgcolor=#CCCCC width=490>
              <p align=center> subject</p>
            </td>
            <td width=60 bgcolor=#CCCCC>
              <p align=center>name</p>
             </td>
             <td width=80 bgcolor=#CCCCC>
               <p align=center>date</p>
              </td>
              <td width=30 bgcolor=#CCCCC>
                 <p align=center>hit</p>
                </td>
        </tr>
<?
while($array=mysql_fetch_array($result))//mysql_fetch_array() 함수는 전 시간에 다루었던 mysql_fetch_row()와 마찬가지로 쿼리의 결과를 배열 형태로 <u>한 줄씩</u> 리턴하는 기능을 합니다.
{
        $date=date("Y/m/d",$array[writetime]);//$array[wirtetime]의 값을 년(Y)/월(m)/일(d)의 형태로 표시하라는 뜻입니다.


        echo"
        <tr>
          <td width=30>
             <p align=center>$cur_num</p>
           </td>
           <td width=490>
              <p><a href='view.php?page=$page=$page&number=$array[number]'>$array[subject]</p>
           </td>
           <td width=60>
              <p align=center>$array[name]</p>
            </td>
            <td width=70>
                <p align=center>$date</p>
            </td>
            <td width=30>
                <p align=center>$array[count]</p>
            </td>
          </tr>";

          $cur_num--;
}
?>
       <tr>
          <td width=100% colspan=5>
                <?
                //여기서 부터 각종 페이지 링크>
                //먼저 한 화면에 보이는 블록($page_num 기본값 이상일 때 블록으로 나뉘어짐)
        $total_block=ceil($total_page/$page_num);//게시판 전체 블록수를 구하는 법
                $block=ceil($page/$page_num);//현재 블록

                $first=($block-1)*$page_num;//페이지 블록이 시작되는 첫 페이지
                $last=$block*$page_num;//페이지 블록의 끝 페이지

                if($block>=$total_block){
                        $last=$total_page;
                }

                echo"
                        $nbs  <p align=center>";
        //[처음][*개앞]
        if($block>1){
                 $prev=$first-1;
                 echo"<a href=list.php?page=1>[처음],</a> ";
                 echo"<a href=list.php?page=$prev>[$page_num 개 앞]</a>";
        }

        //[이전]
        if($page>1){
                $go_page=$page-1;
                echo"<a href='list.php?page=$go_page'>[이전]</a> ";
        }

        //페이지 링크
        for($page_link=$first+1;$page_link<=$last;$page_link++){
                if($page_link==$page){
                        echo"<font color=green><b>$page_link</b></font>";
                }
                else{
                        echo"<a href='list.php?page=$page_link'>[$page_link]</a>";
                }
        }

        //다음
        if($total_page>$page){
                 $go_page=$page+1;
                 echo" <a href='list.php?page=$go_page'>[다음]</a>";
        }

        //[*개뒤][마지막]
        if($block<$total_block){
                        $next=$last+1;

echo",a href='list.php?page=$next'>[$page_num 개 뒤]</a> ";
echo"<a href='list.php?page=$total_page'>[마지막]</a></p>";

        }
        ?>
        </td>
        </tr>
        <tr>
                <td width=100% colspan=5>
                  <p align=center><a href='write.php'>[글쓰기]</a></p>
                  </td>
                 </tr>
                </table>
                </body>
                </html>


view.php

<?
mysql_connect("localhost","phpbbs","phpbbs") or die(mysql_error());
mysql_select_db("itmembers");


$tablename="bbs";
$query="select * from $tablename where number='$number'";//글번호를 가지고 조회를 한다.
$result=mysql_query($query) or die(mysql_error());
$array=mysql_fetch_array($result);

//백슬러쉬 제거, 특수문자 변환(html용),개형(<br>처리 등
$array[name]=stripslashes($array[name]);
$array[subject]=stripslashes($array[subject]);
$array[memo]=stripslashes($array[memo]);

$array[subject]=htmlspecialchars($array[subject]);
$array[memo]=htmlspecialchars($array[memo]);
$array[memo]=nl2br($array[memo]);

//조회수 카운터 증가
$query="update $tablename set count=count+1 where number=$number";
mysql_query($query);
?>

<html>
<head>
<title>PHP게시판 프로젝트-보기></title>
<STYLE TYPE="text/css">
BODY,TD,SELECT,input,DIV,form,TEXTAREA,center,option,pre,blockquote{font-family:굴림;font-size:9pt;color:#555555;}
A:link {color:black;text-decoration:none;}
A:visited{color:black;text-decration:none;}
A:active{color:black;text-decoration:none;}
A:hover{color:gray;text-decoration:none;}
</STYLE>
</head>
<body bgcolor=white background=./images/body_bg.gif>
<img src=./images/maintitle.gif>
<table border=0 cellspacing=1 cellpadding="3" width=670>
        <tr>
                <td align=center>
                <font color=green><b>내용보기 화면입니다.<b></font>
                </td>
        </tr>
        <tr>
        <td bgcolor="#EAC3EA">
        <table border=0 cellspacing=1 cellpadding=0 width=670 bgcolor="white">
        <tr>
        <td width="100">
        <p align="right"><b>이름 </b></p>

        </td>
        <td width="400">
                <p><? echo $array[name];?></p>
        </td>
        <td width="100">
                <p align="right"><b>조회수  </b><p>
                </td>
                <td>
                        <p><? echo $array[count];?></p>
                </td>
                </tr>
                        <tr>
                <td width="100">
                        <p align="right"><b>전자우편 </b></p>
                </td>
                <td colspan="3"
                        <p><? echo $array[email];?></p>
                </td>
                        </tr>
                        <tr>
                <td width="100">
                        <p align="right"><b>홈페이지  </b></p>
                </td>
                <td colspan="3">
                        <p><? echo $array[homepage];?> </p>
                </td>
                        </tr>
                        <tr>
                <td width="100">
                        <p align="right"><b>제목 ></b></p>
                </td>
                <td colspan="3">
                        <p><? echo $array[subject];?></p>
                </td>
                        </tr>
                <tr>
                <td width="100">
                        <a align="right"><b>내용 </b></p>
                </td>
                <td colspan="3">
                        <p><? echo $array[memo]?></p>
                </td>
                </tr>
        </table>

        <p align="center"><a href="list.php?page=<?echo $page; ?>">[목록]</a> [쓰기] [수정]  [삭제]</p>
        </td>
</tr>
</table>
<body>
</html>


-------------------------------------------------
  에고, 빠른 답변 감사드립니다.
  제가 " 빼먹어서 안되었군요. 그거 때문에 2시간을 허비했습니다. 철푸덕@_@;;;

  그리고 학원에서 이번달 수업 내용이 홈페이지 만들기라서 모르는 php문을 열심히 보고 있는데요.

  사이트를 보다 보면 보안에 대한 이야기가 많더라고요.

  현재 제가 지금 열심히 짜고 있는 건 회원 가입 부분인데요.

  예를 들어서 사이트 주소가 aa.co.k/   이라고 하면

  /~~~~ 이 뒤에 게시판이나 내용 보면 엄청나게 길게 나오지 않습니까.

  근데 전 / 이 뒤에 부분을 모두 없애고 언제나 어디서나(...) 도메인 주소만 보이게 하고 싶거든요. 어떻게 하면 그렇게 될까요. 어떤 분 말씀으로는 히든을 사용하라고 하는데......

  에고... 모르는게 있으면 언제나 올리겠습니다@_@;;

  엄청 귀찮게 해드릴 것 같네요(....)





손병목
글 번호는 list.php만 관련이 있습니다. 목록 보기 외에는 글 번호가 표시되는 곳이 없으니까요.
그래서 list.php를 주~욱 봤는데요,

$cur_num=$total_no-$list_num*(page-1);//현재 글 번호

이 부분에서 오타가 났네요.
page → $page
이럴 경우 매 페이지마다 동일한 글 번호가 나타납니다.

그 외에도 오타가 조금씩 있는 것 같습니다만, 프로그램에 결정적인 영향을 미치는 것은 $page 변수 오타인 것 같네요.

아래와 같은 오타도 있는 것 같구요...
echo",a href='list.php?page=$next'>[$page_num 개 뒤]</a> ";
여기서는 쉼표(,) 대신 <를 써야할 것 같구요...
 2003/05/20 08:42:52    

손병목
그리고 view.php?no=12&page=3&src_name=%!#!$!@# 와 같이 호출되는 것이 싫으시다면요,
FORM 태그에서 method="get"을 method="post"로 바꾸어서 사용하면 됩니다.

히든으로 처리한다는 것은,
<input type="hidden" name="xxxx" value="oooo">와 같은 식으로 소스 중간에 집어넣고, FORM 태그에서 method="post"로 지정하라는 것입니다.

그러나 이렇게 하면 웹 브라우저의 주소 표시줄에 복잡한 문자(이걸 query string이라고 하는데요...), 이게 보이지 않아서 좋기는 하지만, 프로그램을 짤 때 불편할 경우가 있습니다. 잘 구현이 안될 때도 있구요.
예를 들어 글 목록을 볼 때 현재 페이지에서 다음 페이지로 가기 위해 [다음] 버튼을 눌렀을 때 해당 링크를 처리하려면 get 방식이 매우 편리합니다. post 방식으로 하려면... 못할 거야 없지만 머리를 좀 더 굴려야(?) 됩니다. 대개 그렇게 잘 쓰지 않습니다.
 2003/05/20 08:51:43    


no
subject
name
date
hit
*
829
  흠 쿵쿵따

파란
2008/11/23 10736 2040

  흠 번호 [2]

바투
2003/05/20 11849 1648
827
 비밀글입니다 회원가입에 대하여.. [1]

김환희
2003/08/09 8 0
826
  회원가입 관련.. [1]

2004/03/27 8671 1886
825
  형~ 잘지냈어? ^^ [2]

손상욱
2005/09/19 8479 1921
824
 비밀글입니다 형, 95학번 배상원입니다. [1]

배상원
2006/09/28 5 0
823
  헤헤 또 질문이요~~^^; [3]

이경진
2003/08/08 8690 1822
822
    해결이 안되는군요...ㅠ_ㅠ [1]

stub363
2004/01/01 7714 1766
821
  한줄메모장..ㅋㅋ [4]

이진수
2006/05/27 10910 1903
820
  한줄답변 에러.... ㅠ.- [2]

궁금이
2004/03/31 11026 1881
819
    한줄답변 삭제 질문이여... ㅠ.- [2]

궁금이
2004/04/01 8378 1710
818
  한가지만 더물어볼게요. [1]

김민수
2003/03/25 7687 1450
817
  한 수 부탁드립니다. [2]

임춘식
2005/01/02 7489 1506
816
 비밀글입니다 학생인데요..도움을 부탁드립니다 [2]

김환희
2003/06/21 12 0
815
  하이링크 김태영 입니다 운영자님 검토바... [1]

김태영
2005/02/23 7915 1613
814
  프로그램수정을위한 소스보기 [1]

정영일
2006/04/28 8284 1815
813
  프로그래밍 하다가 막혀서@_@;;

바투
2003/05/23 7303 1450
812
  폼에서 넘겨온 값을 데이터베이스에 저장... [2]

김주완
2005/08/03 8029 1546
811
  폼메일에서 전달 소스를 쓸수가 있을까요... [2]

어두민
2003/03/17 7225 1504
810
 비밀글입니다 폼메일에 대한 질문입니다 [2]

Kimjinhee
2003/02/11 9 0
1 [2][3][4][5][6][7][8][9][10]..[42] [next]

Copyright 1999-2022 Zeroboard / skin by Zetyx