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

php-xml-edit-attribute

ไฟล์ edit-attribute.php
<?php
$sx = new SimpleXMLElement('./test.xml', null, true);
$sx->book[1]['id'] = 9;
$sx->asXML('./test.xml');
ไฟล์ test.xml
<?xml version="1.0" encoding="UTF-8"?>
<books>
   <book id="1">
        <author>AAA</author>
    </book>
    <book id="2">
       <author>BBB</author>
    </book>
</books>

วันอาทิตย์ที่ 9 กันยายน พ.ศ. 2555

php pdo

วิธีการใช้งาน php pdo แบบง่ายๆ ครับ php pdo class จะมีคำสั่งช่วยในการป้องกัน sql injection และคำสั่งการดึงข้อมูลที่หลากหลาย ช่วยให้สะดวกในการเขียนโปรแกรมติดต่อกับ database ครับ
/*
CREATE TABLE `tbcontact` (
        `id` INT(4) NOT NULL AUTO_INCREMENT,
        `name` VARCHAR(50) NULL DEFAULT NULL,
        PRIMARY KEY (`id`)
)
ENGINE=MyISAM
*/

//configuration
$dbname = 'test';
$user = 'root';
$pass = '';

try{
    //connect    
    $db = new PDO("mysql:host=localhost;dbname=$dbname;", $user, $pass, array(
        PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES UTF8'
    ));
}catch (Exception $e){
    echo 'error:'.$e->getMessage();
}

//insert
$stmt = $db->prepare('insert into tbcontact(name) values(:name)');    
$stmt->bindValue(':name','nobita');
$stmt->execute();

$info = $stmt->errorInfo();
if ($info[0]=='0000')
    echo 'no error';
else
    echo 'error: '.$info[2];

//select
echo '<hr /><h1>FETCH TO OBJECT</h1>';
$stmt = $db->query('SELECT id,name from tbcontact',PDO::FETCH_OBJ);
foreach($stmt as $row) {
    echo $row->id,'...',$row->name,'<br','>';
}

echo '<hr /><h1>FETCH TO ARRAY</h1>';
$stmt = $db->query('SELECT id,name from tbcontact',PDO::FETCH_ASSOC);
while($row = $stmt->fetch()) {
    echo $row['id'],'...',$row['name'],'<br','>';
}

echo '<hr /><h1>FETCH TO VARIABLE</h1>';
$stmt = $db->query('SELECT id,name from tbcontact',PDO::FETCH_BOUND);
$stmt->bindColumn('id',$id);
$stmt->bindColumn('name',$name);
while($row = $stmt->fetch()) {
    echo $id,'...',$name,'<br','>';
}

echo "column count = {$stmt->columnCount()}, row count= {$stmt->rowCount()}";

วันศุกร์ที่ 7 กันยายน พ.ศ. 2555

PHP Calendar Class

class Calendar{
    protected $time;
    protected $timezone;
    public $isLeapYear;
    public function __construct($year) {
        $this->timezone = new DateTimeZone('Asia/Bangkok');
        $this->time = DateTime::createFromFormat('Y-n-j', $year.'-1-1', $this->timezone);
        $this->isLeapYear = checkdate(2, 29, $this->time->format('Y'));
    }
    protected function getMonthFirstDay($month){
        $format = sprintf('%d-%d-1',$this->time->format('Y'),$month);
        return DateTime::createFromFormat('Y-n-j', $format, $this->timezone);
    }
    public function getMonthDays($month){
        $interval = DateInterval::createFromDateString('+1day');
        $time = $this->getMonthFirstDay($month);
        $a = array();
        while($time->format('n') == $month){
            $a[] = clone $time;
            $time->add($interval);
        }
        return $a;
    }
    public static function monthName($month){
        $a = array(1=>'มกราคม','กุมภาพันธ์','มีนาคม','เมษายน',
            'พฤษภาคม','มิถุนายน','กรกฎาคม','สิงหาคม','กันยายน'
            ,'ตุลาคม','พฤศจิกายน','ธันวาคม');
        return $a[$month];
    }
    public static function dayName(DateTime $date){
        $a = array('อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุกร์','เสาร์');
        return $a[$date->format('w')];
    }
}

header('Content-type:text/html;charset=utf-8');
#header('Content-type:text/html;charset=tis-620');
$c = new Calendar(2012);
echo '<h1>Calendar 2012</h1>';
foreach(range(1,12) as $month){    
    echo '<h2>',Calendar::monthName($month),'</h2>';
    foreach($c->getMonthDays($month) as $d){
        echo Calendar::dayName($d),' ',$d->format('j'),'<','br/>';
    }
}