Distinct กับ Group by
DISTINCT เป็นคำสั่งที่ใช้หาข้อมูลที่ไม่ซ้ำออกมา ซึ่งถ้าข้อมูลซ้ำกันจะเลือกมาแค่ Record เดียว
1 2 3 | SELECT DISTINCT(member_id) FROM member LIMIT 0,10 |
GROUP BY เป็นคำสั่งที่มักจะใช้รวมกับ SUM เพื่อใช้ในการหาผลรวมของข้อมูล แต่ก็สามารถนำมาประยุกต์ เพื่อใช้ในการข้อมูลที่ไม่ซ้ำได้เหมือนกัน
1 2 3 4 | SELECT member_id FROM member GROUP BY member_id LIMIT 0,10 |
เรื่องที่จะบอกก็คือ
DISTINCT กับ GROUP BY ผลลัพธ์ของข้อมูลได้เหมือนกัน แต่ความเร็วในการ Query ต่างกันมาก กับข้อมูลมาก ๆ เพราะฉะนั้นมาเปลี่ยนมาใช้ GROUP BY ดีกว่า เพื่อความเร็วของ program และ db admin จะได้ไม่บ่น
สั่งพิมพ์เอกสารเป็นหน้าๆ โดยใช้ CSS ควบคุม
ในบางครั้งเราต้องการเขียนโปรแกรมเพื่อพิมพ์เอกสาร แต่เราก็ต้องมาทดสอบในการพิมพ์ว่าต้อง
เว้นวรรคมากแค่ไหน ถึงจะไปหน้าใหม่ แต่วิธีที่จะบอกทำให้เราสามารถ ควบคุมการพิมพ์ของเรา
ได้ดีขึ้น ได้สะดวกมากขึ้น
ส่วนของ CSS
1 2 3 4 5 6 7 8 9 10 | <style type="text/css"> <!-- @media print { div.page { height: 100%; margin: 0px 0px 0px 0px; } } --> </style> |
ส่วนของ Html
1 2 | <div class="page">aa</div> <div class="page">bb</div> |
จากตัวอย่างจะเห็นว่า ใน CSS มีการเรียกใช้ Media Print คือการสั่งให้จัดการกับสื่อหรือ
Output ที่เป็น Printer ซึ่งเรากำหนดให้มีผลกับช่วง tag <div>
เมื่อคุณลองสั่งรัน Script แล้วสั่งพิมพ์ออกมา ก็จะเห็นว่า Printer
จะพิมพ์ออกมา 2 หน้า โดยหน้าแรกจะเป็น aa หน้า 2 จะเป็น bb
อ้างอิงจาก www.siamdev.com
วิธีการส่งค่าไปใน setTimeout()
ผมเคยเขียนโปรแกรม แล้วต้องการหน่วงฟังก์ชั่นการทำงาน แต่ต้องการส่งค่าตัวแปร ไปในฟังก์ชั่นนั้นด้วย
ซึ่งผมก็หาวิธีตั้งมากมาย แล้วก็หาไม่เจอซักที แต่สุดท้ายก็รู้จนได้
นั้นก็คือ
1 2 3 4 5 | <script type="text/javascript"> var bTime=4000; // หมายถึง หน่วงเวลาไว้ 4 วินาที var bVal="rotateimage('"+obj+"')"; setTimeout(eval(bVal),bTime); </script> |
โดยที่
bTime คือ ค่าที่ใช้หน่วงโปรแกรม หน่วยคือ มิลลิวินาที (10-3)
rotateimage คือ ชื่อ function ที่เรียกใช้
obj คือ ตัวแปรที่ต้องการส่งไป
ต้องขอขอบคุณน้อง ATT@MKT ด้วยที่แนะนำวิธีนี้
ตรวจสอบ IP Address จริง
ในบางครั้งเราต้องการตรวจสอบคนที่เข้ามาใช้เวปเรา และโดยส่วนมาแล้วจะตรวจสอบโดย
check IP Address ซึ่งถ้าเราใช้
1 2 3 4 | <?php $ip=getenv(REMOTE_ADDR); print "IP Address is $ip"; ?> |
เราก็จะได้ IP Address มา แต่ก็ถ้าเครื่องนั้น ๆ ใช้ Proxy Server เราจะได้ IP Address ของ
Proxy มาแทน ซึ่งเราควรแก้ไข code ที่ใช้ มาเป็น
1 2 3 4 5 6 7 | if (getenv(HTTP_CLIENT_IP)) { $ip = getenv(HTTP_CLIENT_IP); } elseif (getenv(HTTP_X_FORWARDED_FOR)) { $ip = getenv(HTTP_X_FORWARDED_FOR); } else { $ip = getenv(REMOTE_ADDR); } |
จะทำให้เราได้ IP Address ของเครื่องนั้น ๆ จริง ๆ
ข้อแตกต่าง ระหว่าง “ กับ `
หลายคน คงเคยใช้ ” กับ ` แต่อาจจะยังไม่ทราบ ถึงข้อแตกต่างระหว่างสองตัวนี้
สมมุติว่า เรา เขียน code ตามข้างล่างนี้
1 2 3 4 5 | <?php $a='test'; echo '$a'; // ผลลัพธ์คือ $a echo "$a"; // ผลลัพธ์คือ test ?> |
ซึ่งจะแสดงให้เห็นว่า เครื่องหมาย ` จะให้ผลลัพธ์ออกมาเลย
ส่วนเครื่องหมาย ” จะนำค่าไปประมวลผลก่อน จึงจะแสดงผล
ดังนั้น (อันนี้คือข้อแนะนำนะ)
ถ้าเราต้องการแค่แสดงผล
แนะนำให้ใช้เครื่องหมาย ` นะครับ จะทำให้ code เราประมวลเร็วขึ้น
ขอให้มีความสุขในการเขียน code นะครับ
จริง ๆ แล้วผมก็ไม่รู้มาก่อนหรอกนะ
ต้องขอขอบคุณน้อง ATT@MKT ด้วยนะครับ
Light Box JS v2.0

เวปที่แนะนำการแสดงผลรูปภาพแบบใหม่
เป็นเวปแรก ๆ ที่ให้แสดงผลแบบนี้ สมัยนี้จึงเรียกการแสดงผลลักษณะนี้
ว่า แสดงผลแบบ lightbox ถึงแม้ว่าจะไม่ได้ใช้ lightbox ก็ตาม
เหอะๆๆ
http://www.huddletogether.com/projects/lightbox2
น่าปลื้มใจแทน lightbox จริง ๆ ที่มีคน copy idea เหอะ ๆ
css Zen Garden

เป็นเวปที่ทำให้เห็นความสามารถของ css มากกว่าเดิม
เพราะเวปนี้มีแค่ ข้อความแบบเดียว แต่เปลี่ยนแค่ css ก็สามารถเปลี่ยนรูปลักษณ์ได้
เวปนี้ เป็นเวปแรงบันดาลใจผม ในการศึกษา css เลยนะเนี่ย
กำหนด Encoding ให้กับหน้าเวป
ถ้าใช้ใน PHP ให้กำหนด
1 | header ("Content-type: text/html; charset=utf-8"); |
แต่ถ้าใช้ใน MySQL ให้กำหนด
1 | mysql_query("SET NAMES UTF8"); |
แต่ถ้าใช้ใน HTML ให้กำหนด
1 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |

