สอบถามเกี่ยวกับ pagination การเลือกเเสดงข้อมูลในเเต่ละหน้า (มีภาพประกอบ)

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา สอบถามเกี่ยวกับ pagination การเลือกเเสดงข้อมูลในเเต่ละหน้า (มีภาพประกอบ)

สอบถามเกี่ยวกับ pagination การเลือกเเสดงข้อมูลในเเต่ละหน้า (มีภาพประกอบ)
จากรูปตัวอย่าง คือผมจะทำปุ่มที่จะกดเลือกได้ว่า ต้องการให้เเสดงข้อมูล ในหน้านั้น จำนวนเท่าไหร่ ซึ่งผมไม่ทราบว่ามันรียกว่าอะไร เเละรบกวนขอตัวอย่างในการเขียนด้วยครับ

ภาพที่1

ภาพที่2

           $row = 0;

            // number of rows per page
            $rowperpage = 5;
            if(isset($_POST['num_rows'])){
                $rowperpage = $_POST['num_rows'];
            }

            // Previous Button
            if(isset($_POST['but_prev'])){
                $row = $_POST['row'];
                $row -= $rowperpage;
                if( $row < 0 ){
                    $row = 0;
                }
            }

            // Next Button
            if(isset($_POST['but_next'])){
                $row = $_POST['row'];
                $allcount = $_POST['allcount'];

                $val = $row + $rowperpage;
                if( $val < $allcount ){
                    $row = $val;
                }
            }
        ?>
    </head>
    <body>
    <div class="container">

        <table width="100%" id="emp_table" border="0">
            <tr class="tr_header">
                <th>S.no</th>
                <th>Name</th>
                <th>Salary</th>
            </tr>
            <?php
            // count total number of rows
            $sql = "SELECT COUNT(*) AS cntrows FROM employee";
            $result = mysqli_query($con,$sql);
            $fetchresult = mysqli_fetch_array($result);
            $allcount = $fetchresult['cntrows'];

            // selecting rows
            $sql = "SELECT * FROM employee  ORDER BY ID ASC limit $row,".$rowperpage;
            $result = mysqli_query($con,$sql);
            $sno = $row + 1;

            while($fetch = mysqli_fetch_array($result)){
                $name = $fetch['emp_name'];
                $salary = $fetch['salary'];
                ?>
                <tr>
                    <td align='center'><?php echo $sno; ?></td>
                    <td align='center'><?php echo $name; ?></td>
                    <td align='center'><?php echo $salary; ?></td>
                </tr>
            <?php
                $sno ++;
            }
            ?>
        </table>
      
        <!-- Pagination control -->
        <form method="post" action="" id="form">
            <div id="div_pagination">
                <input type="hidden" name="row" value="<?php echo $row; ?>">
                <input type="hidden" name="allcount" value="<?php echo $allcount; ?>">
                <input type="submit" class="button" name="but_prev" value="Previous">
                <input type="submit" class="button" name="but_next" value="Next">

                <!-- Number of rows -->
                <div class="divnum_rows">
                <span class="paginationtextfield">Number of rows:</span>&nbsp;
                <select id="num_rows" name="num_rows">
                    <?php
                    $numrows_arr = array("5","10","25","50","100","250");
                    foreach($numrows_arr as $nrow){
                        if(isset($_POST['num_rows']) && $_POST['num_rows'] == $nrow){
                            echo '<option value="'.$nrow.'" selected="selected">'.$nrow.'</option>';
                        }else{
                            echo '<option value="'.$nrow.'">'.$nrow.'</option>';
                        }
                    }
                    ?>
                </select>
                </div>
            </div>
        </form>


Antinew007 03-02-2020 11:04:51

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
     <!-- Pagination control -->
    <form method="post" action="" id="form">
        <div id="div_pagination">
            <input type="hidden" name="row" value="<?php echo $row; ?>">
            <input type="hidden" name="allcount" value="<?php echo $allcount; ?>">
            <input type="submit" class="button" name="but_prev" value="Previous">
            <input type="submit" class="button" name="but_next" value="Next">

			<style type="text/css">
            .btn-page-navi{
                display:inline-block;
                border:1px solid #CCC;
                background-color:wihte;
                color:#000; text-align:center;		
            }
            .btn-page-navi.active{
                background-color:green;
                color:#FFF; text-align:center;	
            }
            </style>
            <!-- Number of rows -->
            <div class="divnum_rows">
            <span class="paginationtextfield">Number of rows:</span>&nbsp;
                <?php
                $numrows_arr = array("5","10","25","50","100","250");
                foreach($numrows_arr as $nrow){
					$active_class = "";
                    if(isset($_POST['num_rows']) && $_POST['num_rows'] == $nrow){
                       $active_class = "active";
                    }
					?>
                    <button name="num_rows" class="btn-page-navi <?=$active_class?>" type="submit" 
                    value="<?=$nrow?>"><?=$nrow?></button>
                    <?php
                }
                ?>
                
            </div>
        </div>
    </form>




ninenik 03-02-2020
 ความคิดเห็นที่ 2
ขอบคุณครับ


Antinew007 03-02-2020 17:03
 ความคิดเห็นที่ 3
พี่ครับ ตอนนี้ติดปัญหาตรงที่เมื่อ กดเลือกจำนวนที่ต้องการให้เเสดง เช่น เลือก 10 ในหน้านั้นก็จะเเสดง จำนวน 10 รายการเเล้ว เเต่เมื่อผมกด next Previous มันจะกลับไปเเสดง ค่าเดิม คือค่าเริ่มต้น 5 ครับ ตรงนี้ ต้องเเก้ยังไงครับ รบกวนอีกครั้งนะครับ


Antinew007 03-02-2020 17:31
 ความคิดเห็นที่ 4
ถ้าง่ายสุด ก็เพิ่ม input hidden ที่ชื่อ เหมือนปุ่มว่า num_rows เข้าไป
 
        <input type="hidden" name="num_rows" value="<?php echo $rowperpage; ?>">
        <input type="hidden" name="row" value="<?php echo $row; ?>">
        <input type="hidden" name="allcount" value="<?php echo $allcount; ?>">
        <input type="submit" class="button" name="but_prev" value="Previous">
        <input type="submit" class="button" name="but_next" value="Next">
 
ให้เข้าใจเสมอว่า ปุ่ม input กับปุ่ม button ค่าจะถูกไป เมื่อคลิก ถ้าไม่คลิก จะไม่มีตัวแปร และไม่มีค่าถูกส่งไป 
อ่านเนื้อหานี้เป็นความรู้เพิ่มเติม http://niik.in/que_2933_6542
 
    ก่อนแก้ปัญหา ตัวแปร $rowperpage ถูกกำหนดจากค่าเริ่มต้นเป็น 5 หรือจากค่าของ $_POST['num_rows'] ถ้ามีการกดปุ่ม
นั่นคือทุกครั้งที่เรากดที่ปุ่ม แบ่งจำนวนที่จะแสดง ก็จะได้ค่าที่ถูกต้อง แต่พอเราไม่ได้กดที่ปุ่ม <button name="num_rows"> 
เช่น กรณีกดปุ่ม  but_prev หรือ but_next แทน ค่าของตัวแปร $rowperpage จึงเป็นค่าเริ่มต้นเสมอ คือ 5 เพราะค่าของ 
$_POST['num_rows'] ไม่ถูกส่งมาด้วย 
    พอเราแก้ปัญหาโดยเพิ่ม input hidden ที่ชื่อ num_rows ที่เป็นชื่อเดียวกับปุ่ม และให้มีค่าเท่ากับค่าที่ส่งมาล่าสุดหรือก็คือค่า
ของตัวแปร $rowperpage นั่นคือ ถ้ากดปุ่ม but_prev หรือ but_next ค่า num_rows จะใช้ของ input hidden ซี่งเป็นค่าที่จะถูกส่งไปใน
ฟอร์มเสมอ แต่ถ้ากดที่ปุ่ม num_rows กรณีนี้ จะเป็นว่า เราส่งทั้งค่า hidden และ ค่าจาก button หรือก็คือมีค่าจาก $_POST['num_rows']
สองค่าถูกส่งไป แต่จริงแล้วค่าที่จะถูกใช้งานจะเป็นค่าตัวหลัง ที่เป็นค่าจากปุ่มนั่นเอง ตามเงื่อนไขที่ว่า ถ้าชื่อเหมือนกัน จะใช้ตัวสุดท้าย
อ่านเนื้อหานี้เป็นความรู้เพิ่มเติม http://niik.in/que_2933_6542
 
    จริงๆ เราสามารถใช้วิธีการส่งค่าที่อาจจะใช้งาน ได้หลายแบบ เช่น เป็นตัวแปร SESSION หรือส่งแบบ GET ไปใน URL 
ก็คงต้องไปทำความเข้าใจเพิ่มเติม 


ninenik 03-02-2020
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ