|
|
|
ใส่โค้ดเพจแบ่งหน้า แล้วทำให้เลขที่แสดงจำนวนข้อมันผิดเพี้ยน สมมติว่าหน้าที่ 1 มี 10 ข้อ จะแสดงหมายเลขข้อ 1-10 ปกติ แต่พอกดไปหน้าที่ 2 แทนที่จะขึ้นเป็นข้อ 11 ดันเริ่มนับ 1 ใหม่รบกวนช่วยชี้แนะทีนะค่ะ |
|
|
|
|
|
|
|
ตัวอย่างรัน หน้า 1
เมื่อกดหน้า 2
อันนี้โค้ดเพจที่ต้องการแบ่งหน้านะค่ะ
<?php include('config_student.php');
include("../inc/paging.inc.php");
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
//อ่านลำดับเพจปัจจุบันจาก query string หากไม่มีแสดงว่าเป็นเพจแรก
$current_page = 1;
if(isset($_GET['page'])) {
$current_page = $_GET['page'];
}
//แสดง 10 แถวต่อหน้า แล้วหาแถวเริ่มต้นของเพจนั้น โดยเรียกฟังก์ชันที่อยู่ใน include file
$rows_per_page = 2;
$start_row = paging_start_row($current_page, $rows_per_page);
$query_ShowEva = "SELECT SQL_CALC_FOUND_ROWS project_name,evaluation_detail.project_id FROM project,evaluation_detail WHERE student_id = ".$_SESSION['student_id']." AND evaluation_detail.project_id = project.project_id AND evaluation_detail.status_evaluation = 'NOT' LIMIT $start_row, $rows_per_page ";
$ShowEva = mysql_query($query_ShowEva, $connproject) or die(mysql_error());
$row_ShowEva = mysql_fetch_assoc($ShowEva);
$totalRows_ShowEva = mysql_num_rows($ShowEva);
//หาจำนวนแถวผลลัพธ์ทั้งหมดที่ตรงตามเงื่อนไข
$found_rows = mysql_query("SELECT FOUND_ROWS();");
$total_rows = mysql_result($found_rows, 0, 0);
//จำนวนหน้าทั้งหมด โดยเรียกฟังก์ชันที่อยู่ใน include file
$total_pages = paging_total_pages($total_rows, $rows_per_page);
?>
<?php $i=1; ?>
<div align="center">
<?php if ($totalRows_ShowEva > 0) { // Show if recordset not empty ?>
<table width="80%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td width="65"><div align="center">ลำดับที่</div></td>
<td width="418"><div align="center">รายการแบบประเมิน</div></td>
<td width="100"><div align="center">ทำรายการ</div></td>
</tr>
<?php do { ?>
<tr>
<td align="center"><?php echo ($i++); ?></td>
<td><?php echo $row_ShowEva['project_name']; ?></td>
<td align="center"><a href="make_eva.php?project_id=<?php echo $row_ShowEva['project_id']; ?>">ทำแบบประเมิน</a></td>
</tr>
<?php } while ($row_ShowEva = mysql_fetch_assoc($ShowEva)); ?>
</table>
<br />
<?php
//ส่วนการแสดงหมายเลขเพจ
echo "<center>หน้า: $current_page / $total_pages<center><br />";
$page_range = 5;
$qry_string = ""; //ในที่นี้ไม่มี query string
//สร้างลิงค์การเชื่อมโยงระหว่างเพจ โดยเรียกฟังก์ชันที่อยู่ใน include file
$page_str = paging_pagenum($current_page, $total_pages, $page_range, $qry_string);
//แสดงลิงค์ที่ได้รับมา
echo "<center>$page_str<center>";
?>
<?php }
// Show if recordset not empty ?>
</div>
และอันนี้ไฟล์ที่ include เข้ามา
paging.inc.php
<?php
function paging_start_row($current_page, $rows_per_page) {
return ($current_page - 1) * $rows_per_page;
}
function paging_stop_row($start_row, $rows_per_page, $total_rows) {
return (($start_row + $rows_per_page) < $total_rows) ? ($start_row + $rows_per_page) : $total_rows;
}
function paging_total_pages($total_rows, $rows_per_page) {
return ceil($total_rows / $rows_per_page);
}
function paging_pagenum($current_page, $total_pages, $page_range, $query_string) {
$page_start = $current_page - $page_range;
$page_end = $current_page + $page_range;
if($page_start < 1) {
$page_end += 1 - $page_start;
$page_start = 1;
}
if($page_end > $total_pages) {
$diff = $page_end - $total_pages;
$page_start -= $diff;
if($page_start < 1) {
$page_start = 1;
}
$page_end = $total_pages;
}
$url = $_SERVER['PHP_SELF'] . "?" . $query_string;
$result = "";
if($current_page > 1) {
$page = $current_page - 1;
$result .= " ";
$result .= "<a href=\"$url&page=$page\">Previous</a>";
}
if($page_start > 1) {
$page = $page_start - 1;
$result .= " ";
$result .= "<a href=\"$url&page=$page\">...</a>";
}
for($i = $page_start; $i <= $page_end; $i++) {
$result .= " ";
if($i == $current_page) {
$result .= $i;
}
else {
$result .= "<a href=\"$url&page=$i\">$i</a>";
}
$result .= " ";
}
if($page_end < $total_pages) {
$page = $page_end + 1;
$result .= " ";
$result .= "<a href=\"$url&page=$page\">...</a>";
}
if($current_page < $total_pages) {
$page = $current_page + 1;
$result .= " ";
$result .= "<a href=\"$url&page=$page\">Next</a>";
}
if($result == "") {
return "1";
}
else {
return $result;
}
}
?>
มีวิธีเขียนโค้ดให้มันจำค่า i ที่แสดงจำนวนเลขข้อไหมค่ะ เพราะอยากให้มันเรียงตามกันไปจะได้รู้ว่ามีจำนวนกี่ข้อ ไม่อยากให้เมื่อเปลี่ยนหน้าแล้วเริ่มนับใหม่ ขอบคุณนะค่ะ
Tag : PHP, Ajax
|
|
|
|
|
|
Date :
2011-01-27 12:53:45 |
By :
nuie |
View :
2137 |
Reply :
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองเอา code นี้ไปแทนตรง <?php $i=1; ?>
Code (PHP)
<?php
if ($current_page == 1){
$i=1;
}
else
{
$i=$current_page * $rows_per_page;
}
?>
|
|
|
|
|
Date :
2011-01-27 15:01:01 |
By :
sataru |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|