roteee's blog

ไม่ต้องการ render Layout และ/หรือ View ใน Zend Framework หรือ ZF

ในบางครั้งเราอาจไม่ต้องการ render view และ/หรือ layout เช่นกรณีเราทำ Ajax Controller ก็ไม่อยากจะแสดง layout รวม อยากแสดงแค่ json หรือ xml เราก็เซตได้ครับ ดังนี้ครับ
      $this->_helper->layout->disableLayout();
      $this->_helper->viewRenderer->setNoRender(TRUE);
โดยแป่ะไว้ที่ action เกี่ยวข้อง หรือ ไว้ใน init() ของ controller ที่เกี่ยวข้องก้ได้ แล้วแต่สะดวกครับ

Coding Standard

 ว่างๆ หรือวันไหนอากาศดีๆ ลองปรับตัวเอง ใส่ใจในการเขียน code มากขึ้นซักเล็กน้อย โดยยึดตามอันนี้ก็ได้ครับ

http://framework.zend.com/manual/en/coding-standard.coding-style.html

code เราจะได้สวยๆ และเวลาคนอื่นมาไล่ จะได้ไม่บ่นมาก :D นอกจากโปรแกรมจะมั่วแล้ว ก็อย่าให้ code มันมั่วมากนักเลย หุหุ

แล้วก็พยายามเลี่ยงเขียน html ปนเข้าไปใน php script (html ปนน้ะครับ ไม่ใช่ php embed ใน html อย่างหลังนี่เป็นเรื่องธรรมดา เวลาที่เราเขียนแบบ MVC แต่แบบ html ปนนี่ ... ดูยาก และแก้ยากชะมัด) เชื่อมั้ย ว่ายังมีคนเขียนปนอย่างนี้อยู่ :)

ลบข้อมูลจาก Spammers!

หลังจากไม่ได้ดูแล phpzealots มานานแสนนาน ก็กลายเป็นแหล่งเสื่อมโทรมจากพี่ๆ spammers วันนี้เลยจะมาลบข้อมูลขยะเหล่านั้นซะหน่อย

ในเบื้องต้นผมใช้ script นี้ครับในการ clear แต่ก็ยังลบไม่หมดหรอก คงต้อง manual อีกซักหน่อย เพราะว่าเยอะเหลือเกิน
<?php
  // ตารางที่มี field: uid
  $tables = array(
    'd_accesslog', 'd_authmap', 'd_blogapi_files', 'd_comments',
    'd_history', 'd_node', 'd_node_revisions', 'd_poll_votes',
    'd_profile_values', 'd_sessions', 'd_userpoints',
    'd_userpoints_txn', 'd_users', 'd_users_roles',
    'd_users_signature', 'd_user_postcounts', 'd_user_titles_posts',
    'd_watchdog',
  );
 
  mysql_connect('localhost', 'xxx', 'xxx') or die(mysql_error());
  mysql_select_db('xxx');
 
  $uids = array();
  for ($uid = 5000; $uid <= 10000; $uid++) {
    $uids[] = $uid;
  }
  foreach ($tables as $tab) {
    $delCmd = 'DELETE FROM ' . $tab . ' WHERE uid IN (' . implode(',', $uids) . ') ';
    @mysql_query($delCmd);
    echo $delCmd . ' done' . "\n";
  }
  mysql_close();
?>

Convert Exif 'GPSLatitude' และ 'GPSLongitude' เป็น lat, lng เพื่อ นำไปปักหมุดใน Google Maps

 

    $rawExif = exif_read_data($imgName);
    if( isset($rawExif['GPSLatitude']) )
    {
      eval('$degree = $rawExif["GPSLatitude"][0];');
      eval('$mins   = $rawExif["GPSLatitude"][1];');
      eval('$secs   = $rawExif["GPSLatitude"][2];');
      $lat = $degree + ( $mins / 60 ) + ( $secs / 3600 ); 
      if( $rawExif['GPSLatitudeRef'] == 'S' )
      {
        $lat = (-1) * $lat;
      }

      eval('$degree = $rawExif["GPSLongitude"][0];');
      eval('$mins   = $rawExif["GPSLongitude"][1];');
      eval('$secs   = $rawExif["GPSLongitude"][2];');
      $lng = $degree + ( $mins / 60 ) + ( $secs / 3600 ); 
      if( $rawExif['GPSLongitudeRef'] == 'W' )
      {
        $lng = (-1) * $lng;
      }
      
      echo "$lat, $lng";
    }

 

อ้างอิง: http://andrew.hedges.name/experiments/convert_lat_long/

จะเช็คว่า checkbox ถูกติ๊กหรือยังได้อย่างไร ใน jquery

เห็นว่าเป็นประโยชน์ เลยเอามา blog ไว้สักหน่อย จะได้เอาไว้เตือนความจำ :)

// First way
$('#checkBox').attr('checked');

// Second way
$('#edit-checkbox-id').is(':checked');

// Third way for jQuery 1.2
$("input[@type=checkbox][@checked]").each(
    function() { 
       // Insert code here 
    } 
);
// Third way == UPDATE jQuery 1.3
$("input[type=checkbox][checked]").each( 

    function() { 
       // Insert code here 
    } 
);

 

 

การตั้งชื่อตาราง ???

ตอนนี้คุณตั้งชื่อตารางของคุณอย่างไร??? province หรือ provinces ???

ผมสงสัยตัวเองทุกครั้งที่จะตั้งชื่อตาราง แต่ว่าก็ยังไม่เคยได้ข้อสรุปซักที ว่าจะ province หรือ provinces ทำให้ใน database ของผมก็จะมีทั้ง province และ provinces (คือบางตารางเติม s บางตารางไม่เติม s) วันนี้ก็เลยลองถามเพื่อนๆ ซิว่า เขาตั้งยังงัยกัน

ถามไปถามมา บางคนก็ province บางคนก็ provinces อยู่ดี ... จึงไปคุยกับ tongdee แล้ว tongdee ก็ไป google ดู ... อ้าว เจอเข้าจังๆ ที่: http://www.ss64.com/orasyntax/naming.html
Table names are plural, field name is singular*
If the table name contains serveral words, only the last one should be plural:
APPLICATIONS
APPLICATION_FUNCTIONS
APPLICATION_FUNCTION_ROLES

สรุป: หลักสากลนิยม เขาจะตั้งเป็น: field province_id ในตาราง provinces :)

**จบ**


Zend_Acl - การใช้งานเบื้องต้น

Zend_Acl เป็น component สำหรับเอาไว้จัดการ การควบคุมการเข้าถึงข้อมูล (ผมพยายามแปลมาจาก ACL - Access Control List) อธิบายง่ายๆ คือเอาไว้คุมระดับของการใช้งาน insert/update/delete (หรืออื่นๆ) ข้อมูลนั่นเอง

ตัวอย่างเช่น Administrator ใช้งานหน้า admin สามารถ insert/update/delete ได้ทุกอย่าง, นาย A สามารถ insert/update/delete ข่าวได้อย่างเดียว และนาย B สามารถ insert/update/delete ข้อมูลสินค้าได้อย่างเดียว เป็นต้น

หรืออีกตัวอย่าง ถ้าเป็นกรณี Blogging service คุณเจ้าของ blog สามารถ read/write/publish/edit/delete blog ของตัวเองได้ และ guest (คนทั่วไป) สามารถ read ได้อย่างเดียว เป็นต้น

เหล่านี้เขาเรียกว่า ACL - Access Control List

ใน Zend_Acl ก็จะเกี่ยวข้องกับ 2 สิ่ง ได้แก่:

Smarty หรือ Zend_View ?

บทความเดิม บทความแรกๆ ที่ผมเขียนเกี่ยวกับการนำ Smarty มาใช้ร่วมกับ Zend Framework

แต่หลังจากที่ผมไ ด้ลองใข้ Zend_View ซักระยะนึง ขออนุญาต แสดงความคิดเห็นต่อคำถามที่ว่า "จะใช้ Smarty หรือ Zend_View ดี?" ซักเล็กน้อย

ความเห็นส่วนตัวน้ะครับ ถ้าใครที่ไม่เคยใช้ Smarty (หรือใช้แต่ยังไม่ติด) ก็ลองใช้ Zend_View ไปเลยก็น่าจะดีน้ะ เพราะว่าจะได้ไม่ต้องศึกษาและใช้ libs หลายเจ้า หรือถ้าอยากหัดใ:ช้ Smarty อันนั้นก็คงไม่ว่ากัน

PDT - PHP Development Tools

 

จากบทความเดิม "การตั้งค่าสำหรับการพัฒนาโปรแกรมด้วย PHP" ของคุณ overbid เขียนไว้ละเอียดดีทีเดียว โดยส่วนตัวผมได้ลองใช้ Eclipse PDT แล้วชักติดใจ โดยเฉพาะ ถ้าเขียนโปรแกรมแบบ OO แล้วช่วยได้เยอะมากๆ เลยอยากจะมาชวนให้มาลองใช้กัน (ใช้แล้วอาจจะลืม EditPlus ไปเลยก็ได้น้ะ :-)

ไม่รู้จะ blog อะไร ... เหนื่อย

เหนื่อยๆๆๆ ไม่เคยเหนื่อยยังงี้มาก่อนเรย หรือว่าแก่แล้วก็ไม่รุ๊ หุหุ


©2007-2010 PHPZealots.com. All right reserved.
Syndicate content