สอบถามเรื่อง แบ่งหน้าหน่อยคะ

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

สอบถามเรื่อง แบ่งหน้าหน่อยคะ
เนื่องจากได้ทดลองทำแบ่งหน้าจาก
https://www.ninenik.com/แบ่งหน้า_ด้วย_php_เพิ่ม_หัว_ท้าย_ด้วย_thead_และ_tfoot_อย่างง่าย-468.html
แล้ว error ที่ตัว chk_page ไม่ทราบว่าต้องแก้ยังไงหรอคะ
รบกวนด้วยนะคะ


Kkkk 118.173.144.xxx 03-10-2016 21:09:57

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

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


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


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

 ความคิดเห็นที่ 1
 error ว่า

หรือลองดูตัวอย่างอื่นๆดู เป็นแนวทาง

https://www.ninenik.com/google_search.php?cx=partner-pub-7717395067782467:ktjcwvnnoei&cof=FORID:11&ie=utf-8&q=แบ่งหน้า&sa=


ninenik 1.46.172.xxx 03-10-2016
 ความคิดเห็นที่ 2
Undefined variable: chk_page คะ


kkkk 118.173.150.xxx 03-10-2016 21:38
 ความคิดเห็นที่ 3
  ใน php เวอร์ชั่นใหม่ๆ ส่วนใหญ่จะมีการตรวจสอบค่าตัวแปรเสมอ ดังนั้นค่าไหน ถ้าไม่มีการกำหนดมาก่อน จะมีการแจ้ง
เตือนในลักษณะดังกล้าวคือ undefined variable: 
แนวทาง ให้กำหนดค่าตัวแปรไว้ด้านบนก่อนเรียกใช้ เช่น

<?php
$chk_page=(isset($chk_page))?$chk_page:NULL;
......
....



ถ้าใช้งานในรูปแบบ mysqli ใด้ดูตัวอย่างจากหน้านี้แทน ดูด้านล่างสุด 
แนวทาง การค้นหาจาก หลายรูปแบบ และแบ่งหน้า อย่างง่าย 
https://www.ninenik.com/content.php?arti_id=573 via @ninenik

มีไฟล์เกี่ยวข้องไฟล์ dbconnect.php
<?php
$mysqli = new mysqli("localhost", "root","","test");
/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %sn", mysqli_connect_error());
    exit();
}
if(!$mysqli->set_charset("utf8")) {
    printf("Error loading character set utf8: %sn", $mysqli->error);
    exit();
}


ไฟล์ func_page_navi.php
<?php
// ฟังก์ชั่นสำหรับการแบ่งหน้า NEW MODIFY
function page_navi($before_p,$plus_p,$total,$total_p,$chk_page){      
    global $urlquery_str;   
    $pPrev=$chk_page-1;   
    $pPrev=($pPrev>=0)?$pPrev:0;   
    $pNext=$chk_page+1;   
    $pNext=($pNext>=$total_p)?$total_p-1:$pNext;        
    $lt_page=$total_p-4;   
    if($chk_page>0){     
        echo "<a  href='$urlquery_str"."pages=".intval($pPrev+1)."' class='naviPN'>Prev</a>";   
    }   
    if($total_p>=11){   
        if($chk_page>=4){   
            echo "<a $nClass href='$urlquery_str"."pages=1'>1</a><a class='SpaceC'>. . .</a>";      
        }   
        if($chk_page<4){   
            for($i=0;$i<$total_p;$i++){     
                $nClass=($chk_page==$i)?"class='selectPage'":"";   
                if($i<=4){   
                echo "<a $nClass href='$urlquery_str"."pages=".intval($i+1)."'>".intval($i+1)."</a> ";      
                }   
                if($i==$total_p-1 ){    
                echo "<a class='SpaceC'>. . .</a><a $nClass href='$urlquery_str"."pages=".intval($i+1)."'>".intval($i+1)."</a> ";      
                }          
            }   
        }   
        if($chk_page>=4 && $chk_page<$lt_page){   
            $st_page=$chk_page-3;   
            for($i=1;$i<=5;$i++){   
                $nClass=($chk_page==($st_page+$i))?"class='selectPage'":"";   
                echo "<a $nClass href='$urlquery_str"."pages=".intval($st_page+$i+1)."'>".intval($st_page+$i+1)."</a> ";         
            }   
            for($i=0;$i<$total_p;$i++){     
                if($i==$total_p-1 ){    
                $nClass=($chk_page==$i)?"class='selectPage'":"";   
                echo "<a class='SpaceC'>. . .</a><a $nClass href='$urlquery_str"."pages=".intval($i+1)."'>".intval($i+1)."</a> ";      
                }          
            }                                      
        }      
        if($chk_page>=$lt_page){   
            for($i=0;$i<=4;$i++){   
                $nClass=($chk_page==($lt_page+$i-1))?"class='selectPage'":"";   
                echo "<a $nClass href='$urlquery_str"."pages=".intval($lt_page+$i)."'>".intval($lt_page+$i)."</a> ";      
            }   
        }           
    }else{   
        for($i=0;$i<$total_p;$i++){     
            $nClass=($chk_page==$i)?"class='selectPage'":"";   
            echo "<a href='$urlquery_str"."pages=".intval($i+1)."' $nClass  >".intval($i+1)."</a> ";      
        }          
    }      
    if($chk_page<$total_p-1){   
        echo "<a href='$urlquery_str"."pages=".intval($pNext+1)."'  class='naviPN'>Next</a>";   
    }   
}
?>


ไฟล์ page_navi.css
/* css แบ่งหน้า */
.browse_page{   
    clear:both;   
    margin-left:12px;   
    height:25px;   
    margin-top:5px;   
    display:block;   
}   
.browse_page a,.browse_page a:hover{   
    display:block;   
	width: 2%;
    font-size:14px;   
    float:left;   
    margin:0px 5px;
    border:1px solid #CCCCCC;   
    background-color:#F4F4F4;   
    color:#333333;   
    text-align:center;   
    line-height:22px;   
    font-weight:bold;   
    text-decoration:none;   
	-webkit-border-radius: 5px;
	-moz-border-radius: 5px;
	border-radius: 5px;	
}   
.browse_page a:hover{   
	border:1px solid #CCCCCC;
	background-color:#999999;
    color:#FFFFFF;   
}   
.browse_page a.selectPage{   
    display:block;   
    width:45px;   
    font-size:14px;   
    float:left;   
    margin-right:2px;   
	border:1px solid #CCCCCC;
	background-color:#999999;
    color:#FFFFFF;   
    text-align:center;   
    line-height:22px;    
    font-weight:bold;   
	-webkit-border-radius: 5px;
	-moz-border-radius: 5px;
	border-radius: 5px;	
}   
.browse_page a.SpaceC{   
    display:block;   
    width:45px;   
    font-size:14px;   
    float:left;   
    margin-right:2px;   
    border:0px dotted #0A85CB;   
    background-color:#FFFFFF;   
    color:#333333;   
    text-align:center;   
    line-height:22px;   
    font-weight:bold;   
	-webkit-border-radius: 5px;
	-moz-border-radius: 5px;
	border-radius: 5px;	
}   
.browse_page a.naviPN{   
    width:50px;   
    font-size:12px;   
    display:block;   
/*    width:25px;   */
    float:left;   
	border:1px solid #CCCCCC;
	background-color:#999999;
    color:#FFFFFF;   
    text-align:center;   
    line-height:22px;   
    font-weight:bold;      
	-webkit-border-radius: 5px;
	-moz-border-radius: 5px;
	border-radius: 5px;	
}  
/* จบ css แบ่งหน้า */



และไฟล์หลัก ที่มีการกำหนดตัวแปรด้านบน ดังนี้
<?php
// เชื่อมต่อกับฐานข้อมูล  
require_once("dbconnect.php");
include_once("func_page_navi.php");  // เรียกใช้งานฟังก์ชั่นแบ่งหน้า
$_GET['myradio']=(isset($_GET['myradio']))?$_GET['myradio']:NULL;
$_GET['myselect']=(isset($_GET['myselect']))?$_GET['myradio']:NULL;
$_GET['mycheckbox']=(isset($_GET['mycheckbox']))?$_GET['myradio']:NULL;
$_GET['mycheckbox2']=(isset($_GET['mycheckbox2']))?$_GET['myradio']:NULL;
$chk_page=(isset($chk_page))?$chk_page:NULL;
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Form complex search</title>
    <link rel="stylesheet" href="page_navi.css">
</head>
<body>
   
<div style="margin:auto:width:80%;">
 
<br><br>
<div style="margin:auto;text-align:left;width:700px;">
<!--ส่วนสร้างฟอร์ม สำหรับค้นหา -->
<form id="form_search" name="form_search" method="get" action="">

เลือกอย่างหนึ่งอย่างใด หรือไม่เลือกก็ได้ ||
<input type="radio" name="myradio" id="myradio1" value="จ" <?=($_GET['myradio']=="จ")?" checked":""?>> มี "จ"
&nbsp;&nbsp;
<input type="radio" name="myradio" id="myradio2" value="ม" <?=($_GET['myradio']=="ม")?" checked":""?>> มี "ม"
&nbsp;&nbsp;
<input type="radio" name="myradio" id="myradio3" value="ส" <?=($_GET['myradio']=="ส")?" checked":""?>> มี "ส"
 <br><br>  
 เลือกอย่างหนึ่งอย่างใด หรือไม่เลือกก็ได้ ||
<select name="myselect" id="myselect">
    <option value="">เลื่อกเงื่่อนไข</option>
    <option value="ก" <?=($_GET['myselect']=="ก")?" selected":""?> >ขึ้นต้นด้วย ก</option>
    <option value="อุ" <?=($_GET['myselect']=="อุ")?" selected":""?>>ขึ้นต้นด้วย อุ</option>
</select>
 <br><br>  
 พิมพ์บางคำ บางตัว หรือไม่พิมพ์ก็ได้ ||
  <input type="text" name="keyword" id="keyword" value="<?=$_GET['keyword']?>" />
 <br><br>
  เลือกอย่างหนึ่งอย่างใด หรือเลือกทั้งสอง หรือไม่เลือกก็ได้ ||
 <input type="checkbox" name="mycheckbox" id="mycheckbox" value="นี" <?=($_GET['mycheckbox']=="นี")?" checked":""?> > ลงท้ายด้วย "นี"
 &nbsp;&nbsp;
 <input type="checkbox" name="mycheckbox2" id="mycheckbox2" value="คร" <?=($_GET['mycheckbox2']=="คร")?" checked":""?>> ลงท้ายด้วย "คร"
  <br><br>
  <input type="submit" name="button" id="button" value="ค้นหา" />
&nbsp;&nbsp;
<input type="button" name="btn_reset" value="Reset" onclick="window.location='form_complex_search.php'">
</form>


<br />

<table width="100%" border="0" align="center" cellpadding="0" cellspacing="00">
<tbody>
  <tr>
    <td align="left" >
 <br />

    <table width="100%" border="1" cellspacing="0" cellpadding="2" style="border-collapse:collapse;">
    	<tr>
        <td width="50" height="20" align="center" bgcolor="#F2F2F2">#</td>
        <td height="20" bgcolor="#F2F2F2">&nbsp; Topic</td>
        </tr>
<?php
        $i=1;
        $sql="SELECT * FROM  tbl_provinces WHERE 1 ";

        // เงื่อนไขสำหรับ radio
		if(isset($_GET['myradio']) && $_GET['myradio']!=""){
			// ต่อคำสั่ง sql 
			$sql.=" AND province_name LIKE '%".trim($_GET['myradio'])."%' ";	
		}

		// เงื่อนไขสำหรับ input text
		if(isset($_GET['keyword']) && $_GET['keyword']!=""){
			// ต่อคำสั่ง sql 
			$sql.=" AND province_name LIKE '%".trim($_GET['keyword'])."%' ";	
		}

    // เงื่อนไขสำหรับ select
		if(isset($_GET['myselect']) && $_GET['myselect']!=""){
			// ต่อคำสั่ง sql 
			$sql.=" AND province_name LIKE '".trim($_GET['myselect'])."%' ";	
		}

        // เงื่อนไขสำหรับ checkbox
		if((isset($_GET['mycheckbox']) && $_GET['mycheckbox']!="") || (isset($_GET['mycheckbox2']) && $_GET['mycheckbox2']!="")){
			// ต่อคำสั่ง sql 
            if($_GET['mycheckbox']!="" && $_GET['mycheckbox2']!=""){
			     $sql.=" AND (province_name LIKE '%".trim($_GET['mycheckbox'])."' OR province_name LIKE '%".trim($_GET['mycheckbox2'])."' )";	
            }elseif($_GET['mycheckbox']!=""){
			     $sql.=" AND province_name LIKE '%".trim($_GET['mycheckbox'])."' ";	                
            }elseif($_GET['mycheckbox2']!=""){
			     $sql.=" AND province_name LIKE '%".trim($_GET['mycheckbox2'])."' ";	                
            }else{
                
            }
		}
 //       echo $sql;
        $result=$mysqli->query($sql);
		
		$total=$result->num_rows;
		$e_page=10; // กำหนด จำนวนรายการที่แสดงในแต่ละหน้า   
		if(!isset($_GET['pages'])){   
			$_GET['pages']=0;   
		}else{   
			$_GET['pages']=$_GET['pages']-1;
			if($_GET['pages']<0){
				$_GET['pages']=0;	
			}
			$chk_page=$_GET['pages'];     
			$_GET['pages']=$_GET['pages']*$e_page;   
		}   
		$sql.=" ORDER BY province_id DESC  LIMIT ".$_GET['pages'].",$e_page";
			
		$result=$mysqli->query($sql);
		if($result && $result->num_rows>=1){   
			$plus_p=($chk_page*$e_page)+$result->num_rows;   
		}else{   
			$plus_p=($chk_page*$e_page);       
		}   
		$total_p=ceil($total/$e_page);   
		$before_p=($chk_page*$e_page)+1;  
		/// END PAGE NAVI ZONE			
		
        while($row=$result->fetch_array()){
?>  
  <tr>
    <td width="60" height="20" align="center"><?=(($e_page*$chk_page)+$i)?></td>
    <td height="20">&nbsp;<?=$row['province_name']?></td>
  </tr>
<?php $i++; } ?>     
    </table>
    
    <br />

    </td>
  </tr>
</tbody>


<thead>
  <tr>
    <td align="left">
    
 
 <div style="margin:auto;width:100%;">
  <?php if($total>10){ ?>                  
  <div class="browse_page">   
    <?php      
    if(count($_GET)<=1){
        $urlquery_str="?";
    }else{
		$para_get="";
		foreach($_GET as $key=>$value){
			if($key!="pages"){
				$para_get.=$key."=".$value."&";
			}
		}
        $urlquery_str="?$para_get";
    }
    // เรียกใช้งานฟังก์ชั่น สำหรับแสดงการแบ่งหน้า      
    page_navi($before_p,$plus_p,$total,$total_p,$chk_page);       
    ?>
    </div>   
    <?php } ?>  
</div>    
    
    
    </td>
  </tr>
  <tr>
  <td height="30" align="left">&nbsp;</td>
  </tr>
</thead>  

<tfoot>
  <tr>
  <td height="30">&nbsp;</td>
  </tr>
  <tr>
    <td align="left">

 <div style="margin:auto;width:100%;">
     <?php if($total>10){ ?>                  
    <div class="browse_page">   
    <?php      
    // เรียกใช้งานฟังก์ชั่น สำหรับแสดงการแบ่งหน้า      
    page_navi($before_p,$plus_p,$total,$total_p,$chk_page);       
    ?>
    </div>   
    <?php } ?>     
</div>  
    
    </td>
  </tr>
</tfoot>    
</table>

</div>       
    
</div>   
    
</body>
</html>





ninenik 1.46.172.xxx 03-10-2016
 ความคิดเห็นที่ 4
ขอบคุณนะคะ
ตอนนี้มาติดตรงตัว $nClass แล้วคะ


kkkk 118.173.147.xxx 03-10-2016 23:16
 ความคิดเห็นที่ 5
error เหมือนกันเลยคะ
ต้องแก้ยังไงหรอคะ
ลองใส่โค้ดเพิ่มเหมือนตัวแรกแล้ว ก็ไม่ได้คะ
รบกวนด้วยนะคะ


kkkk 1.0.162.xxx 05-10-2016 01:39
 ความคิดเห็นที่ 6
ไฟล์ func_page_navi.php
บรรทัดที่ 15 ให้ตัดตัวแปร $nClass ออกได้เลย เพราะไม่ได้ใช้งาน
 
จาก
 echo "<a $nClass href='$urlquery_str"."pages=1'>1</a><a class='SpaceC'>. . .</a>";     
เปลี่ยนเปฺ็น
 echo "<a href='$urlquery_str"."pages=1'>1</a><a class='SpaceC'>. . .</a>";     


ninenik 180.183.9.xxx 05-10-2016
 ความคิดเห็นที่ 7
ขอบคุณนะคะ
รบกวนอีกสักเรื่องนะคะ อิอิ
พอดีว่าต้องการให้ข้อมูลที่โชว์ โชว์เฉพาะไอดีของหมวดที่ส่งมาอ่าคะ ลองกำหนดตรง where ดูแล้ว แต่เลขหน้าไม่ขึ้นคะ มันขึ้นแค่หน้าเดียว

รบกวนด้วยนะคะ


kkkk 118.173.147.xxx 05-10-2016 16:42
 ความคิดเห็นที่ 8
 น่าจะต้องเช็คที่โค้ด ว่าส่งค่ามาถูกไหม สามารถ echo คำสั่ง sql เพื่อตรวจสอบดู


ninenik 180.183.104.xxx 05-10-2016
 ความคิดเห็นที่ 9
พอจะมีตัวอย่างมั้ยคะ


kkkk 118.173.147.xxx 05-10-2016 17:19
 ความคิดเห็นที่ 10
  ตัวอย่างตามโค้ดด้านล่างเลยน่ะ ที่ข้อมูลไม่ขึ้นเพราะ กำหนดจำนวน การแสดงหรือเปล่า เพราะตามโค้ดกำหนดว่า มากกว่า 10 ถึงจะแสดง

  <?php if($total>10){ ?>                    
  <div class="browse_page">     
    <?php        
    if(count($_GET)<=1){  
        $urlquery_str="?";  
    }else{  
        $para_get="";  
        foreach($_GET as $key=>$value){  
            if($key!="pages"){  
                $para_get.=$key."=".$value."&";  
            }  
        }  
        $urlquery_str="?$para_get";  
    }  
    // เรียกใช้งานฟังก์ชั่น สำหรับแสดงการแบ่งหน้า        
    page_navi($before_p,$plus_p,$total,$total_p,$chk_page);         
    ?>  
    </div>     
    <?php } ?>


ลองเปลี่ยนป็นมาก 1 แทนก็ได้


ninenik 180.183.104.xxx 05-10-2016
1 2 Next






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