ติดปัญาหาเกี่ยวกับการ active pagination ครับ เมื่อทำการกด เลขหน้า หรือตัว next

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ติดปัญาหาเกี่ยวกับการ active pagination ครับ เมื่อทำการกด เลขหน้า หรือตัว next

ติดปัญาหาเกี่ยวกับการ active pagination ครับ เมื่อทำการกด เลขหน้า หรือตัว next
ตามหัวข้อเลยครับ คือเมื่อกดตัว setpage มันจะขึ้นตัว active ขึ้นมาครับ เเต่เมื่อทำการกด next หรือ เลข page อื่นๆ ตัว active มันจะหาย ต้องเเก้ไขอย่างไรครับ รบกวนครับ 

<?php
if ($no == "") {
    $no = 1;
}
list($number2) = mysql_fetch_row(mysql_query($select2));

$plist = $setpage;
$pgno = $number2 / $plist;
if ($number2 % $plist != 0) {
    $pgno = $pgno + 1;
}
$pgno = sprintf("%d", $pgno);
$start = ($plist * $no) - $plist;
$limit = "limit $start , $plist ";
$result = mysql_query("$select $limit");

while ($r = mysql_fetch_array($result)) {

    $c_large = get_cover($r['idwp'], 'large');
    ?>

    <?php
    $i++;
}
?>

<form method="post" action="" id="form">
    <div id="div_pagination">
        <input type="hidden" name="setpage" value="<?php echo $plist; ?>">
        <input type="hidden" name="start" value="<?php echo $start; ?>">


        <!-- Number of rows -->
        <div class="divnum_rows">
            <span class="paginationtextfield">เเสดง</span>&nbsp;
            <?php
            $numrows_arr = array("10", "20", "30");
            foreach ($numrows_arr as $nrow) {
                $active_class = "";
                if (isset($_POST['setpage']) && $_POST['setpage'] == $nrow) {
                    $active_class = "active";
                }
                ?>
                <button name="setpage" class="btn-page-navi <?= $active_class ?>" type="submit"
                        value="<?= $nrow ?>"><?= $nrow ?></button>
                        <?php
                    }
                    ?>

        </div>
    </div>
</form>

<div class="row "> 
    <div class="col-md-12 text-center pb-40"> 
        <?php show_paging($number2, $setpage, $no); ?>
    </div>
</div>


ภาพเมื่อกด page


Antinew007 05-02-2020 10:27:22

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

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


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


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

 ความคิดเห็นที่ 1
                if (isset($_POST['setpage']) && $_POST['setpage'] == $nrow) {
                    $active_class = "active";
                }
 
ทำความเข้าใจว่า active เกิดจากอะไร ถ้าตามโค้ดคือ เมื่อมีการส่งค่าตัวแปร $_POST['setpage'] 
จากฟอร์ม กรณีเลือกจำนวนที่ต้องการแสดง แต่พอเราไม่ได้ทำการเลือกจำนวนที่จะแสดงในฟอร์ม
ดังนั้นค่า $_POST['setpage'] จึงไม่ถูกส่งค่ามาด้วย นั่นคือตอนเรากดเลขหน้า ไม่ใช่การ submit 
ฟอร์ม ไม่มีผลกับตัวแปร $_POST['setpage']
    มาดูว่า ถ้าไม่ส่งจากฟอร์ม เราจะส่งค่าจำนวนที่แสดงไปอย่างไร ซึ่งมีหลายวิธี เช่นใช้ session กรณีไม่ได้
ส่งค่าจาก $_POST['setpage'] และอีกวิธี ส่งค่าไปใน URL กรณีคลิกที่ลิ้งค์ 
 
สมมติลิงค์แต่ละหน้าเป็น
 
a.php?page=1
a.php?page=2
a.php?page=3
 
เราก็ปรับเป็น 
 
a.php?page=1&setpage=10
a.php?page=2&setpage=10
a.php?page=3&setpage=10
 
เลข 10 คือจำนวนที่ถูกส่งค่า เวลาประยุกต์ก็ใช้เป็นตัวแปร ของค่าขณะนั้น เช่น a.php?page=3&setpage=ตัวแปร
 
ตัวแปรที่ส่งไปใน url เรียกว่าเป็น $_GET จะได้เป็น $_GET['setpage']
 
ในขั้นตอนการกำหนดค่า สมมติ
 
        $plist = 10;
        if(isset($_POST['setpage'])){ // กรณีมีการส่งค่าจากฟอร์ม
            $plist = $_POST['setpage'];
        }
 
จะเห็นว่าถ้าเราไม่ส่งค่าจากฟอร์ม $plist จะเท่ากับ 10 เสมอ ตัวกำหนด active ก็จะไม่ทำงาน ดังนั้น ถ้าเราส่งค่าทั้งจากฟอร์ม
และจาก url ด้วยก็จะแก้ปัญหาได้ โดยเพิ่มเงื่อนไขเป็น
 
        $plist = 10;
        if(isset($_POST['setpage'])){ // กรณีมีการส่งค่าจากฟอร์ม
            $plist = $_POST['setpage'];
        }elseif(isset($_GET['setpage'])){ // ถ้ามีจาก url 
            $plist = $_GET['setpage'];
        }
 
 
 
 
หรืออีกวิธีที่ง่าย ก็คือใช้ session ไม่ต้องส่งตัวแปรใน url เหมือนวิธีแรก
ด้านบนสุดของไฟล์กำหนด session_start()  http://niik.in/que_2398_101074
 
<?php
session_start();
?>
 
และในขั้นตอนกำหนดค่าก็ใช้เป็น
 
        $plist = 10;
        if(isset($_POST['setpage'])){ // กรณีมีการส่งค่าจากฟอร์ม
            $_SESSION['ses_setpage'] = $_POST['setpage'];
            $plist = $_POST['setpage'];
        }
        if(isset($_SESSION['ses_setpage'])){ // ถ้ามีค่า session 
            $plist = $_SESSION['ses_setpage'];
        }


ninenik 05-02-2020






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