ด้วยสํานึกในพระมหากรุณาธิคุณสมเด็จพระนางเจ้าสิริกิติ์เป็นล้นพ้นอันหาที่สุดมิได้
ด้วยสํานึกในพระมหากรุณาธิคุณสมเด็จพระนางเจ้าสิริกิติ์เป็นล้นพ้นอันหาที่สุดมิได้


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

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

ปัจจุบัน นักพัฒนาสามารถ ใช้ ChatGPT | Gemini | Claude | Perplexity | Deepseek ช่วยในการแก้ไขปัญหาต่างๆ ในการเขียนโปรแกรม หรือหาข้อมูลเพิ่มเติมได้ง่ายและสะดวก แนะนำให้ทุกคนใช้งานเพื่อพัฒนาศักยภาพของตัวเอง

ติดปัญาหาเกี่ยวกับการ 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

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

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


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • CAPTCHA Image
    Play CAPTCHA Audio
    Refresh Image


    ( หรือ เข้าใช้งานผ่าน 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) ขอบคุณครับ