Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > ขอความช่วยเหลือ เรื่องการ route pagination ของ codeigniter หน่อยครับ



 

ขอความช่วยเหลือ เรื่องการ route pagination ของ codeigniter หน่อยครับ

 



Topic : 076191



โพสกระทู้ ( 25 )
บทความ ( 0 )



สถานะออฟไลน์




// URL ครับ
http://127.0.0.1/cidemo/users/2


Code (PHP)
$config['base_url'] = site_url('users');
$config['per_page'] = 15;
$config['uri_segment'] = 2;
$config['total_rows'] = $search_count;
$config['use_page_numbers'] = TRUE;

$uri_val = $this->uri->segment(2);
$offset = (!empty($uri_val)) ? $offset = ($uri_val - 1 ) * $config['per_page'] : 0;

limit($config['per_page'], $offset )


แบ่งหน้า กด หน้าไปแล้วครับ
ติดตรงที่ว่า เวลากดลิ้ง 1 2 3 4 5 ...
สมมุติผมกด เลข 2 จะต้องแสดงข้อมูลเลขที่ 15 16 17 ... แต่ กลับออก ข้อมูลเปน 3 4 5 6...

$offset ผมก็ได้ค่าออกมาถูกต้องนะครับ แต่มันไม่อ่านค่า กลับไปอ่านค่าจากเลข uri 2 แทน
เหมือนกันว่าเอาค่า $config['use_page_numbers'] = TRUE; มาใช้ เลย

รบกวนด้วยนะครับ



Tag : PHP









ประวัติการแก้ไข
2012-03-27 14:11:33
2012-03-27 14:11:56
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-03-27 14:07:56 By : TonHaDy View : 1524 Reply : 8
 

 

No. 1



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


ถ้ากำหนด use_page_numbers = true มันก็เอาค่านั้นมาใช้แหละครับ

อันนี้ config ให้รับค่าจาก uri_segment = 2 แล้ว uri_segment นี้แบ่งแต่ละหน้าได้ค่าออกมาเป็นอะไรบ้าง? 2 3 4 5+?

ถ้าสมมุติว่า use_page_numbers = false มันจะได้ค่า offset ที่แท้จริง คือหน้าแรกจะได้ 0 หน้า2จะได้ 15 หน้า3จะได้ 30 (แบ่งหน้าละ 15)

ผมว่าน่าจะพลาดตั้งแต่ use_page_numbers
ลองเปลี่ยนเป็น false แล้วรับค่า uri_val เช็คค่าว่างให้เป็น 0 แล้วจับใส่ limit()






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-03-27 14:33:53 By : mr.v
 


 

No. 2



โพสกระทู้ ( 25 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : mr.v เมื่อวันที่ 2012-03-27 14:33:53
รายละเอียดของการตอบ ::
อ่อครับท่าน
ผมลอง

$config['use_page_numbers'] = FALSE;
limit($config['per_page'], segment2)

ได้ ถูกต้องทุกอย่างครับ แต่ว่า url มันจะเป้นเหมือนท่านว่าคือ 0 15 30
มันไม่สวย ไม่ใช่เลขหน้าที่แท้จิงอะครับ ผมเลยคิดหาวิธีเปลี่ยนให้มันออกมาเปน http://127.0.0.1/cidemo/users/2
ตามเลขหน้าเลยอะครับ
(ไม่รู้ว่าได้รึป่าวนะครับ มือใหม่มากๆครับ)

ขอบคุนครับท่าน

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-03-27 14:43:57 By : TonHaDy
 

 

No. 3



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


ถ้าเอาแบบโชว์เลขหน้า ก็ต้องเอาเลขหน้ามาคำณวนเอาให้ได้ตรงตามค่า offset จริงนะครับ ก็คือ 0 15 30
ถ้าเลขหน้าก็จะได้ 1 2 3
ก็เอาเลขหน้า-1*จำนวนต่อหน้า น่าจะประมาณนี้ $offset = (($uri_val-1)*15)
จริงๆตามที่จขกท.ทำมาก็น่าจะถูกแล้วล่ะ แต่น่าจะเพราะคุณเขียนเงื่อนไขผิด

Code (PHP)
if ( $uri_val == null ) {// ต้อง == null เท่านั้น ใช้ empty ไม่ได้ เพราะถ้าค่ามาเป็น (int)0 มันก็ถือว่าเป็น empty ครับ บ้าจริงๆ.
    $offset = (($uri_va-1)*$config['per_page'];
} else {
    $offset = 0;
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-03-27 15:20:58 By : mr.v
 


 

No. 4



โพสกระทู้ ( 25 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 3 เขียนโดย : mr.v เมื่อวันที่ 2012-03-27 15:20:58
รายละเอียดของการตอบ ::
ไม่ได้อยู่ดีครับท่าน ถ้า $config['use_page_numbers'] = FALSE; ลิ้งมันจะเปน 15 30 ให้ออโต้

$config['use_page_numbers'] = true ลิ้งจะ 1 2 3 4 ... ถูกแล้ว แต่ แสดงข้อมูลเหมือนเดิมอยู่ดี กด 2 ก็ออก 3 แทนที่จะออก 15

มีวิธีกำหนดเลขลิ้งไหมครับ

ขอบคุนมากครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-03-27 20:08:37 By : TonHaDy
 


 

No. 5



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


ก็ use_page_numbers = true นั่นแหละครับ

ปัญหามันติดอยู่ตรง if เพื่อเอาเลขหน้ามาคำณวนนั่นแหละครับ

ลอง echo ออกมาดูว่าค่า $offset ได้เท่าไหร่ ในหน้าแรก หน้าสอง หน้าสาม
ถ้า offset ได้ 0 15 30 ก็แสดงว่าถูกแล้ว อาจผิดตรงใส่ใน limit() สลับตำแหน่งกันดู.

เพราะไม่ว่ากำหนดยังไง มันก็ต้องเอาค่า $offset มาใส่ใน limit อยู่ดี จะผิดก็ตรงเช็ค if เอาเลขมาคำณวนแค่นั้นเอง

แต่ถ้าใช้แบบ use_page_numbers = off ทุกอย่างมันก็ง่าย.
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-03-27 22:23:32 By : mr.v
 


 

No. 6



โพสกระทู้ ( 25 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 5 เขียนโดย : mr.v เมื่อวันที่ 2012-03-27 22:23:32
รายละเอียดของการตอบ ::
ขอบคุนมากครับท่าน

ผมใช้ use_page_numbers = true

$offset = ($uri_val != NULL) ? $offset = ($uri_val - 1 ) * $config['per_page'] : 0;

offset ก็ถูกต้องแระครับ 0 15 30 ลิ้งหน้าก็ ถูก 2 3 4

แต่ข้อมูลก็ยังออกมาไม่ตรงเหมือนเดิมคือ กด 2 ข้อมูลออก 3 ไม่ออก 15-16

limit $config['per_page'], $offset ถ้าสลับ จะผิดอะครับ -..--

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-03-28 09:13:51 By : TonHaDy
 


 

No. 7



โพสกระทู้ ( 4,756 )
บทความ ( 8 )



สถานะออฟไลน์


งั้นขอดูคำสั่งที่ใช้ limit เต็มๆหน่อยครับ

ปกติถ้าผมจะใช้ pagination ผมจะใช้ $sql = "select...."; ธรรมดาแบบนี้ ไม่ได้ใช้ active record class
แล้วเวลากำหนด pagination+ได้ค่า offset เสร็จแล้วก็จะเอามาต่อ $sql .= " limit ..."; แบบนี้
ซึ่งปรับแบบเลขหน้าหรือเลข offset มันก็ทำงานได้ถูกต้องหมดเลยตามโค้ดข้างบน.
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-03-28 18:15:07 By : mr.v
 


 

No. 8



โพสกระทู้ ( 25 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 7 เขียนโดย : mr.v เมื่อวันที่ 2012-03-28 18:15:07
รายละเอียดของการตอบ ::
ขอบคุนมากครับท่าน

เหมือนกับว่า จุดเริ่มต้นของข้อมูล มันไม่ยอม เปนไปตามที่เรากำหนดอะครับ

มันไปอ่านค่าจาก url ($config['use_page_numbers'] = TRUE;)

ที่จิงแบ่งหน้าก็ได้ถูกต้องแล้วนะครับ เพียงแต่ว่า url มันไม่สวยอะครับ

0 15 30 45 เป็นไปตามที่ per_page ผมกำหนดคือ 15 ผมกำลังหาวิธีให้มันเปน 1 2 3 4 5 อะครับท่าน -.-

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-03-29 10:09:59 By : TonHaDy
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ขอความช่วยเหลือ เรื่องการ route pagination ของ codeigniter หน่อยครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่