31 สิงหาคม 2554

สร้าง Data Dictionary ด้วย Phpmyadmin

หลังจากโดน ผจก.สั่งให้ทำ Data Dict ซึ่งก็ลองเสริช หาวิธีทำใน Google ก็ได้พบกับวิธีทำโดยใ้ช้ Phpmyadmin ซึ่งง่ายมาก ๆ

วิธีการ คือ :

1. เวลาสร้างฟิวล์ ใด ๆ ในฐานข้อมูล ให้ใส่ Comment ไว้ด้วย



29 สิงหาคม 2554

Smary template แสดงข้อมูล จาก Database

หลังจากได้อ่านบทความต่าง ๆ ของ Smarty template ไปบ้างเล็ก ๆ น้อย ๆ วันนี้จะเป็นการนำข้อมูลจากฐานข้อมูลมาแสดง โดยการส่งข้อมูลออกมาเป็น Array

ซึ่งตัวอย่างในการใช้งานดังต่อไปนี้ :

- สร้างไฟล์ test_2.php ขึ้นมาโดยเขียนโค้ด ด้านล่างลงไป

<?php
require'libs/Smarty.class.php';

$hostname = 'localhost';
$database = 'phithan_appointment';
$user = 'root';
$pass = '';
$connection = mysql_connect($hostname, $user, $pass) or trigger_error(mysql_error(),E_USER_ERROR); //+ เชื่อมต่อฐานข้อมูล
mysql_select_db($database,$connection);
mysql_query("SET NAMES UTF8");

$sql = 'SELECT * FROM tbl_appointment LIMIT 20'; //+ เลือกมาแค่ 20 แถว
$rs_appointment = mysql_query($sql);

while($row_appointment = mysql_fetch_array($rs_appointment)){
$appointment[$row_appointment['app_id']] = $row_appointment['app_customer']; //+ ทำเป็น Array
}

$smarty = new Smarty();
$smarty->assign('appointment', $appointment);
$smarty->display('test_2.tpl'); //+ ส่งข้อมูลออกไปที่ test_2.tpl เืพื่อทำการแสดงข้อมูล
?>

- สร้างไฟล์ test_2.tpl ไว้ภายในโฟลเดอร์ templates แล้วเขียนโ้ค้ดด้านล่างลงไป

<html>
<head>
<title>Test Smary</title>
</head>
<body>
<table>
{foreach from=$appointment key=k item=i}
<tr><td>{$k}</td><td>{$i}</td></tr>
{/foreach}
</table>
</body>
</html>

* key เปรียบได้เป็น index ของ Array และ item คือ Value นั่นเอง


หรือจะเป็นการส่งข้อมูลจากฐานข้อมูลแบบหลาย ๆ คอร์ลัม ดังตัวอย่างด้านล่าง

- ไฟล์ test_2.php

<?php
require'libs/Smarty.class.php';

$hostname = 'localhost';
$database = 'phithan_appointment';
$user = 'root';
$pass = '';
$connection = mysql_connect($hostname, $user, $pass) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database,$connection);
mysql_query("SET NAMES UTF8");

$sql = 'SELECT * FROM tbl_appointment LIMIT 20';
$rs_appointment = mysql_query($sql);

while($row_appointment = mysql_fetch_array($rs_appointment)){
$appointment[$row_appointment['app_id']] ['app_customer'] = $row_appointment['app_customer'];
$appointment[$row_appointment['app_id']] ['app_register'] = $row_appointment['app_register'];
$appointment[$row_appointment['app_id']] ['app_check'] = $row_appointment['app_check'];
}

$smarty = new Smarty();
$smarty->assign('appointment', $appointment);
$smarty->display('test_2.tpl');
?>

- ไฟล์ test_2.tpl

<html>
<head>
<title>Test Smary</title>
</head>
<body>
<table>
{foreach from=$appointment key=k item=i}
<tr><td>{$k}</td><td>{$i.app_register}</td><td>{$i.app_customer}</td><td>{$i.app_check}</td></tr>
{/foreach}
</table>
</body>
</html>


เท่านี้ก็เป็นตัวอย่างเบื้องต้นสำหรับการนำข้อมูลจากฐานข้อมูลออกมาแสดงด้วย Smarty template ครับ !

26 สิงหาคม 2554

เริ่มต้นการใช้งาน Smary template !

ก่อนที่จะเริ่มต้นการใช้งาน ต้องไปทำการดาวน์โหลด Class มาใช้งานกันก่อนที่ http://www.smarty.net/ (Smarty-3.0.8)
หลังจากดาวน์โหลดมาแล้วทำการแตกไฟล์ออก ซึ่งภายในจะประกอบไปด้วย
- demo
- libs
- README
- SMARTY2_BC_NOTES
- COPYING.lib
- change_log.txt

โฟลเดอร์ที่สำคัญคือ libs ซึ่งภายในจะมี ไฟล์ Smarty.class.php ซึ่งจำเป็นต่อการใช้งาน ต่อไปก็เริ่มทำการทดสอบการใช้งานลองดูเลย

- ก็อบปี้ โฟลเดอร์ Smarty-3.0.8 ที่ได้หลังจากการแตกไฟล์ (ซึ่งผมตัดชื่อให้เหลือแค่ Smarty)ไปไว้ที่ เซิฟเวอร์จำลอง โฟลเดอร์ WWW
- สร้างไฟล์ test.php ไว้ภายในโฟลเดอร์ Smarty แล้วก็เขียนคำสั่งนี้ลงไป

<?php
require'libs/Smarty.class.php'; // แทรก Class Smarty ลงไป

class Contacts{
var $id = 1;
var $name = 'Chaiwit';
var $email = 'lionblue_wit_99 at hotmail dot com';
var $phone = '083-130-43xx';
}

$contacts = new Contacts;

$smarty = new Smarty();

$smarty->assign('title', 'Contact Detail'); // ตัวแปร, ค่าที่ส่งไป

$smarty->assign('contact',$contacts); // ตัวแปร, ค่าที่ส่งไป

$smarty->display('test.tpl'); // อ้างอิงการเรียกใช้งาน Template
?>

- สร้างโฟลเดอร์ templates เพื่ออ้างอิง Template ที่เราเรียกใช้จากไฟล์ test.php โดยในไฟล์ test.php เราเรียกใช้งานไฟล์ชื่อ test.tpl ฉะนั้นเราก็ต้องสร้างไฟล์ test.tpl เก็บไว้ในโฟลเดอร์ templates แล้วก็เขียนโค้ดนี้ลงไป

<html>
<head>
<title>{$title}</title>
</head>
<body>
{$contact->id}<br>
{$contact->name}<br>
{$contact->email}<br>
{$contact->phone}<br>
</body>
</html>

หมายเหตุ คำสั่ง $contact->id คือ คำสั่งที่ใช้แสดง property ค่าของ Class ที่เราส่งมา

หลังจากนั้นก็ทดลองรับ สคริป นี้ที่ http://localhost/smarty/test.php ก็จะได้ผลลัพย์ดังรูปด้านล่าง



* Smarty template case sensitive เรื่องการส่งตัวแปร ตัวอักษรเล็ก ตัวอักษรใหญ่

อ่านเนื้อหาเพิ่มเติมได้ที่ : http://www.phpeveryday.com/articles/Smarty-Template-Engine-Tutorial-P849.html


15 สิงหาคม 2554

ตัวอย่าง โค้ด เลือก ภาค จังหวัด อำเภอ ตำบล แบบต่อเนื่องกัน

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

ก่อนอื่นทำการโหลดคลาส mysql2json.class.php จาก

http://snipplr.com/view/18162/ หรือ
http://code.google.com/p/evalactisem/source/browse/trunk/www/library/php/mysql2json.class.php?spec=svn539&r=539

แล้วทำการเขียนไฟล์ ตัวอย่างเพื่อทำการ ดึง ภาค จังหวัด อำเภอ และตำบล

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){

$('#ddlGeo').change(function(){
$.ajax({
type: 'POST',
dataType: 'json',
url: "data.php",
data: {geo_id: $(this).val()},
success: function(data){

var opt = '<option value="0">-- เลือกจังหวัด --</option>';
for(var i =0; i<data.length; i++){
opt += '<option value="'+data[i].province_id+'">'+data[i].province_name+'</option>';
}
$('#ddlProvince').html( opt );

}
});

});

$('#ddlProvince').change(function(){
$.ajax({
type: 'POST',
dataType: 'json',
url: "data.php",
data: {province_id: $(this).val()},
success: function(data){

var opt = '<option value="0">--เลือกอำเภอ --</option>';
for(var i =0; i<data.length; i++){
opt += '<option value="'+data[i].amphur_id+'">'+data[i].amphur_name+'</option>';
}
$('#ddlAmphur').html( opt );

}
});

});

$('#ddlAmphur').change(function(){
$.ajax({
type: 'POST',
dataType: 'json',
url: "data.php",
data: {amphur_id: $(this).val()},
success: function(data){

var opt = '<option value="0">--เลือกตำบล --</option>';
for(var i =0; i<data.length; i++){
opt += '<option value="'+data[i].district_id+'">'+data[i].district_name+'</option>';
}
$('#ddldistrict').html( opt );

}
});

});

});
</script>
<title>ตัวอย่างโค้ด เลือก ภาค จังหวัด อำเภอ ตำบล </title>

<?php
$objConnect = mysql_connect("localhost","root","") or die("Error Connect to Database");
$objDB = mysql_select_db("geo");
@mysql_query("SET NAMES UTF8");
?>
</head>
<form name="frmMain" action="test.php" method="post">
ภาค :
<select id="ddlGeo" name="ddlGeo">
<option select value="0">-- เลือกภาค --</option>
<?
$strSQL = "SELECT * FROM geography ORDER BY geo_id ASC ";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
while($objResult = mysql_fetch_array($objQuery))
{
?>

<option value="<?=$objResult["geo_id"];?>"><?=$objResult["geo_name"];?></option>
<?
}
?>
</select>

จังหวัด :
<select id="ddlProvince" name="ddlProvince" style="width:120px">
<option value="0">--เลือกจังหวัด --</option>
</select>

อำเภอ :
<select id="ddlAmphur" name="ddlAmphur" style="width:200px">
<option value="0">--เลือกอำเภอ --</option>
</select>

ตำบล :
<select id="ddldistrict" name="ddldistrict" style="width:200px">
<option value="0">--เลือกตำบล --</option>
</select>
<input type="submit" name="button" id="button" value="Submit" />
</form>

</body>
</html>
<?
mysql_close($objConnect);
?>


ไฟล์ data.php เพื่อดึงข้อมูลออกมาแสดง

<?php
include('mysql2json.class.php'); //+ แทรกไฟล์ mysql2json.class.php เพื่อใช้งานคลาส

$objConnect = mysql_connect("localhost","root","") or die("Error Connect to Database");
$objDB = mysql_select_db("geo");
mysql_query("SET NAMES UTF8");

if($_POST['geo_id'] != ''){

$strSQL = "SELECT province_id, province_name FROM province WHERE geo_id = '".$_POST['geo_id']."' ORDER BY province_id ASC ";
$rs_province = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
$num = mysql_affected_rows();

$json = new mysql2json();
echo $json->getJSON($rs_province, $num);
}

if($_POST['province_id'] != ''){

$strSQL = "SELECT amphur_id, amphur_name FROM amphur WHERE province_id = '".$_POST['province_id']."' ORDER BY amphur_id ASC ";
$rs_amphur = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
$num = mysql_affected_rows();

$json = new mysql2json();
echo $json->getJSON($rs_amphur, $num);
}

if($_POST['amphur_id'] != ''){

$strSQL = "SELECT district_id, district_name FROM district WHERE amphur_id = '".$_POST['amphur_id']."' ORDER BY district_id ASC ";
$rs_district = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
$num = mysql_affected_rows();

$json = new mysql2json();
echo $json->getJSON($rs_district, $num);
}http://www.blogger.com/img/blhttp://www.blogger.com/img/blank.gifank.gif

?>

ฐานข้อมูล จังหวัดทั้งหมด จาก : http://www.thaicreate.com/free-web-script/thailand-province-database.html

และ http://www.thaicreate.com/community/dependant-listmenu-dropdownlist.html

อ่านเพิ่มเติมได้ที่เว็บ select2web.com : http://www.select2web.com/php/chain-select.html

1 สิงหาคม 2554

Javascript Trim ไม่มีให้ ก็หันมาใช้ Jquery Trim มันเสียเลย !

    หลังจากได้ทำการค้นหา คำสั่ง Trim ของ Javascript ทาง Google ตั้งนาน สองนาน แล้วไอ้ Javascript  ดันไม่ได้มี คำสั่งนี้เตรียมมาให้ใช้กันง่าย ๆ ซึ่งอยากจะใช้ก็ต้องเขียนมาเอง

    ผมก็เลยลองหาด้วยคำว่า Jquery Trim โอ๊ะแม่เจ้า Link แรกเลยครับ อุตส่าห์หาตั้งนาน ลองเอาฟังชั่นที่ท่านอื่น ๆ เขียนไว้มาลองตั้งนานสองนาน

    สรุปแล้ว Jquery มีเขียนไว้ให้ใช้กัน สั้น ๆ ง่าย ๆ เลยทีเดียวครับ !

    คำสั่ง Trim ของ Jquery  คือ  
    jQuery.trim('ข้อความ / ตัวแปรที่ต้องการตัด');
    หรือ
    $.trim('ข้อความ / ตัวแปรที่ต้องการตัด'); อย่างนี้ก็ได้

   คำสั่งง่าย ๆ ที่ผมไม่รู้ครับ !!!


ลิงค์ของ Jquery : http://api.jquery.com/jQuery.trim/