BosnoS

Sat 5 Aug 2006 17:54:27
Sat 5 Aug 2006 17:54:27
คือ ผมทำหน้า โชว์ข่าวทั้งหมด ซึ่งตอนนี้มี 100 กว่าข่าวแล้ว เยอะมาก มันโชว์หน้าเดียวหมดเลย ทำให้โหลดช้า แต่ไม่รู้ว่าจะเขียนยังไงให้มันโชว์ทีละ 30 ข่าวนะครับ รบกวนขอสคริปหน่อยนะครับ
ขอบคุณครับ
BosnoS
ใช้คำสั่ง SQL ในการจำกัดการ query ด้วย LIMIT ครับ เช่น
SELECT * FROM news ORDER BY date DESC LIMIT 30
เป็นการจำกัดการ query เพื่อให้แสดงผลไม่เกิน 30 record
SELECT * FROM news ORDER BY date DESC LIMIT 10, 30
เป็นการจำกัดการ query เพื่อให้แสดงผลไม่เกิน 30 record โดยเริ่มนับจาก record ที่ 10
SELECT * FROM news ORDER BY date DESC LIMIT 30
เป็นการจำกัดการ query เพื่อให้แสดงผลไม่เกิน 30 record
SELECT * FROM news ORDER BY date DESC LIMIT 10, 30
เป็นการจำกัดการ query เพื่อให้แสดงผลไม่เกิน 30 record โดยเริ่มนับจาก record ที่ 10
BosnoS

Mon 7 Aug 2006 00:26:05
Mon 7 Aug 2006 00:26:05
คือ สมุติว่า ถ้ามันมี 100 ข่าว ก็อยากให้มัน แบ่งเป็น 4 หน้าให้เลย อ่ะครับ
ก็ต้องทำการนับ record ทั้งหมดครับ ใช้ COUNT() ใน MySQL ช่วยครับ เช่น
"SELECT COUNT(*) AS num FROM news"
จากนั้นเอามาหารด้วยจำนวน record ต่อ 1 หน้า จะได้ว่าต้องแสดงกี่หน้า
การเขียน query ก็ใช้ LIMIT นั่นล่ะครับ เช่น ผมใช้ตัวแปร p ผ่าน query string เพื่อบอกว่าหน้าใด จะได้
"SELECT * FROM news ORDER BY date DESC LIMIT ".((isset($_GET["p"]) && (int)$_GET["p"] > 0)?($_GET["p"]-1)*25:0).", 25"
จากโค๊ดเป็นตัวอย่างการ query ครับโดยมีส่วนสำคัญตรงที่ hilight ไว้นั่นเป็นการตรวจว่ามีการส่งตัวแปร p และเป็นตัวแปรชนิด int ที่มีค่ามากกว่า 0 หรือไม่ ถ้าไม่ก็ให้เริ่ม query จาก record ที่ 0 จำนวน 25 record ถ้ามีการส่งค่ามาเช่นเป็น 2 ให้ -1 แล้วคูณด้วยจำนวน record ที่ต้องการ จะได้ความว่าอ่าน record ตั้งแต่ record ที่ 50 ไป 25 record (หน้าละ 25 record)
"SELECT COUNT(*) AS num FROM news"
จากนั้นเอามาหารด้วยจำนวน record ต่อ 1 หน้า จะได้ว่าต้องแสดงกี่หน้า
การเขียน query ก็ใช้ LIMIT นั่นล่ะครับ เช่น ผมใช้ตัวแปร p ผ่าน query string เพื่อบอกว่าหน้าใด จะได้
"SELECT * FROM news ORDER BY date DESC LIMIT ".((isset($_GET["p"]) && (int)$_GET["p"] > 0)?($_GET["p"]-1)*25:0).", 25"
จากโค๊ดเป็นตัวอย่างการ query ครับโดยมีส่วนสำคัญตรงที่ hilight ไว้นั่นเป็นการตรวจว่ามีการส่งตัวแปร p และเป็นตัวแปรชนิด int ที่มีค่ามากกว่า 0 หรือไม่ ถ้าไม่ก็ให้เริ่ม query จาก record ที่ 0 จำนวน 25 record ถ้ามีการส่งค่ามาเช่นเป็น 2 ให้ -1 แล้วคูณด้วยจำนวน record ที่ต้องการ จะได้ความว่าอ่าน record ตั้งแต่ record ที่ 50 ไป 25 record (หน้าละ 25 record)
BosnoS

Tue 8 Aug 2006 00:23:23
Tue 8 Aug 2006 00:23:23
ขอบคุณครับ สำหรับ Code ยัง งง นิดๆ แต่จะลองเอาไปทดลองดูครับ

















