aHuii.com

บล็อกของอาฮุย :)

๐๙๓ | อัพเดทครั้งแรกในรอบปีครึ่ง

June 3rd, 2021

ไม่ได้อัพเดทอะไรมา 1 ปีครึ่ง เหมือนจ่ายค่าโฮสไปฟรีๆ เมื่อวานเลยอัพเดทตัว WP ซะหน่อยกลายเป็นว่าเจอหน้าขาวแจ้งว่าเวอร์ชั่นล่าสุดเวอร์ชั่นของ PHP ในโฮสมันเก่าเกินไปซะแล้ว

แจ้งทางโฮสไปก็ได้ย้ายมาอยู่เครื่องที่ใช้ PHP เวอร์ชั่นสูงขึ้น เปิดขึ้นมาก็เจอแจ้ง Database Error ก็โอเคไม่มีปัญหาเพราะทางโฮสย้ายเครื่องแล้วก็มีเปลี่ยน Password ให้เรา ก็เข้าไปแก้ config เสร็จปุ๊บ..เจอ Error ใหม่อันนี้แทน “There has been a critical error on this website.”

๐๗๔ | การอัพโปรเจ็คที่เขียนด้วย Laravel ขึ้นโฮสต์แบบไม่มีโฟลเดอร์ public

June 5th, 2013

โดยโครงสร้างไฟล์ของ Laravel แล้วเวลารันใน localhost จะเป็น localhost/laravel-project/public แต่ที่ต้องการที่จะให้เห็นคือ localhost/laravel-project แบบที่ไม่ต้องมี public มาต่อท้ายอีกที

ขั้นแรกจะมี 2 ส่วนที่จะถูกจับแยกออกจากกันคือ folder public ที่เป็นส่วน interface กับส่วนอื่นๆ ที่เหลือ โดยนำ public ไปวางใน document root ของโฮส ส่วนไฟล์อื่นๆ จะไว้ตรงไหนก็ได้ ยกตัวอย่างเช่นเขียนโปรเจ็คชื่อ laravel-project (หรืออยากจะใช้ชื่ออะไรก็ตามใจ) โดยเปลี่ยนชื่อจาก laravel ที่เป็น default ตัว folder ที่อยู่บนเครื่องจะมีโครงสร้างแบบนี้

Laravel-Structure-File

๐๖๓ | วิธีสร้าง construct function ของ Smarty 3 และการตั้งค่า complile_dir, cache_dir

August 10th, 2011

วิธีการสร้าง construct function ของ Smarty 3 และ 2 นั้นไม่เหมือนกัน

Smarty2 เขียนแบบนี้

require_once("Smarty.class.php");
Class Smarty2_Extended exntends Smarty {
   function __construct() {
      $this->Smarty();
      $this->compile_dir = "yourpath/"; //path ใน Smarty ต้องปิดท้ายด้วย "/" เสมอ
      $this->cache_dir = "yourpath/";
   }
}

ส่วน Smarty3 ต้องใช้ parent::__construct();

require_once("Smarty.class.php");
Class Smarty3_Extended extends Smarty {
   function __construct() {
      parent::__construct();
      $this->compile_dir = "yourpath/";
      $this->cache_dir = "yourpath/";
   }
}

๐๔๗ | เพิ่มปุ่ม like และ comment ของ Facebook ใน WordPress

June 3rd, 2010

เปลี่ยนช่อง comment ไปใช้ของ FB โดยลง plugins facebook comment for wordpress หลังจากนั้นตั้งค่าใน settings ให้เรียบร้อย แล้วออกมาแก้ themes เพื่อเอาช่อง comment เก่าออก

ในไฟล์ comments.php ในโฟลเดอร์ theme ที่ใช้ mark ใต้ <div id=”respond”> จนถึงก่อน <?php else : ?> และ <p><textarea name=”comment”.. ถึง </form>

แค่นี้ก็จะไม่มีช่อง comment เก่าแสดงให้เห็น

เพิ่มปุ่ม like ในหน้า single.php (ในโฟลเดอร์ theme ที่ใช้) เอาโค้ด ไปวางตรงที่จะให้แสดงปุ่ม like

Code:
<iframe src=”http://www.facebook.com/plugins/like.php?href=<?php echo urlencode(get_permalink()); ?>&layout=standard&show-faces=true&width=530&height=30&action=like&colorscheme=light” scrolling=”no” frameborder=”0″ allowTransparency=”true” style=”border:none; overflow:hidden; width:530px; height:30px”></iframe>

ต่อไปวิธีเพิ่มปุ่ม like ในหน้า index.php (ในโฟลเดอร์ theme ที่ใช้) เอาโค้ดจากด้านบนวางตรงที่จะให้แสดงปุ่ม เช่น จะให้แสดงใต้ชื่อเนื้อหา แต่อยู่ก่อนเนื้อหาก็วางไว้ก่อน <div class=”entry”>

๐๔๖ | ส่งค่า object ข้ามไฟล์

June 2nd, 2010

ปัญหาการเขียน web App โดยใช้โมเดล MVC เจอปัญหาคือ หลังจากที่เรา select rows ใน Model แล้วเนี่ยจะส่งผ่าน Controller ไปให้ View ได้ยังไง? ยิ่งเขียนแบบ OO ต้องส่ง object ข้ามไฟล์เลยทีเดียว และยิ่งไปกว่านั้น app ผมเอา AJAX มาใช้ซะด้วยสิ

โดยใน app ของผมนี้หลังจาก query ออกมาเสร็จก็จับใส่ object เรียงต่อกันเป็น array แล้วก็ตัน..ไม่รู้ว่าจะเอา object พวกนี้โยนไปยังไง

หลังจากนั่งหาข้อมูล + งมอยู่หลายชั่วโมงก็สามารถแก้ปัญหาได้ ​โดย…

1. เอา array of object มา serialize
2. หลังจากนั้นโยนใส่ตัวแปร session เพื่อให้สามารถเห็นได้ทุกไฟล์
3. ไฟล์ที่ต้องการใช้ข้อมูล สมมติว่าเป็น view สามารถเอาค่าที่เก็บใน session ออกมา unserialize เพื่อให้กลายเป็น object เหมือนเดิมได้
4. หลังจากใช้เสร็จก็ unset session ซะ

สำหรับโค้ดก็จะหน้าตาประมาณนี้
การทำ serialize
$_SESSION[“arrayOfObj”] = serialize($arrayOfObj);

การทำ unserialize
$arrayOfObj = unserialize($_SESSION[“arrayOfObj”]);