복붙노트

[SQL] 제한 매김 페이지 번호

SQL

제한 매김 페이지 번호

$objConnect = mysql_connect("localhost","root","") or die(mysql_error());
$objDB = mysql_select_db("Test");

$strSQL = "SELECT * FROM UserAddedRecord WHERE (Name LIKE '%".$getname."%' and State LIKE '%".$getstate."%' and Cell LIKE '%".$getcell."%' and Custgroup LIKE '%".$getgroup."%') AND user_id=$id";

$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
$Num_Rows = mysql_num_rows($objQuery);

$Per_Page = 5;   

if (!isset($_GET['Page'])) {
    $Page = 1;
} else {
    $Page = $_GET['Page'];
}

$Prev_Page = $Page - 1;
$Next_Page = $Page + 1;

$Page_Start = (($Per_Page * $Page) - $Per_Page);
if ($Num_Rows <= $Per_Page) {
    $Num_Pages = 1;
} elseif (($Num_Rows % $Per_Page) == 0) {
    $Num_Pages = ($Num_Rows / $Per_Page) ;
} else {
    $Num_Pages = ($Num_Rows / $Per_Page) + 1;
    $Num_Pages = (int) $Num_Pages;
}


$strSQL .=" order  by addedrec_ID DESC LIMIT $Page_Start , $Per_Page";
$objQuery  = mysql_query($strSQL) or trigger_error(mysql_error());;

if ($Prev_Page) {
    echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Prev_Page&txtName=$getname&txtState=$getstate&txtCell=$getcell&txtGroup=$getgroup'><< Back</a> ";
}

for ($i=1; $i <= $Num_Pages; $i++) {
    if ($i != $Page) {
        echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$i&txtName=$getname&txtState=$getstate&txtCell=$getcell&txtGroup=$getgroup'>$i</a> ";
    } else {
        echo "<b> $i </b>"; 
    }
}

if ($Page!=$Num_Pages) {
    echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page&txtName=$getname&txtState=$getstate&txtCell=$getcell&txtGroup=$getgroup'>Next>></a> ";        
}

mysql_close($objConnect);

이 데이터가 난 그냥 너무 많은 레코드가 그때는 많은 예제의 페이지 표시 번호 및 모양을 제한하려고 너무 많은 페이지 numbers.I'm있을 것이다 가지고 것으로 나타났습니다 search.But에 대한 페이지 매김 페이지를 만들 수있는 코드 I의 사용이다. .IT 그것을 할 수있는 많은 방법이 있지만 나는 아직도 어떻게 내 방법을 위해 그것을 제한 할 생각이없는 ...

해결법

  1. ==============================

    1.좋아, 당신은 같은 쇼 뭔가를 의미하는 경우

    좋아, 당신은 같은 쇼 뭔가를 의미하는 경우

    Prev 1 2 3 4 5 6 .. 40 41 Next 
    Prev 1 2 .. 6 7 8 9 10 .. 40 41 Next
    

    우리가해야 할 첫 번째 일은 우리가 출력 페이지 매김을 필요 처리 할 수있는 기능을 만드는 것입니다. Heres는 함수 내가 사용하고 잘 작동합니다.

    function get_paging_info($tot_rows,$pp,$curr_page)
    {
        $pages = ceil($tot_rows / $pp); // calc pages
    
        $data = array(); // start out array
        $data['si']        = ($curr_page * $pp) - $pp; // what row to start at
        $data['pages']     = $pages;                   // add the pages
        $data['curr_page'] = $curr_page;               // Whats the current page
    
        return $data; //return the paging data
    
    }
    

    이제이 기능은 매우 견고하고 나를 위해 잘 작동합니다.

    이 기능을 통과 그래서

    좋아, 당신이 필요로하는 데이터가 지금, 당신은 그것을 표시해야합니다.

    내가 사용하고, '아, 너무 길다'생각하기 전에를 참조하십시오 무엇을 Heres. 사실은 매우 간단합니다.

    Heres는 그것을 반환 무슨의 스냅 샷

        <!-- Create the query -->
        <?php $count = mysql_fetch_assoc( mysql_query ( "SELECT COUNT( rows ) as count FROM table" ) ) ;
    
        <?php $count = $count[0]['count']; ?>
    
    <!-- Call our function from above -->
    <?php $paging_info = get_paging_info($count,5,34); ?>
    
    
    <p>
        <!-- If the current page is more than 1, show the First and Previous links -->
        <?php if($paging_info['curr_page'] > 1) : ?>
            <a href='' title='Page 1'>First</a>
            <a href='' title='Page <?php echo ($paging_info['curr_page'] - 1); ?>'>Prev</a>
        <?php endif; ?>
    
    
    
        <?php
            //setup starting point
    
            //$max is equal to number of links shown
            $max = 7;
            if($paging_info['curr_page'] < $max)
                $sp = 1;
            elseif($paging_info['curr_page'] >= ($paging_info['pages'] - floor($max / 2)) )
                $sp = $paging_info['pages'] - $max + 1;
            elseif($paging_info['curr_page'] >= $max)
                $sp = $paging_info['curr_page']  - floor($max/2);
        ?>
    
        <!-- If the current page >= $max then show link to 1st page -->
        <?php if($paging_info['curr_page'] >= $max) : ?>
    
            <a href='' title='Page 1'>1</a>
            ..
    
        <?php endif; ?>
    
        <!-- Loop though max number of pages shown and show links either side equal to $max / 2 -->
        <?php for($i = $sp; $i <= ($sp + $max -1);$i++) : ?>
    
            <?php
                if($i > $paging_info['pages'])
                    continue;
            ?>
    
            <?php if($paging_info['curr_page'] == $i) : ?>
    
                <span class='bold'><?php echo $i; ?></span>
    
            <?php else : ?>
    
                <a href='' title='Page <?php echo $i; ?>'><?php echo $i; ?></a>
    
            <?php endif; ?>
    
        <?php endfor; ?>
    
    
        <!-- If the current page is less than say the last page minus $max pages divided by 2-->
        <?php if($paging_info['curr_page'] < ($paging_info['pages'] - floor($max / 2))) : ?>
    
            ..
            <a href='' title='Page <?php echo $paging_info['pages']; ?>'><?php echo $paging_info['pages']; ?></a>
    
        <?php endif; ?>
    
        <!-- Show last two pages if we're not near them -->
        <?php if($paging_info['curr_page'] < $paging_info['pages']) : ?>
    
            <a href='<?php echo str_replace('/page'.$paging_info['curr_page'], '', $paging_info['curr_url']) . '/page'.($paging_info['curr_page'] + 1); ?>' title='Page <?php echo ($paging_info['curr_page'] + 1); ?>'>Next</a>
    
            <a href='<?php echo str_replace('/page'.$paging_info['curr_page'], '', $paging_info['curr_url']) . '/page'.$paging_info['pages']; ?>' title='Page <?php echo $paging_info['pages']; ?>'>Last</a>
    
        <?php endif; ?>
    </p>
    
  2. ==============================

    2.$ count_pages = CEIL ($ 총 / items_per_page 달러);

    $ count_pages = CEIL ($ 총 / items_per_page 달러);

  3. ==============================

    3.여기 매우 비슷한 스크립트로 다른 사람을 위해 매우 비슷한 문제를 해결 : 매김 스크립트에 표시 방법 제한 페이지

    여기 매우 비슷한 스크립트로 다른 사람을 위해 매우 비슷한 문제를 해결 : 매김 스크립트에 표시 방법 제한 페이지

    또한, 나는 (내가 고정 된 것을 읽을 수없는 형식 외에) 스크립트와 몇 가지 다른 이상을 발견했습니다. 당신은 $ _SERVER $ _SERVER [ 'SCRIPT_NAME']에 [SCRIPT_NAME]의 모든 항목을 변경해야합니다. 스크립트에서, 예를 들면 :

    echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=...";
    

    될 것입니다 :

    echo " <a href ='{$_SERVER['SCRIPT_NAME']}?Page=...";
    
  4. ==============================

    4.여기 코드는, 간단합니다

    여기 코드는, 간단합니다

    <?php       
        //put this code on the begining of the page
        $page=$_GET['page']; //Getting page number from url | example: www.mydomain.com/index.php?page=3
        if(!is_numeric($page)) $page=1; //If there is no page number specified we set number 1
    $queryCount = "SELECT * FROM table "; //select from db
    $query = $DB->query( $queryCount);
        $num = mysql_num_rows ($query); //count num rows
        $per_page=5; //default 5 results per page
    $start=$per_page*($page-1); //start for select on next page (page2, 3, 4,5)
    $end=min($num,$page*$per_page); //end
    
    
    //here is select for your results. Be careful for LIMIT in the select!
    $query = "SELECT * FROM page LIMIT $start, $per_page ";
    
    
    //page bottom, where you want to put your numbers
    $pages=ceil($num/$per_page);
      for($s=1; $s<=$pages; $s++)
      {
        if($s==$page)
          $numPage  .= "[$s] ";
        else
          $numPage  .= "<a href='index.php?page=$s'>$s</a> ";
      }
    
    echo $numPage;
    

    ?>

    나는 그것을 테스트하지 못했지만, 나는 그것이 작동 생각합니다 :-)

    때 관련, 이반

  5. ==============================

    5.내 코드는 항상 1,2,3 당신이 페이지에있는 어떤 전체 페이지의 경우> 9 적어도 9 페이지를 보여

    내 코드는 항상 1,2,3 당신이 페이지에있는 어떤 전체 페이지의 경우> 9 적어도 9 페이지를 보여

    <ul class="pagination pagination-sm" style="align:center">
        <li><a href="./?page=1"><</span></a></li>
        <?php
        if ($current_page <4){
            if ($total_pages<9)
            {
                for($i = 1; $i <=  $total_pages; $i++)
                {
    
                    if ($i == $current_page)
                    {
                        echo '<li class="active"><a href="#">'; echo $i.'</a></li>'."\n";
                    } else {
                        echo ' <li><a href="./?page='.$i.'">'; echo $i.'</a></li>'."\n";
                    }
                }
            }
            else
            {
                for($i = 1; $i <=  9; $i++)
                {
    
                    if ($i == $current_page)
                    {
                        echo '<li class="active"><a href="#">'; echo $i.'</a></li>'."\n";
                    } else {
                        echo ' <li><a href="./?trang='.$i.'">'; echo $i.'</a></li>'."\n";
                    }
                }
            }
        }
        elseif ($current_page >$total_pages-4)
        {
            if ($total_pages<9)
            {
                for($i = 1; $i <=  $total_pages; $i++){
    
                    if ($i == $current_page){
                        echo '<li class="active"><a href="#">'; echo $i.'</a></li>'."\n";
                    } else {
                        echo ' <li><a href="./?page='.$i.'">'; echo $i.'</a></li>'."\n";
                    }
                }
            }else{
                for($i = $total_pages-8; $i <=  $total_pages; $i++){
    
                    if ($i == $current_page){
                        echo '<li class="active"><a href="#">'; echo $i.'</a></li>'."\n";
                    } else {
                        echo ' <li><a href="./?page='.$i.'">'; echo $i.'</a></li>'."\n";
                    }
                }
            }
    
        }else{
            for($i = max(1, $current_page - 4); $i <= min($current_page + 4, $total_pages); $i++){
    
                if ($i == $current_page){
                    echo '<li class="active"><a href="#">'; echo $i.'</a></li>'."\n";
                } else {
                    echo ' <li><a href="./?trang='.$i.'">'; echo $i.'</a></li>'."\n";
                }
            }
        }
        ?>
        <li>
            <a href="./?trang=<?php echo $total_pages ?>">></a>
        </li>
    </ul>
    
  6. ==============================

    6.당신은 당신의 SQL 문에서 LIMIT 절을 사용해야합니다. 예를 들면 :

    당신은 당신의 SQL 문에서 LIMIT 절을 사용해야합니다. 예를 들면 :

    SELECT <column> 
      FROM <table>
        LIMIT 0, 5
    

    참조 : SELECT 구문

  7. ==============================

    7.이 코드의 목적 매김의 페이지 명확한 (특정) 번호를 보여 아니라

    이 코드의 목적 매김의 페이지 명확한 (특정) 번호를 보여 아니라

    URL에서 현재 페이지 번호를 얻고 $ curr_pg_numb을 정의

    MySQL의에서 총 페이지 수를 확인하고 $ TOTAL_PAGES을 정의

    그리고 여기에 페이지 매김을위한 코드

    $counter=0;
    $init_num_to_left = 3;//initial number of pages to show to left from current page
    $init_num_to_right = 4;
    
    if( $curr_pg_numb - $init_num_to_left < 1 ){
    $init_num_to_right = $init_num_to_right + ( 1 - ($curr_pg_numb - $init_num_to_left) );
    $init_num_to_left = $curr_pg_numb - 1;
    }
    else if( $curr_pg_numb + $init_num_to_right > $total_pages ){
    $init_num_to_left = $init_num_to_left + ( ($curr_pg_numb + $init_num_to_right) - $total_pages );
    $init_num_to_right = ($curr_pg_numb + $init_num_to_right) - $total_pages;
    }
    
    while($counter <= $total_pages ) {
      if ( $counter > 0 ){
        if ($curr_pg_numb==$counter){
        echo '<strong> '. ( htmlspecialchars($curr_pg_numb , ENT_QUOTES, "UTF-8") + 0 ). '</strong> ';
        }
        else {
        if ( $counter >= ($curr_pg_numb - $init_num_to_left ) and $counter <= ($curr_pg_numb + $init_num_to_right ) ) {
        echo '<a href="?cpn='. htmlspecialchars(($counter), ENT_QUOTES, "UTF-8"). '" style="margin:5px;">'. htmlspecialchars(($counter), ENT_QUOTES, "UTF-8"). '</a>';
        }
        }//else {
      }//if ( $counter > 0 ){
    $counter++;
    }//while($counter <= $total_pages ) {
    
  8. from https://stackoverflow.com/questions/8361808/limit-pagination-page-number by cc-by-sa and MIT license