|
|
|
วิธีการเขียนแบ่งหน้าเพจ ด้วย PHP Codeigniter ทำยังไงอ่ะค่ะ |
|
|
|
|
|
|
|
เอาแบบ ง่าย ๆ เลยนะ
// Controller
class Main extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->library('pagination'); // ไลบารี่ใช้ทำ pagination 1 2 3 4 5
}
public function index()
{
// ให้หน้านี้เป็น หน้าเริ่มต้นครับ
$sql="Select * from tb_user Order by id desc limit 0,20"; // เรียง มาก 20 อันแรกก่อน
$rs=$this->db->query($sql);
$data['rs']=$rs->result_array(); // query เอาไปแสดง
$config['base_url'] = base_url()."main/page/"; // ส่วนนี้ จะเป็น link ว่า จะให้ไปที่หน้าไหน ซึ่งเราจะให้ไปที่ method page ด้านล่าง
$config['total_rows'] = $this->db->count_all("tb_user"); // ส่วนนี้ จะนับว่า ฟิว ทั้งหมดที่อยู่ใน tb_user มีเท่าไหร่
$config['per_page'] = '20'; // ให้แสดงหน้าละจำนวนเท่าไหร่
$this->pagination->initialize($config); // จากกนั้น เอาค่า ไป config ใน object pagination ที่เรา load มา
$this->load->view("main/index",$data); // load view index
}
public function page($page=0) // กำหนดค่าเริ่มต้นที่ 0
{
$sql="Select * from tb_user Order by id desc limit $page,20"; เริ่มต้นจาก $page ที่ส่งมา
$rs=$this->db->query($sql);
$data['rs']=$rs->result_array();
$config['base_url'] = base_url()."main/page/"; // ส่วนนี้ จะเป็น link ว่า จะให้ไปที่หน้าไหน ซึ่งเราจะให้ไปที่ method page ด้านล่าง
$config['total_rows'] = $this->db->count_all("tb_user"); // ส่วนนี้ จะนับว่า ฟิว ทั้งหมดที่อยู่ใน tb_user มีเท่าไหร่
$config['per_page'] = '20'; // ให้แสดงหน้าละจำนวนเท่าไหร่
$this->pagination->initialize($config); // จากกนั้น เอาค่า ไป config ใน object pagination ที่เรา load มา
$this->load->view("main/index",$data); // load view index เพราะใช้ ข้อมูลชุดเดียวกัน
}
}
ส่วน View ชื่อ index.php อยู่ใน main
<?php
if(count($rs)==0)
{
echo"no data";
}
else
{
$i=$this->uri->segment(3); // เอามานับว่า อยุ่ ลำดับที่เท่าไหร่
$no=empty($i)?1:$i;
foreach($rs as $r)
{
echo"ลำดับที่ $no : รหัส".$r['user_id'];
$no++;
}
}
?>
<p>หน้าที่ <?php echo $this->pagination->create_links(); // เป็น ตัว generate pagination ให้เราเองอัตโนมัติ?><p>
ลองดูครับ
ตัวอย่าง
|
ประวัติการแก้ไข 2011-09-12 14:31:33
|
|
|
|
Date :
2011-09-12 14:25:22 |
By :
kalamell |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณเด่วกำลังลองทำดูค่ะ เด่วติดตรงไหนเด่วมาถามน่ะค่ะ
|
|
|
|
|
Date :
2011-09-12 14:37:14 |
By :
nidnoiiz |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แง่ว ยังทำไม่ได้เลยค่ะ คือจะถามว่า พอดีไม่ได้ให้มันโชว์ข้อมูลหน้าแรกอ่ะค่ะ แต่ให้มันแบ่งเพจหน้าอื่น จะถามว่าถ้าเราสร้าง Function ขึ้นมาใหม่ใน Controller ได้หรือเป่าค่ะ แต่ไม่ได้สร้างใน หน้า Main อ่ะค่ะ มันน่าจะได้ไหม
|
|
|
|
|
Date :
2011-09-12 15:48:16 |
By :
nidnoiiz |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ยังทำไม่ได้คะ เรียกตรงหน้า View มันไม่รู้จัก ตัวแปร rs
|
|
|
|
|
Date :
2011-09-13 09:43:20 |
By :
nidnoiiz |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$data['rs']=$rs->result_array(); นี่ยังไงหล่ะครับ query คุณเป็นอะไรหล่ะ
|
|
|
|
|
Date :
2011-09-13 11:19:43 |
By :
kalamell |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Query ดึงมาจาก Model อ่ะค่ะไม่ได้ Query ตรงๆๆ ใน Controller แบบตัวอย่างที่คุณให้มา ที่นี้มันแสดงผลแบบนี้อ่ะค่ะ
|
|
|
|
|
Date :
2011-09-13 13:24:40 |
By :
nidnoiiz |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เอาโค้ดเต็ม ๆ มาให้ ดูเลยดีกว่าครับ ทั้ง controller และ model ที่ผมทำให้ ดู เพื่อให้ง่ายต่อการดูครับ แล้วลองตามแบบ ผมหรือยังหล่ะ ???
|
|
|
|
|
Date :
2011-09-13 14:04:01 |
By :
kalamell |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หายไปนานมากคะ่โทดที พอดีติดงานอย่างอื่นต้องทำก่อน วันนี้ลองแก้แล้วคะ่แสดงผลได้น่ะ แต่ติดปัญหาตรงที่ว่า ใช้ดาต้าเบสของ Microsoft SQL Server อ่ะค่ะ แล้วมันใช้ คำสั่ง Limit ไม่ได้มันเลยแสดงผลแปลกๆๆ อยากให้คุณ U ช่วยดูโค้ดให้หน่อยค่ะ ขอบคุณน่ะค่ะ
Controller :
Code
function view_user()
{
$this->load->library('pagination');
$sql="SELECT TOP 5* FROM tb_user order by id_user;";
$rs=$this->db->query($sql);
$data['rs']=$rs->result_array();
$link_page = site_url().'/admin_all/page';
$config['base_url'] = $link_page;
$config['total_rows'] = $this->db->count_all("tb_user");
$config['per_page'] = '5';
$config['next_link'] = 'ถัดไป';
$config['prev_link'] = 'ก่อนหน้า';
$config['first_link'] = 'หน้าแรก';
$config['last_link'] = 'หน้าสุดท้าย';
$this->pagination->initialize($config);
$this->load->view("view_u99.php",$data);
}
public function page($page=0)
{
echo $page;
$this->load->library('pagination');
$sql="WITH qy AS
(SELECT ROW_NUMBER() OVER (ORDER BY [id_user]) AS [Row_No],*FROM [tb_user])
SELECT * FROM qy WHERE [Row_No] BETWEEN $page AND 10;";
$rs=$this->db->query($sql);
$data['rs']=$rs->result_array();
$link_page = site_url().'/admin_all/view_user';
$config['base_url'] = $link_page;
$config['total_rows'] = $this->db->count_all("tb_user");
$config['per_page'] = '5';
$config['next_link'] = 'ถัดไป';
$config['prev_link'] = 'ก่อนหน้า';
$config['first_link'] = 'หน้าแรก';
$config['last_link'] = 'หน้าสุดท้าย';
$this->pagination->initialize($config);
$this->load->view("view_u99.php",$data);
}[/code]
View :
Code
[php] <?php
if(count($rs)==0)
{ echo"no data"; }
else
{
$i=$this->uri->segment(5); // เอามานับว่า อยุ่ ลำดับที่เท่าไหร่
$no=empty($i)?1:$i;
foreach($rs as $r)
{
echo"-".$r['fname'];
$no++;
}
}
?>
<p>หน้าที่ <?php echo $this->pagination->create_links();
?>
*** นิคิดว่าน่าจะติดปัญหาตรง Query นี้และค่ะ ช่วยดูให้ด้วยน่ะค่ะ
|
|
|
|
|
Date :
2011-09-30 13:33:15 |
By :
nidnoiiz |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- -" ใครก้อได้พอรู้ช่วยทีค๊าาาาา ~~~~~
|
|
|
|
|
Date :
2011-10-01 08:56:24 |
By :
nidnoiiz |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$this->load->library('pagination'); เขียนอะไรไว้บ้างค่ะ อยากดูโค้ดจังเลย
|
|
|
|
|
Date :
2011-11-16 14:30:21 |
By :
แพน |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|