페이징처리하는데 해결이 안되는부분이 있어서 질문올립니다.

페이징처리하는데 해결이 안되는부분이 있어서 질문올립니다.

QA

페이징처리하는데 해결이 안되는부분이 있어서 질문올립니다.

답변 1

본문

<?php

    include_once('./_common.php');

    include_once('./admin.head.php');

 

 /* 페이징 시작 */

 $sql = "select count(*) as cnt from bt_mail_addr";

  $row = sql_fetch($sql);  // mysql_fetch_array로 하면 페이지 12345 가 다 보임

   

  $allPost = $row['cnt']; //전체 게시글의 수

  echo "전체게시글 수:" .  $allPost;

     

  $onePage = 20; // 한 페이지에 보여줄 게시글의 수.

  $allPage = ceil($allPost / $onePage); //전체 페이지의 수

  if($page < 1 && $page > $allPage) {

  ?>

    <script>

      alert("존재하지 않는 페이지입니다.");

      history.back();

    </script>

  <?php

    exit;

  }

   

  $oneSection = 5; //한번에 보여줄 총 페이지 개수(1 ~ 10, 11 ~ 20 ...)

  $currentSection = ceil($page / $oneSection); //현재 섹션

  $allSection = ceil($allPage / $oneSection); //전체 섹션의 수

   

  $firstPage = ($currentSection * $oneSection) - ($oneSection - 1); //현재 섹션의 처음 페이지

   

  if($currentSection == $allSection) {

    $lastPage = $allPage; //현재 섹션이 마지막 섹션이라면 $allPage가 마지막 페이지가 된다.

  } else {

    $lastPage = $currentSection * $oneSection; //현재 섹션의 마지막 페이지

  }

   

  $prevPage = (($currentSection - 1) * $oneSection); //이전 페이지, 11~20일 때 이전을 누르면 10 페이지로 이동.

  $nextPage = (($currentSection + 1) * $oneSection) - ($oneSection - 1); //다음 페이지, 11~20일 때 다음을 누르면 21 페이지로 이동.

 

   

  $paging = '<ul>'; // 페이징을 저장할 변수

   

  //첫 페이지가 아니라면 처음 버튼을 생성

  if($page != 1) { 

    $paging .= '<li class="page page_start"><a href="./mail_send_list.php?page=1">처음</a></li>';

  }

  //첫 섹션이 아니라면 이전 버튼을 생성

  if($currentSection != 1) { 

    $paging .= '<li class="page page_prev"><a href="./mail_send_list.php?page=' . $prevPage . '">이전</a></li>';

  }

   

  // 페이징 숫자 나옴

  for($i = $firstPage; $i <= $lastPage; $i++) {

    if($i == $page) {

      $paging .= '<li class="page current">' . $i . '</li>';

    } else {

      $paging .= '<li class="page"><a href="./mail_send_list.php?page=' . $i . '">' . $i . '</a></li>';

    }

  }

   

  //마지막 섹션이 아니라면 다음 버튼을 생성

  if($currentSection != $allSection) { 

    $paging .= '<li class="page page_next"><a href="./mail_send_list.php?page=' . $nextPage . '">다음</a></li>';

  }

   

  //마지막 페이지가 아니라면 끝 버튼을 생성

  if($page != $allPage) { 

    $paging .= '<li class="page page_end"><a href="./mail_send_list.php?page=' . $allPage . '">끝</a></li>';

  }

  $paging .= '</ul>';

   

  /* 페이징 끝 */

  $currentLimit = ($onePage * $page) - $onePage; //몇 번째의 글부터 가져오는지

  $sqlLimit = ' limit ' . $currentLimit . ', ' . $onePage; //limit sql 구문

?>

 

<form onsubmit="return goForm();" method="POST" action="./mail_send_list_update.php" name="myForm">

<input type="hidden" name="cnt" id="cnt" value="" />

<input type="hidden" name="w" id="w" value="" />

 

    <fieldset>

    <legend>뉴스레터 리스트</legend>

        

        <body>

            <tr>

                <th>이름</th>

                <th>메일</th>

            </tr>

            <br/>

                <input type="hidden" name="bt_mail_uid" id="bt_mail_uid" />

                <input type="text" name="bt_mail_name" id="bt_mail_name" size="20" maxlength="255" />

                <input type="text" name="bt_mail" id="bt_mail" size="20" maxlength="255" />

                <input type="submit" value="추가" onclick="document.pressed=this.value" ><br/>

            

            <table>

                <tr>

                    <?php

                        $sql = " select * from bt_mail_addr ";

                        $result = sql_query($sql);

                        $cnt = 0;

                        while($row=sql_fetch_array($result)) { 

                        $cnt++;

                    ?>

                    

                    <span>

                        <input type="hidden" name="cat_id_<?=$cnt?>" id="cat_id_<?=$cnt?>" value="<?=$row['bt_mail_uid']?>" />

                        <!--wr_name를 cat_<?=cnt?>으로 대체-->

                        <input type="text" name="cat_<?=$cnt?>" id="cat_<?=$cnt?>" value="<?=$row['bt_mail_name']?>" />

                        <!--wr_id를 cat_id_<?=$cnt?>으로 대체-->

                        <input type="text" name="cat_mail_<?=$cnt?>" id="cat_mail_<?=$cnt?>" value="<?=$row['bt_mail']?>" />

                        

                    </span>

 

                    <span>

                        <input type="submit" value="삭제" onclick="document.pressed=this.value+'|'+<?=$row['bt_mail_uid']?>" >

                    </span>

                    <br>

                    <?php } ?>

                </tr>

            </table>

        </body>

    </fieldset>

</form>

 

<script type="text/javascript">

// 위의 form action부분에 return goForm();

function goForm(){

var val = document.pressed;

    

    val = val.split("|");

 

    

    var w = val[0]; //등록, 수정, 삭제

var id = val[1]; //cnt

 

// 위의 input에서 id값인 cnt를 불러오기위해 getElementById를 써줌

var cnt = document.getElementById("cnt").value = id;

var flag = document.getElementById("w"); 

 

switch(w){

case '추가' :

var quest = confirm('추가하시겠습니까?'); 

if(quest){

                // if조건을 w가 빈값일때는 확인을 누르면 등록이 된다.

flag.value = "";

}else{

return false;

}

break;

case '삭제' :

var quest = confirm('삭제하시겠습니까?');

if(quest){

// if조건을 w가 d값을 가질때는 확인을 누르면 삭제를 한다.

flag.value = "d";

}else{

return false;

}

break;

        }

    }

</script>

 

    <div>

        <div class="paging">

            <?php if($cnt>0){ ?>

            <?=$paging?>

            <?php } ?>

        </div>

    </div>

 

<?php

include_once('./admin.tail.php');

?>

 

 

 

$onePage(한페이지에 보여줄 게시글의 수)를 20으로 지정해주었습니다.

 

헌데 한 페이지에 게시글이 모두 뜨는 상황입니다.

 

밑에

<div>

        <div class="paging">

            <?php if($cnt>0){ ?>

            <?=$paging?>

            <?php } ?>

        </div>

       </div>

페이지 번호가 나타나는 부분은 잘 나타납니다.

 

어째서 게시글이 20개씩 안보이고 전체 게시글이 나타나는건지요..

 

 

이 질문에 댓글 쓰기 :

답변 1

limit 을 출력 쿼리에 넣지 않으셧네요 ....

 


<?php
                        $sql = " select * from bt_mail_addr ";
						$sql .= $sqlLimit;
                        $result = sql_query($sql);
                        $cnt = 0;
                        while($row=sql_fetch_array($result)) { 
                        $cnt++;
                    ?>
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 5
© SIRSOFT
현재 페이지 제일 처음으로