
ติดต่อเรา
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
|