1111111111111


เว็บใหม่ที่ผมขอใช้ฟรีครับ ภาวนาอยู่ว่าวันดีคืนดีข้อมูลคงไม่หายเหมือนเว็บอื่น

วันอังคารที่ 29 มีนาคม พ.ศ. 2554

ตัวอย่างการสร้าง widget ครับ




ขั้นตอนที่ 1. สร้างไฟล์ /components/BreadCrumb.php


class BreadCrumb extends CWidget {

public $crumbs = array();
public $delimiter = ' / ';

public function run() {
$this->render('breadCrumb');
}

}


ขั้นตอนที่ 2. สร้างไฟล์ /components/views/breadCrumb.php



วันเสาร์ที่ 26 มีนาคม พ.ศ. 2554

การใช้งาน Xampp เบี้องต้นครับ






พอดีไปเจอมาก็เลยขอนำมาฝาก



กูรู้เพียงว่า บาปมีจริง บุญมีจริง กูก็รู้เพียงแค่นี้


"บัณฑิต...นั้นแปลว่า ผู้รู้...
แต่กูนั้น ไม่ค่อยรู้...
รู้เพียงนิดหน่อย ในทางพระพุทธศาสนา...
กูรู้เพียงว่า บาปมีจริง บุญมีจริง กูก็รู้เพียงแค่นี้
"





หลวงพ่อคุณ


ผมขอคัดลอกมาจาก ท่านพระอาจารย์สุพันธ์ แก้วมงคล




วันพฤหัสบดีที่ 24 มีนาคม พ.ศ. 2554

ใครอยากเป็นตำรวจยกมือขึ้น

ส่วนนี้ผมใช้เป็นหน้าในการรวมข้อมูลการสอบตำรวจ ประจำปี 2554 นะครับ
สำหรับ เรื่อง รับสมัครและสอบแข่งขันบุคคลภายนอกผู้มีวุฒิปริญญาตรีเพื่อบรรจุและแต่งตั้ง เข้ารับราชการเป็นข้าราชการตำรวจชั้นสัญญาบัตร ประจำปี พ.ศ.๒๕๕๔ ของ สำนักงานเทคโนโลยีสารสนเทศและการสื่อสาร



รายละเอียดการสอบดูได้ที่ http://www.itc.police.go.th/

ถ้าผมมีข้อมูลอะไรเดียวจะเอามาฝาก แต่ตอนนี้ขอตั้งประเดินไว้ก่อน



วันจันทร์ที่ 21 มีนาคม พ.ศ. 2554

การแปลงข้อมุลให้เป็นแบบ JSON อย่างง่าย

JSON คือ ?

ตัวอย่างตารางในฐานข้อมูล


CREATE TABLE IF NOT EXISTS `tbl_cars` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`dealer_id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



ส่วนของ Class Controller ครับ

public function actionGetCar($id){
header('Content-type: application/json');

$car = Cars::model()->findByPK((int)$id);

echo CJSON::encode($car);

Yii::app()->end();
}

เวลาเรียกดูข้อมูลก็ประมาณ /index.php/cars/getcar?id=3 หรือ /cars/getcar/id/3 (แล้วแต่การตกแต่ง Url manaeger ครับ)
ผลลัพท์ที่ได้ก็จะเป็นเช่นฉะนี้

{"id":"3","dealer_id":"6","name":"honda"}







ผมคิดว่าในอนาคตเดียวเอาไปประยุกต์ใช้กับ Data Grid สวยๆ เช่น flexigrid.info ได้



อ้างอิง : http://learnyii.blogspot.com/2010/12/very-simple-json-api.html



วันจันทร์ที่ 14 มีนาคม พ.ศ. 2554

CButtonColumn หรือ ปุ่มที่เราเห็นกันตาม Grid view ครับ

CButtonColumn หรือ ปุ่มที่เราเห็นกันตาม Grid view



เช่น Delete view ครับ เรามาดูการตกแต่งปุ่มเบื้องต้นกันเถอะ
จาก


'buttonID' => array(
'label'=>'...', // ข้อความที่จะให้ปรากฏบนปุ่ม
'url'=>'...', // ลิ้ง Url
'imageUrl'=>'...', // ภาพที่ต้องการแสดง
'options'=>array(...), // HTML options สำหรับปุ่ม
'click'=>'...', // เมื่อกดจะให้ทำอะไร
'visible'=>'...', // กำหนดการเข้าถึงปุ่ม เช่นเฉพาะผู้ดูแลระบบเท่านั้น
)



(ตัวอย่าง) การใช้ Yii และ Active Record ครับ

(ตัวอย่าง) การใช้ Yii และ Active Record ครับ


โดยมีตารางดังนี้

ตาราง thai_district เก็บข้อมูลอำเภอ
ตาราง thai_province เก็บข้อมูลชื่อจังหวัด
ตาราง thai_slogan เก็บข้อมูลคำขวัญประจำจังหวัด และดอกไม้ประจำจังหวัด
โดยมีเงื่อนไขคือ 1 จังหวัดมี หลาย อำเภอ (ONE TO MANY) และ 1 จังหวัด มี 1 คำขวัญประจำจังหวัด (ONE TO ONE)




ตัวอย่าง :



ตัวอย่างการใช้ CDetailView ครับ

ตัวอย่างการใช้ CDetailView ครับ


$this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
'attributes'=>array(
array(
'name'=>'id', // แสดงเฉพาะผู้ดูแลลระบบเท่านั้น
'visible'=>Yii::app()->user->name=='admin'? true : false,
),
'firstname',
'lastname',
'birthyear',
'email:email',
'webpage:url', // กำหนดโดยใช้รูปแบบ CFormatter
'description:html', // แสดงแบบภาษา HTML เช่น ถ้ามี สวัสดี ก็จะเป็นตัวหนา
array(
'name'=>'travelDate', 'cssClassExpression' =>'gridD', 'type'=>'raw',
'value'=> 'DateThai($data->travelDate)', //เรียกใช้ Function อื่นๆ
),
array( // แสดงแบบลิ้งครับ
'label'=>'City',
'type'=>'raw',
'value'=>CHtml::link(CHtml::encode($model->city->name),
array('city/view','id'=>$model->city->id)),
),
array(
'name'=>'country_id',
'value'=>$model->country->name, // เรียกดูค่าใน Model อื่นๆ
),
array(
'name'=>'eyecolor_code',
'value'=>Lookup::item('eyecolor',$model->eyecolor_code),
),
'registered',
),
));




อ้างอิง : http://www.eha.ee/labs/yiiplay/index.php/en/person/view?id=1
อ้างอิง : http://www.yiiframework.com/doc/api/1.1/CDetailView/
อ้างอิง : http://www.yiiframework.com/doc/api/1.1/CFormatter



วันจันทร์ที่ 7 มีนาคม พ.ศ. 2554

เอี๋ยนหุยใฝ่ศึกษา มีคุณธรรมงดงาม เป็นศิษย์รักของขงจื้อ




    เอี๋ยนหุยใฝ่ศึกษา มีคุณธรรมงดงาม เป็นศิษย์รักของขงจื้อ มีอยู่วันหนึ่ง เอี๋ยนหุยออกไปทำธุระที่ตลาด เห็นผู้คนจำนวนมากห้อมล้อมอยู่ที่หน้าร้านขายผ้า จึงเข้าไปสอบถามดู จึงรู้ว่าเกิดการพิพาทระหว่างคนขายผ้ากับลูกค้า ได้ยินลุกค้าตะโกนเสียงดังโหวกเหวกว่า "3x8ได้ 23 ทำไมท่านถึงให้ข้าจ่าย24เหรียญล่ะ!"
    เอี๋ยนหุยจึงเดินเข้าไปที่ร้าน หลังจากทำความเคารพแล้ว ก็กล่าวว่า "พี่ชาย 3x8 ได้ 24 จะเป็น 23 ได้ยังไง? พี่ชายคิดผิดแล้ว ไม่ต้องทะเลาะกันหรอก"
คนซื้อผ้าไม่พอใจเป็นอย่างยิ่ง ชี้หน้าเอี๋ยนหุยและกล่าวว่า "ใครให้เจ้าเข้ามายุ่ง! เจ้าอายุเท่าไหร่กัน! จะตัดสินก็มีเพียงท่านขงจื้อเท่านั้น ผิดหรือถูกมีท่านผู้เดียวที่ข้าจะยอมรับ ไป ไปหาท่านขงจื้อกัน "
เอี่ยนหุยกล่าวว่า "ก็ดี หากท่านขงจื้อบอกว่าท่านผิด ท่านจะทำอย่างไร?"
คนซื้อผ้ากล่าวว่า"หากท่านวินิจฉัยว่าข้าผิด ข้ายอมให้หัวหลุดจากบ่า! แล้วหากเจ้าผิดล่ะ?"
เอี๋ยนหุยกล่าวว่า "หากท่านวินิจฉัยว่าข้าผิด ข้ายอมถูกปลดหมวก(ตำแหน่ง)"



วันพุธที่ 2 มีนาคม พ.ศ. 2554

ลายตากับ Mouse Over แล้วแถวเปลี่ยนสี ถ้างั้นมากำหนดสีพื้นให้กับ CgridView กันเถอะ

พอดีมี user คนมีอายุบอกผมให้เอาการการเปลี่ยนสีให้กับ CgridView ออก เพราะแกลายตา (ประมาณเอาเมาส์ไปวางใน CgridView ให้พื้นหลังแถวที่มีเมาส์วางอยู่บนแถวเป็นอีกสี Mouse Over) จึงไม่อยากให้เปลี่ยนสี ผมก็ไปปรึกษาโนบิตะได้ผลดังนี้ครับ


จาก


$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'gridLoanID',
'dataProvider'=>$model->searchGrid(),
'filter'=>$model,
'rowCssClassExpression'=>'$data->statusR=="อนุมัติ"?"row-commit":"row-wait"',
'columns'=>array(
.....
.....
'loanName', 'studentName'
.....
.....
), // end of columns
.....
.....
));


สังเกตุบรรทัดที่ 2. ผมใช้ 'id'=>'gridLoanID', ดังนั้นในไฟล์ css (screen.css) เราก็ใช้ #gridLoanID ดังนี้

#gridLoanID table.items tr:hover
{
background: #ECFBD4;
}


และถ้าอีกขั้นเนื่องจากแถวผมมี 2 แบบคือแถวรายชื่อนักเรียนที่ได้รับการอนุมัติทุน (row-commit) กับยังไม่ได้รับการอนุมัติทุน (row-wait) สังเกตุว่าผมกำหนดข้อมูลในส่วน rowCssClassExpression ดังนี้


....
....
'rowCssClassExpression'=>'$data->statusR=="อนุมัติ"?"row-commit":"row-wait"', //ถ้าไม่ใช้ก็เอาออกได้เลยครับ
....
....



วันอังคารที่ 1 มีนาคม พ.ศ. 2554

สำหรับท่านที่ต้องการอยากทดสอบ Yii framework ครับ

สำหรับท่านที่ต้องการอยากทดสอบ Yii framework ครับ
ตัวอย่างอยู่ที่ http://chawdoy.thport.com/thai/
แหล่งโหลดตัวอย่าง http://www.mediafire.com/?djr7u6ilnd6j5rw
ไฟล์ chawdoy.sql อยู่ในแพคแล้วนะครับ

ขั้นตอนติดตั้ง Copy ไปวางใน root ครับ
เช่น ผมติดตั้ง xampp ที่ c:\ ก็หาโฟล์เดอล์ htdocs
C:\xampp\htdocs

แล้วเอา ทั้งใน zip ไฟล์ไปวาง
C:\xampp\htdocs\framework
C:\xampp\htdocs\thai

หลังจาก start apache แล้วเวลาเรียกก็
http://127.0.0.1/thai



วันอาทิตย์ที่ 27 กุมภาพันธ์ พ.ศ. 2554

โปรแกรมเมอร์คนไทยแต่ชอบมีปัญหากับวันที่ภาษาไทย

หรือว่าผมแก่แล้วก็ไม่รู้นอนไม่ค่อยหลับครับ บังคับตัวเองนอนก็ใช้การไม่ได้ (ไม่หลับ) ใหนๆก็ไม่หลับ โปรแกรมที่รับมาพัฒนาก็ส่งงานเสร้จแล้ว ก็เลยมานั่งเขียน Blog ดีกว่า
ผมเอาคลาส Thaidate มาแนะนำอีกคลาสครับผมเคยแนะนำมาแล้ว 1 คลาส แต่ผมชอบแบบนี้มากกว่า




class Thaidate {


public static function DateThaiLong($strDate) {
if(!strtotime($strDate)) return "ไม่ระบุ";
try{
$strYear = date("Y",strtotime($strDate))+543;
$strMonth= date("n",strtotime($strDate));
$strDay= date("j",strtotime($strDate));
$strHour= date("H",strtotime($strDate));
$strMinute= date("i",strtotime($strDate));
$strSeconds= date("s",strtotime($strDate));
$full_month = array('','มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน',
'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม',
'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม'
);

$strMonthThai= $full_month[$strMonth];
if($strHour == 0 && $strMinute == 0 && $strSeconds ==0)
return "$strDay $strMonthThai $strYear";
else
return "$strDay $strMonthThai $strYear เวลา $strHour:$strMinute:$strSeconds น.";

}catch (Exception $e){
return "ไม่ระบุ";
}


}//end class



เวลาเอาไปใช้ก็



วันพฤหัสบดีที่ 24 กุมภาพันธ์ พ.ศ. 2554

ทำไมพระเจ้าถึงไม่สร้างฝนแถวตะวันออกกลาง ซึ่งต่างกับแถวเมซิโก

พึ่งรู้นะเนี้ย.. น่าจะจริงอย่างว่า



ทำไมต้องยอมแพ้ มนุษย์ขี้เหม็น (ขี้ตนเองตมทุกวันไม่พูดอะไร แต่ตดคนอื่นบอกว่าเหม็น)

ชายคนหนึ่งเพิ่งจะมาพูดได้ ตอนอายุ 4 ขวบ
ชายคนนั้น...เพิ่งจะมาอ่านหนังสือออกตอนอายุ 8 ขวบ
ชายคน นั้น...เคยถูกไล่ออกจากโรงเรียน
ชายคนนั้น...เคยถูกปฎิเสธจากโรงเรียนอาชีวะ แห่งซูริค
ชายคนนั้น...เคยถูกอาจารย์ระบุว่า "สมองช้า
ไม่ชอบสังคมและ ล่องลอยอยู่ในความฝันอันโง่เขลาของตัวเองตลอดเวลา"
ชายคนนั้น...ชื่อ "อัลเบิร์ต ไอสไตน์" บิดาแห่งปรมาณู



----------------------------------------------------------------
ชายคนหนึ่ง หลงใหลในคอมพิวเตอร์อย่างมาก
ชายคนนั้น...ชอบหมกตัวกับ คอมพิวเตอร์เป็นเวลานานๆ
ชายคนนั้น...ถูกเพื่อนมองว่า "สกปรก - บ้า คอมพิวเตอร์"
ชายคนนั้น...เคยเสนอซอฟแวร์ระบบให้กับ แอปเปิ้ล คอมพิวเตอร์
ชายคนนั้น...ถูกปฎิเสธอย่างไม่ใยดี
ชายคนนั้น...ปัจจุบัน คือผู้ให้การช่วยเหลือด้านเงินทุนกับ แอปเปิ้ลคอมพิวเตอร์
ชายคนนั้น...เคย ถูก ไอบีเอ็ม มองว่า "แค่เด็ก"
ชายคนนั้น...ปัจจุบันเป็นผู้นำบริษัทซอฟแวร์ ที่ทรงอิทธิพลมากที่สุดในโลก
ชายคนนั้น...ชื่อ วิลเลี่ยม เฮนรี่ เกตส์ ที่ สาม หรือที่รู้จักกันในนาม
"บิลล์ เกตส์" ผู้ก่อตั้งไมโครซอฟต์ มหาเศรษฐี อันดับหนึ่งของโลก
ผู้ถือครองสินทรัพย์กว่า 46,000 ล้านเหรียญ



วันจันทร์ที่ 21 กุมภาพันธ์ พ.ศ. 2554

การเพิ่มข้อมูล User โดยการสร้างคลาสที่ถ่ายทอดมาจาก CWebUser

การเพิ่มข้อมูล User โดยการสร้างคลาสที่ถ่ายทอดมาจาก CWebUser สามารถทำได้ดังนี้

1 ต้องมี User model (class User extends CActiveRecord) เก็บไว้ที่ protected/models/User.php


// this file must be stored in:
// protected/models/User.php

class User extends CActiveRecord
{
/**
* Returns the static model of the specified AR class.
* @return CActiveRecord the static model class
*/
public static function model($className=__CLASS__)
{
return parent::model($className);
}

/**
* @return string the associated database table name
*/
public function tableName()
{
return 'User';
}
}





วันอาทิตย์ที่ 20 กุมภาพันธ์ พ.ศ. 2554

การใช้ distinct (ของคำสั่ง SQL) ในคำสั่ง findAll()

ก่อนอื่นต้องขอทบทวนก่อนว่า distinct (ของคำสั่ง SQL) คือ คำสั่งที่ตัดค่าที่ซ้ำกันออกไป

การนำมาใช้ใน findAll() หรือ find*() (* หมายถึงอื่นๆนะครับ เช่น find(), findAll(), findByPk(), findAllByPk(), findByAttributes(), findAllByAtributes())


....
....
$models=Thai::model()->findAll(array(
'select'=>'province',
'distinct'=>true,
));
....
....

อีกรูปแบบของการใช้ distinct (ของคำสั่ง SQL) ด้วย CDbCriteria

....
....
$criteria=new CDbCriteria;
$criteria->distinct = true;
$criteria->compare('province', $this->province, true);
$criteria->order ='province DESC, ampur ASC';
....
....


นอกจากนั้น find*() ยังสามารถใช้คุณสมบัติของ



วันเสาร์ที่ 19 กุมภาพันธ์ พ.ศ. 2554

AjaxValidation with multiple models and one form

ประมาณ มีหลาย Model ที่จะทำการ ตรวจสอบข้อมูลของ Form


beginWidget('CActiveForm', array(
'id'=>'user-form',
'enableAjaxValidation'=>true,
)); ?>

Fields with * are required.



errorSummary($model); ?>



labelEx($model,'region_id');?>
textField($model,'region_id'); ?>
error($model,'region_id'); ?>




labelEx($acl,'userName'); ?>
textField($acl,'userName',array('size'=>20,'maxlength'=>25)); ?>
error($acl,'userName'); ?>


......


ในส่วน Action



การเรียกใช้เมนูตามสิทธิที่ได้ (ช่วงนี้เมืองไทยเรียกร้องสิทธิกันบ่อยต้องอินเทรนหน่อย)

การเรียกใช้เมนูตามสิทธิที่ได้ หมายถึงแสดงเมนูตามที่สิทธิของ user นั้นๆมี

ทบทวนกันหน่อย การกำหนดการเข้าใช้งาน Action ต่างๆกำหนดที่ Controller ถูกใหมครับ เช่น


class ReservationController extends Controller{
.....
.....
public function accessRules(){
return array(
array('allow',
'actions'=>array('view','create','update','index','print','report','department'),
'users'=>array('admin'),
),
array('allow',
'actions'=>array('view','index','email'),
'users'=>array('@'),
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
.....
.....
}


ด้านบนเป็นการกำหนดสิทธิการเข้าถึงหรือเข้าใช้งาน ถูกใหมครับ
'users'=>array('admin'), หมายถึงเฉพาะ admin
'users'=>array('@'), หมายถึงเฉพาะผู้ที่ login
'users'=>array('*'), หมายถึงใครก็ได้
จาก code ด้านบน

array('allow',
'actions'=>array('view','create','update','index','print','report','department'),
'users'=>array('admin'),
),


หมายถึง อนุญาติ (allow) ให้เฉพาะ admin เท่านั้นที่ 'view','create','update','index','print','report','department'

แต่ปัญหาที่ผมเจอคือเวลาแสดงใน view จะมีเมนูสำหรับ admin ทั้งๆที่ไช่ admin จึงได้ไปปรึกษาอิคคิวซังได้ผลมาดังนี้


การกำหนดเมนูโดยแสดงตามสิทธิของ user ขอย้ำว่าเป็นสว่นของเมนู



ตัวอย่างการค้นหาข้อมูลที่ส่งมาครับ

ตัวอย่างการค้นหาข้อมูลที่ส่งมาครับ

เช่นการค้นหา พนักงาน (Emplotee) ที่สังกัดคณะที่มี รหัlคณะ(facultyID) เท่ากับ ค่าที่ส่งมา $_GET['facultyID']


$client= Emplotee::model()->findByPk($_GET['facultyID']);


การค้นหาข้อมูล User จากค่าที่ส่งมา คือ $_GET['fname'] และ $_GET['flname'] ครับ