|
|
|
แนะนำการแบ่งหน้าแล้ว จำกัดการโชว์หน้า สัก 6 แล้วมีปุ่ม Next ให้กดไปอีก 6 หน้าต่อไป แนะนำทีครับ |
|
|
|
|
|
|
|
มีแบบ ไม่ใช้ Class หรือป่าวครับ?
ถ้าไม่มีไม่เป็นไรครับ
ขอบคุณครับ
|
|
|
|
|
Date :
2011-05-16 10:56:08 |
By :
ALTELMA |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าไม่อยากใช้ class ก็ถอดออก แล้วก็เอา code มาว่างแทนครับ ปรับนิด ๆ หน่อย ก็ได้แล้วครับ
|
|
|
|
|
Date :
2011-05-16 11:23:47 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองปรับแล้ว ไม่ได้ตามที่คิดเลยครับ พอดียัง งงๆเรื่อง คลาสครับ ไม่เคยเขียนมาก่อน...
แบบที่แนะนำมา ดีครับ แต่ติดตรง เวลากด next แล้ว มันเลื่อนๆไปน่ะครับ
ที่คิดไว้อยากได้แบบ พอกด next แล้ว มันยกก้อนใหม่มาเลย เช่น
เริ่มมา มี 1-6 next พอกด next ต่อไปเป็น 7-12 next แบบนี้แหละครับ มันจะยากกว่าแบบที่มีหรือเปล่าครับ
ผมมองแบบเผินน่าจะง่ายกว่า ยังไงจะขอลองทำดูก่อนละกันครับ
ขอบคุณครับ
แก้ไขหน่อยคือ ผมเขียนการแบ่งหน้ามาแบบนี้ครับ
Code (PHP)
<?
$rs_result2 = mysql_query($sql2);
$count = mysql_fetch_row($rs_result2);
$total_records = $count[0];
$total_pages = ceil($total_records / 14);
if($total_pages <= 6){
if($total_records >= "14") {
for ($i=1; $i<=$total_pages; $i++) {
if($_GET['page']==$i) {
echo "<td><a href='product_search.php?page=".$i."&pro_type=".$pro_type."&text_search=".$text_search."&price_search=".$price_search."' class ='select'>".$i."</a> </td>"; //ลิ้งค์ แบ่งหน้า เงื่อนไขที่ 1
}else{
echo "<td><a href='product_search.php?page=".$i."&pro_type=".$pro_type."&text_search=".$text_search."&price_search=".$price_search."' class =''>".$i."</a> </td>"; //ลิ้งค์ แบ่งหน้า เงื่อนไขที่ 2
}
}
} else{
$split_pages = ceil($total_pages/6);
if($total_records >= "14"){
for($i=1; $i<=$split_pages; $i++){
if($_GET['page']==$i) {
echo "<td><a href='product_search.php?page=".$i."&pro_type=".$pro_type."&text_search=".$text_search."&price_search=".$price_search."' class ='select'>".$i."</a> </td>"; //ลิ้งค์ แบ่งหน้า เงื่อนไขที่ 1
}else{
echo "<td><a href='product_search.php?page=".$i."&pro_type=".$pro_type."&text_search=".$text_search."&price_search=".$price_search."' class =''>".$i."</a> </td>"; //ลิ้งค์ แบ่งหน้า เงื่อนไขที่ 2
}
}
}
echo "<td><a href='product_search.php?page=".$i."'>next</a></td>";
}
}
ปรมาณนี้คือ ได้แค่ 1-6 next ต่อไม่ได้ละครับ ไม่มีแนวเลยจริงๆ
|
ประวัติการแก้ไข 2011-05-16 11:47:34
|
|
|
|
Date :
2011-05-16 11:42:23 |
By :
ALTELMA |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ค่อย ๆ ปรับแก้ไขทีล่ะจุด ฝึกหัด logic การคิดด้วยครับ ไม่ยากครับ
|
|
|
|
|
Date :
2011-05-16 11:51:49 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมอ่านเจอในบทความไหนแล้วจำไม่ได้เลยเอาโค๊ดที่ทำมาให้ดูครับ
Code (PHP)
<?
include("ชื่อไฟล์ connect ฐานข้อมูล");
$strSQL = "SELECT * FROM ชื่อตาราง ";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
$Num_Rows = mysql_num_rows($objQuery);
$Per_Page = 12; // Per Page
$Page = $_GET["Page"];
if(!$_GET["Page"])
{
$Page=1;
}
$Prev_Page = $Page-1;
$Next_Page = $Page+1;
$Page_Start = (($Per_Page*$Page)-$Per_Page);
if($Num_Rows<=$Per_Page)
{
$Num_Pages =1;
}
else if(($Num_Rows % $Per_Page)==0)
{
$Num_Pages =($Num_Rows/$Per_Page) ;
}
else
{
$Num_Pages =($Num_Rows/$Per_Page)+1;
$Num_Pages = (int)$Num_Pages;
}
$strSQL .=" order by DATESTART DESC LIMIT $Page_Start , $Per_Page"; //เรียงจากมากไปหาน้อย
$objQuery = mysql_query($strSQL);
?>
แล้วก็สร้างรูปแบบตารางที่จะแสดงผล
ลองดูครับ มือใหม่นะครับ ผิดพลาดประการใด ขออภัยด้วย
|
|
|
|
|
Date :
2011-05-16 15:00:49 |
By :
comoflife |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากครับ คือตอนสร้างหน้า ได้แล้วครับเหลือตอนแบ่งให้มัยนโชว์น้อยๆ แบบมีหน้าทั้งหมด 36 หน้า แต่เราจะโชว์มาทีละ 6 หน้าค่อยๆเลื่อนไปน่ะครับ มีคนแนะให้แล้วแต่ผม ไม่ถนัดใช้คลาส อยากลองเขียนเอง ใครมีแนวอื่น ช่วยแนะนำทครับ ติดตรงที่พอกดหน้าที่ 6 แล้วจะเปลี่ยนไป เพิ่มเป็น 6-11 น่ะครับ ปุ่ม ถัดไป กับ ย้อนกลับทีละ หน้าได้แล้วครับ
ขอบคุณครับ
|
|
|
|
|
Date :
2011-05-16 16:42:52 |
By :
ALTELMA |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รอแป๊บครับ เดียวเขียนให้ครับ
|
|
|
|
|
Date :
2011-05-16 16:44:36 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อันที่จริงไม่ยากเลยครับ ใช้ if เฉย ๆ ก็ได้แล้วครับ
Code (PHP)
if($Prev_Page)
{
echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$Prev_Page'><< Back</a> ";
}
$intRankPage = 6;
$LastShowPage = $Page + $intRankPage;
if($LastShowPage > $Num_Pages)
{
$LastShowPage = $Num_Pages;
}
$FirstShowPage = $Page - $intRankPage;
if($FirstShowPage < 1)
{
$FirstShowPage = 1;
}
for($i=$FirstShowPage; $i<=$LastShowPage; $i++){
if($i != $Page)
{
echo "[ <a href='$_SERVER[SCRIPT_NAME]?Page=$i'>$i</a> ]";
}
else
{
echo "<b> $i </b>";
}
}
if($Page!=$Num_Pages)
{
echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page'>Next>></a> ";
}
Code เต็ม ๆ เลยแล้วกันครับ
Code (PHP)
<html>
<head>
<title>ThaiCreate.Com PHP & MySQL Tutorial</title>
</head>
<body>
<?
$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
$objDB = mysql_select_db("mydatabase");
$strSQL = "SELECT * FROM customer ";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
$Num_Rows = mysql_num_rows($objQuery);
$Per_Page = 2; // Per Page
$Page = $_GET["Page"];
if(!$_GET["Page"])
{
$Page=1;
}
$Prev_Page = $Page-1;
$Next_Page = $Page+1;
$Page_Start = (($Per_Page*$Page)-$Per_Page);
if($Num_Rows<=$Per_Page)
{
$Num_Pages =1;
}
else if(($Num_Rows % $Per_Page)==0)
{
$Num_Pages =($Num_Rows/$Per_Page) ;
}
else
{
$Num_Pages =($Num_Rows/$Per_Page)+1;
$Num_Pages = (int)$Num_Pages;
}
$strSQL .=" order by CustomerID ASC LIMIT $Page_Start , $Per_Page";
$objQuery = mysql_query($strSQL);
?>
<table width="600" border="1">
<tr>
<th width="91"> <div align="center">CustomerID </div></th>
<th width="98"> <div align="center">Name </div></th>
<th width="198"> <div align="center">Email </div></th>
<th width="97"> <div align="center">CountryCode </div></th>
<th width="59"> <div align="center">Budget </div></th>
<th width="71"> <div align="center">Used </div></th>
</tr>
<?
while($objResult = mysql_fetch_array($objQuery))
{
?>
<tr>
<td><div align="center"><?=$objResult["CustomerID"];?></div></td>
<td><?=$objResult["Name"];?></td>
<td><?=$objResult["Email"];?></td>
<td><div align="center"><?=$objResult["CountryCode"];?></div></td>
<td align="right"><?=$objResult["Budget"];?></td>
<td align="right"><?=$objResult["Used"];?></td>
</tr>
<?
}
?>
</table>
<br>
Total <?= $Num_Rows;?> Record : <?=$Num_Pages;?> Page :
<?
if($Prev_Page)
{
echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$Prev_Page'><< Back</a> ";
}
$intRankPage = 6;
$LastShowPage = $Page + $intRankPage;
if($LastShowPage > $Num_Pages)
{
$LastShowPage = $Num_Pages;
}
$FirstShowPage = $Page - $intRankPage;
if($FirstShowPage < 1)
{
$FirstShowPage = 1;
}
for($i=$FirstShowPage; $i<=$LastShowPage; $i++){
if($i != $Page)
{
echo "[ <a href='$_SERVER[SCRIPT_NAME]?Page=$i'>$i</a> ]";
}
else
{
echo "<b> $i </b>";
}
}
if($Page!=$Num_Pages)
{
echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page'>Next>></a> ";
}
mysql_close($objConnect);
?>
</body>
</html>
Screenshot
|
|
|
|
|
Date :
2011-05-16 16:53:48 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เอ่อ ไม่รู้จะพูดอะไรเลยครับ คงตอบกลับได้แค่ว่า "ขอบคุณครับ"
เอ่อ ลืมบอกไปน่ะครับ ว่าที่แก้ลำบากเพราะ มาทำงานต่อจากเจ้าของเดิม เลย งง โค้ด เค้าด้วย ฮ่าๆ
ขอบคุณมากๆครับ
|
ประวัติการแก้ไข 2011-05-16 16:59:40
|
|
|
|
Date :
2011-05-16 16:58:36 |
By :
ALTELMA |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ฝากเอาไว้ ให้ลอง http://www.okvee.net/2011/04/01/%E0%B9%81%E0%B8%9A%E0%B9%88%E0%B8%87%E0%B8%AB%E0%B8%99%E0%B9%89%E0%B8%B2%E0%B9%81%E0%B8%AA%E0%B8%94%E0%B8%87%E0%B8%9C%E0%B8%A5%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-pagination-class/
ใช้ไม่ยาก แบบมี class เขียนสั้นๆ กำหนดได้มากมาย
Code (PHP)
require(dirname(__FILE__)."/pagination.php");
$sql = "select * from $main_table where 1 order by id asc";
$result = mysql_query($sql);
$total = mysql_num_rows($result);// นับจำนวนทั้งหมดในฐานข้อมูลตามเงื่อนไข sql ข้างบน
##############################
// กำหนดค่า config ให้กับ pagination class
$config['base_url'] = "http://localhost/test/pagination/view1.php?order=";
$config['total_rows'] = $total;// ค่าที่นับได้"ทั้งหมด"จาก sql ด้านบน
$config['per_page'] = 10;
$pagination = new pagination($config);
$start_item = (!isset($_GET['per_page']) ? "0" : intval($_GET['per_page']));
##############################
$sql .= " limit $start_item, " . $config['per_page'];
$result = mysql_query($sql);
//ต่อจากนี้ก็ทำการวนแสดงผลตามปกติ
|
|
|
|
|
Date :
2011-05-16 17:23:46 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|