Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

पेजिनेशन पेज नंबर सीमित करें

ठीक है अगर आपका मतलब कुछ ऐसा दिखाना है

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

पहली चीज़ जो हमें करने की ज़रूरत है वह एक ऐसा फ़ंक्शन बनाना है जो पेजिनेशन को आउटपुट करने के लिए हमें जो चाहिए उसे संसाधित कर सके। यहां एक फ़ंक्शन है जिसका मैं उपयोग करता हूं और यह अच्छी तरह से काम करता है।

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

}

अब यह फ़ंक्शन बहुत ठोस है और मेरे लिए बहुत अच्छा काम करता है।

तो आप इस फ़ंक्शन को पास करते हैं

  • $tot_rows =क्वेरी के लिए पंक्तियों की गिनती
  • $pp =प्रति पृष्ठ आइटम
  • $curr_page =वर्तमान पृष्ठ संख्या

ठीक है, अब जबकि आपके पास आवश्यक डेटा है, तो आपको उसे प्रदर्शित करना होगा।

यहाँ मैं क्या उपयोग करता हूँ और कृपया इसे पढ़ने से पहले सोचें, 'आह, यह बहुत लंबा है'। यह वास्तव में बहुत आसान है।

यह क्या लौटाएगा इसका एक स्नैपशॉट यहां दिया गया है

    <!-- 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>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:फ़ील्ड को 0 पर सेट करने वाली सभी पंक्तियों को अपडेट करना, लेकिन एक पंक्ति के फ़ील्ड को 1 पर सेट करना

  2. क्या डेटाबेस इवेंट के लिए 'सुनने' और रीयल टाइम में पेज अपडेट करने का कोई तरीका है?

  3. PostgreSQL बनाम MySQL:कौन सा सर्वश्रेष्ठ है?

  4. मैसकल बहुत बड़ी टेबल पर प्रदर्शन की गणना करता है

  5. mysql गिनती समूह होने से