วันพฤหัสบดีที่ 26 กันยายน พ.ศ. 2556

วิธีเพิ่มตำแหน่งใหม่(Position)ในTemplateของJoomla 2.5

Template ของ Joomla ส่วนมากแล้วแต่ละตัวจะถูกกำหนดการแสดงผลโมดูลเอาไว้ไม่เหมือนกัน ดังนั้นถ้าเราได้เลือกใช้ Template ที่เราถูกใจไปแล้ว แต่มีตำแหน่งไม่พอที่เราจะเพิ่มเนื้อหาบางส่วนเข้าไป ซึ่งใน Template ของ Joomla เองค่อนข้างที่จะมีความยืดหยุ่นพอสมควร สามารถเพิ่มตำแหน่งใหม่ได้ไม่จำกัด

วิธีเพิ่มตำแหน่งใหม่ใน Template ของ Joomla
1.เปิดไฟล์ templateDetails.xml ในโฟลเดอร์ templates/โฟลเดอร์templateของคุณ/templateDetails.xml ให้เพิ่มตำแหน่งเข้าไปโดยแทรกคำสั่ง <position>ชื่อตำแหน่ง</position> ดังรูป

ในรูปผมได้เพิ่มตำแหน่งใหม่เข้าไป ชื่อว่า position-15 กับ position-16

วันศุกร์ที่ 20 กันยายน พ.ศ. 2556

การใช้งาน TRIGGER ใน MySQL


     หลายท่านคงจะเคยเขียนคำสั่งExecuteกับฐานข้อมูลหลายๆเทเบิลในเวลาเดียวกัน เช่น Insert เสร็จ แล้วดึงค่า id ล่าสุดไปใส่อีกเทเบิลนึงที่สัมพันธ์กัน ซึ่งมันจะทำงานซ้ำๆกันอย่างนี้ทุกครั้ง ความจริงแล้วเราสามารถกำหนดการทำงานแบบนี้ได้ 2 วิธี คือ

1.กำหนดการทำงานที่ Code PHP ได้เลย คือ เพิ่มเสร็จแล้วเขียนคำสั่งดึงค่า id ล่าสุด
(mysql_insert_id()) ออกมา แล้วเขียนคำสั่งเพิ่มลงไปในเทเบิลอื่นอีกครั้ง จะเห็นได้ว่ามันมีหลายขั้นตอนเกินไปและค่อนข้างยุ่งยากพอสมควร

2.การเขียน Trigger โดยเจ้าTriggerนี้จะทำงานที่ตัว MySQL เลยครับ ไม่ต้องเขียนโค๊ด PHP หลายขั้นตอนให้เหนื่อย
Codeก็เขียนง่ายแสนง่าย เช่น

วิธีสร้าง Trigger

CREATE TRIGGER after_insert_product
   AFTER INSERT ON  product FOR EACH ROW
    BEGIN
      UPDATE category
      SET category_pd_count= (NEW.category_pd_count+1)
      WHERE category_id = NEW.category_id;
END

     จากคำสั่งด้านบน อธิบายได้แว่ เอ้ย ว่า Trigger ตัวนี้มีชื่อว่า after_insert_product ทำงานหลังจากเพิ่มสินค้าลงเทเบิล product ให้มันไปบวกจำนวนสินค้า(category_pd_count)ในเทเบิล category เพิ่มอีก 1 โดยมีเงื่อนไขว่า category_id ของเทเบิล category เท่ากับ category_id ของเทเบิล product ที่เพิ่มไปล่าสุดเท่านั้น (NEW.category_id)

คำสั่งแสดงชื่อ TRIGGER ที่เราได้สร้าง

SHOW TRIGGERS;->แสดงทั้งหมด
SHOW TRIGGERS LIKE 'ins%';->ค้นหาtriggerที่ขึ้นต้นด้วย ins

ถ้าเราจะต้องการลบการทำงานของ Trigger ชื่อ after_insert_product ก็แค่ใช้คำสั่ง

DROP TRIGGER IF  EXISTS after_insert_product ;

มาดูคำสั่งอื่นๆที่ผมรวบรวมมาครับ

วันเสาร์ที่ 7 กันยายน พ.ศ. 2556

jQuery กับการส่งค่าข้ามเพจ


     วันนี้มีเทคนิคเด็ดๆเกี่ยวกับ jQuery ที่น่าสนใจมานำเสนอครับ บางท่านอาจจะเคยใช้เทคนิคนี้มาแล้ว นั่นคือการส่งค่าจากหน้าเว็บหนึ่งไปยังอีกหน้าเว็บหนึ่่ง
      ซึ่งการทำงานของมันคือ หน้าเว็บปลายทางจะสามารถส่งค่าไปยังหน้าเว็บต้นทางที่เรียกใช้มันเท่านั้น โดยเราจะประยุกต์ใช้คำสั่ง window.opener กับหน้าเว็บปลายทางครับ หน้าเว็บปลายทางสามารถเข้าถึง Method หรือ Function และ Element ต่างๆที่อยู่หน้าเว็บต้นทางที่เรียกใช้มันได้ทั้งหมด

มาดูโค๊ดตัวอย่างกัน

หน้าเว็บต้นทาง ตั้งชื่อว่า mainfile.html พิมพ์Codeตามนี้ครับ

ส่วนของ Javascript
<script type="text/javascript">
function showHello(){
 alert('Hello World');
}
</script>
ส่วนของ body
<div id="hello"></div>
<!--<a href="popup.html" target="_blank">ไฟล์หน้า POPUP</a> -->
<input type="button" name="callPopUp" id="callPopUp" value="เรียกหน้า POPUP" onclick="window.open('popup.html', '_blank', 'height=200, width=400');" />