May 25, 2011
แว่นตก

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 จะได้ไม่บ่น

 

May 25, 2011
แว่นตก

สั่งพิมพ์เอกสารเป็นหน้าๆ โดยใช้ 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

 

May 25, 2011
แว่นตก

วิธีการส่งค่าไปใน 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 ด้วยที่แนะนำวิธีนี้ :)

 

May 25, 2011
แว่นตก

ตรวจสอบ 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 ของเครื่องนั้น ๆ จริง ๆ

 

May 25, 2011
แว่นตก

ข้อแตกต่าง ระหว่าง “ กับ `

หลายคน คงเคยใช้ ” กับ ` แต่อาจจะยังไม่ทราบ ถึงข้อแตกต่างระหว่างสองตัวนี้

สมมุติว่า เรา เขียน code ตามข้างล่างนี้

1
2
3
4
5
<?php
   $a='test';
   echo '$a';  //  ผลลัพธ์คือ  $a
   echo "$a";  // ผลลัพธ์คือ  test
?>

ซึ่งจะแสดงให้เห็นว่า เครื่องหมาย ` จะให้ผลลัพธ์ออกมาเลย
ส่วนเครื่องหมาย ” จะนำค่าไปประมวลผลก่อน จึงจะแสดงผล

ดังนั้น (อันนี้คือข้อแนะนำนะ)
ถ้าเราต้องการแค่แสดงผล
แนะนำให้ใช้เครื่องหมาย ` นะครับ จะทำให้ code เราประมวลเร็วขึ้น

 

ขอให้มีความสุขในการเขียน code นะครับ

 

จริง ๆ แล้วผมก็ไม่รู้มาก่อนหรอกนะ
ต้องขอขอบคุณน้อง ATT@MKT ด้วยนะครับ :)

 

May 25, 2011
แว่นตก

Light Box JS v2.0

รูปของเทคนิค Light Box JS v2.0

เวปที่แนะนำการแสดงผลรูปภาพแบบใหม่
เป็นเวปแรก ๆ ที่ให้แสดงผลแบบนี้ สมัยนี้จึงเรียกการแสดงผลลักษณะนี้
ว่า แสดงผลแบบ lightbox ถึงแม้ว่าจะไม่ได้ใช้ lightbox ก็ตาม

เหอะๆๆ

http://www.huddletogether.com/projects/lightbox2

 

น่าปลื้มใจแทน lightbox จริง ๆ ที่มีคน copy idea เหอะ ๆ

 

May 25, 2011
แว่นตก

css Zen Garden

รูปของเทคนิค css Zen Garden

เป็นเวปที่ทำให้เห็นความสามารถของ css มากกว่าเดิม
เพราะเวปนี้มีแค่ ข้อความแบบเดียว แต่เปลี่ยนแค่ css ก็สามารถเปลี่ยนรูปลักษณ์ได้

http://www.csszengarden.com

 

เวปนี้ เป็นเวปแรงบันดาลใจผม ในการศึกษา css เลยนะเนี่ย

 

May 25, 2011
แว่นตก

กำหนด 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" />

 

Pages:«12345»