:: การตัดหน้าข้อมูลแสดงผล ::









ติดต่อเรา

webmaster_dwthai @yahoo.com
webmaster@dwthai.com
08-9495-7296

การแบ่งหน้าแสดงผลข้อมูลดูรู้สึกว่า..จะเป็นปัญหาสำหรับผู้ที่เขียน Web Application มือใหม่ทั้งหลาย เนื่องจากว่า.. ต้องอาศัยแนวคิด และการคำนวนอยู่พอสมควรเลยทีเดียว ผมเองในการเริ่มฝึกเขียนใหม่ ๆ ก็งมโข่งอยู่หลายวันเหมือนกันกับเรื่องตรงนี้ ในบทความนี้จึงนำเอามาให้ท่านลองศึกษากันดูครับ

การตัดหน้าข้อมูลแสดงผล


#!/usr/bin/perl
use CGI qw(param);
use DBI; # ประกาศเพื่อเรียกใช้งาน DBI Modual
$dsn = "DBI:mysql:database=database name;host=localhost";
# กำหนดชื่อ db ที่ต้องการใช้พร้อมทั้งตำแหน่งของ MySQL Server
$dbh = DBI->connect($dsn,"username", "password"); # กำหนด username & password
$sth = $dbh->prepare("SELECT * FROM stu_name"); # กำหนดคำสั่ง SQL
$sth->execute(); # ทำการประมวลผลคำสั่ง
$total_rec=$sth->rows; #นับจำนวน Record ทั้งหมดของ Table
$p_size=25; #กำหนดจำนวน Record ที่จะแสดงผลต่อ 1 เพจ
$total_page=($total_rec/$p_size); # หารโดยให้เป็นเลขจำนวนเต็ม
if(($total_rec % $p_size)!=0){  #ถ้าข้อมูลมีเศษให้ทำการบวกเพิ่มจำนวนหน้าอีก 1
   $total_page++;
}
if(param('page')==""){
# ถ้่ายังไม่มีการส่งค่ามาเพื่อทำการเลือกดูหน้าข้อมูลใด ๆ ให้กำหนดเป็นหน้าแรกของข้อมูลเป็นค่า Default และให้ Record แรกเริ่มที่ Record ที่ 0 หรือ Record แรก

   $page=1;
   $start=0;
}else{
# หากมีการส่งค่ามาเพื่อเลือกดูหน้าข้อมูลหน้าใดให้ทำการคำนวน
# โดยใช้ จำนวนข้อมูลที่ต้องการแสดงต่อ 1 เพจ คูณกับ หน้าข้อมูลที่ต้องการเลือกชม ลบด้วย 1

   $page=param('page');
   $start=$p_size*($page-1);
}
$sql="Select * From stu_name LIMIT $start, $p_size";
#ใช้ Option LIMIT ของ MySQL เพื่อทำการเลือกข้อมูลออกมาตามต้องการ
$sth = $dbh->prepare($sql);
$sth->execute(); # ทำการประมวลผลคำสั่ง
print "Content-type:text/html\n\n";
while($result=$sth->fetchrow_hashref()){  #วนรอบแสดงข้อมูล
print $result->{"Name"}."<br>";
}
for($i=1;$i<=$total_page;$i++){ #สร้าง Link เพื่อให้ผู้ใช้งานเลือกชมหน้าข้อมูล
print "<a href=?page=".$i.">หน้าที่ ".$i."</a> ";
}
$sth->finish();
$dbh->disconnect(); # ทำการยกเลิกการติดต่อกับ Database




 

สงวนลิขสิทธิ์ © 2546-2550 โดย dwthai.com ห้ามการ copy ส่วนใดส่วนหนึ่งของเว็บไซต์แห่งนี้.