ถ้า 1 id มีหลายรูป ต้องการให้ดึงมาโชว์เฉพาะ รูปเดียว ในหน้า thumb พอกด detail จึงจะโชว์หลายรูป ต้องเขียนไงครับ
ในลูป while ซ้อน select ไปอีกอัน เลือกภาพตาม id product มา โดย limit 1
อาจจะเป็นวิธีที่ไม่ดี หน่ะครับ
Date :
2013-04-09 16:45:49
By :
WiTT
มีอีกมั้ย คนอื่นๆ หนะคับ
Date :
2013-04-09 16:51:45
By :
nottpoo
Code (PHP)
SELECT * FROM tb_product tp LEFT JOIN tb_product_image ti ON(tp.id_product=ti.id_product)
WHERE tp.lang='en' AND tp.status='Yes' GROUP BY ti.id_product
มีคนนี้หะ
Date :
2013-04-09 17:21:54
By :
teez1232002
1. เก็บชื่อภาพที่ต้องการใช้เป็นรูปหลักไว้ใน tb_product โดยเพิ่มฟิลด์ varchar เก็บชื่อไปเลย
- แต่ขนาดตาราง tb_product จะใหญ่ขึ้นเพราะเก็บชื่อไฟล์รูปด้วย
2. เพิ่มฟิลด์เหมือนกัน แต่เป็นแบบ int อ้างอิงรหัส image
- แต่เวลา query ก็ต้อง JOIN กันทำให้ช้าลงไปอีก
3. เพิ่มฟิลด์ในตาราง tb_product_image โดยเป็นชนิด int(1) เก็บแค่สถานะ 1 กับ 0 เพื่อให้รู้ว่ารูปไหนเป็นรูปหลัก
- แบบนี้ประหยัดพื้นที่สุดๆ แล้ว แต่ก็ต้อง JOIN ตารางอยู่ดี
4. ใช้วิธีที่ 1 คือเก็บเป็นชื่อไปเลย แต่ชื่อในที่นี้จะตั้งตาม id ของ tb_product_image
และเก็บในโฟลเดอร์ใหม่ /image/xxx/1.jpg อะไรก็ว่าไป
และก็เอาเลขที่ได้มาเก็บในฟิลด์ที่เพิ่มแบบ int(11) คือเก็บแต่รหัส เวลาแสดงก็ต่อ .jpg เอาเอง
โดย int(11) จะเก็บชื่อได้ทั้งหมด 10,000,000,000 รูป
Date :
2013-04-09 21:08:27
By :
Naizan
เรื่อง join ปูว่าไมเป็นไรหรอกมั้ง เพราะโครงสร้างตารางที่ออกแบบมาทีแรก มันก็ต้อง join
กันอยู่แล้ว เพราะ 1 id มีหลายรูป หนิ ฮะ
ที่คุณ Cyberman บอกมา วิธีที่ 3 ก็ดีนะ งั้นลองวิธีนี้ก่อนนะ
ส่วนข้อ 1 กับ ข้อ 4 คิดไว้นานแล้ว แต่มันต้องเสียเวลามานั่งเขียน upload รูปใหม่อีก
Date :
2013-04-10 10:04:20
By :
nottpoo
วิธีที่ 3 เวิร์คมากคับ แทบไม่ต้องเขียนโค้ดอะไรเพิ่มเติมเลย ทำงานสั้น ๆ ง่ายๆ แบบนี้ ชอบมากคับ
Date :
2013-04-10 10:19:53
By :
nottpoo
Load balance : Server 03