รับเขียน php asp.net jsp vb c# c sharp vb.net mysql Java Oracle SQLServer SQL SERVER visual basic xml Access excel j2me j2ee asp BPEL crm CRYTRAL REPORT database erp mrp mlm โปรเจค โปรแกรมนักศึกษา บริษัท งานด่วน งานเร่ง ทุกชนิด

Posted April 2, 2010 by pyayam
Categories: php

Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

http://www.siamwebcity.com
รับเขียน php asp.net jsp vb c# c sharp vb.net mysql  Java  Oracle SQLServer SQL SERVER visual basic xml  Access excel j2me j2ee asp BPEL crm CRYTRAL REPORT  database erp mrp  mlm  โปรเจค โปรแกรมนักศึกษา บริษัท งานด่วน งานเร่ง ทุกชนิด

+ บริการของเรา
รับเขียน php asp.net jsp vb c# c sharp vb.net mysql  Java  Oracle SQLServer SQL SERVER visual basic xml  Access excel j2me j2ee asp BPEL crm CRYTRAL REPORT  database erp mrp  mlm ทำ
basic xml ทำเว็บไซต์ บริษัท รับทำเว็บไซต์ บริษัทออกแบบเว็บไซต์ ระบบ mlm รับทำเว็บ รับทำเว็บไซต์ รับทำเว็บไซต์ครบวงจร รับทำโปรเจค รับทำโปรเจคจบนักศึกษา รับสร้างเว็บไซต์ รับสอนสร้างเว็บไซต์ รับเขียนเว็บ รับเขียนเว็บไซต์ รับเขียนโปรแกรม รับเขียนโปรแกรม JAVA สร้างเว็บไซต์ ออกแบบ database เขียน mysql เขียน php เขียนระบบ เขียนเว็บ เขียนเว็บไซต์ เขียนโปรเจ็คนักศึกษา โปรเจคนักศึกษา  database data mining, data warehouse, flash photoshop

เราเขียนโปรแกรมด้วย กึ๊น ยิ้ม
เสร็จตรงเวลา

ท่านใดสนใจกรุณาส่งระบบงานที่ท่านต้องการมาได้ที่
Email & MSN: admin@siamwebcity.com
Skype: SiamWebCity.com
โทร 089-179-0714 นัท
Website: http://www.siamwebcity.com http://www.webUB.com
http://www.Pyayam.com http://www.Sookna.com http://www.9go.in
Blog: http://siamwebcity.blogspot.com http://siamwebcity.wordpress.com

php & oracle ให้อ่านภาษาไทยได้

Posted April 2, 2010 by pyayam
Categories: php

Tags: ,

สำหรับท่านที่พัฒนา Web Application ด้วย PHP กับ Oracle Database โดยที่ Character Set ของ Database ไม่ใช่ US7ASCII หรือ WE8ISO8859P1 นั้น บางท่านอาจเคยเจอปัญหาว่า ตอนที่ดึงข้อมูลจาก Database แทนที่จะได้เป็นข้อมูลที่เราต้องการ กลับได้เป็น ‘?????’ แทน แล้วเราจะแก้ไขได้อย่างไร

Problems

เนื่องด้วย ในการติดต่อใช้งาน Oracle Database นั้น ทั้งฝั่ง Server และ Client ต้องมีการกำหนด การใช้งาน Character Set ให้ตรงกัน ถ้ามีการกำหนดไม่ตรงกัน ก็จะทำให้ขั้นตอนการ encode มีความผิดพลาด ซึ่งก็จะได้เป็น “??” อย่างที่เราเห็นกัน

Solutions

1. Check current database character set

    ตรวจสอบกันก่อนว่า Database ที่เราต้องการทำงานด้วย มีการเลือกใช้ Character Set เป็นอะไร โดยการใช้ SQLPLUS ดังนี้

    SQL> select * from nls_database_parameters

    2 where parameter = ‘NLS_CHARACTERSET’;

    PARAMETER VALUE

    —————– ——————

    NLS_CHARACTERSET TH8TISASCII

    SQL>

    จากตัวอย่างด้านบนจะเห็นว่า Database ที่เราทำงานอยู่ด้วยนั้น มีการกำหนด Character Set เป็น TH8TISASCII

2. Setting NLS Environment on Client Side

    เมื่อรู้แล้วว่า Database ที่เราทำงานอยู่ใช้ Character set อะไร เราก็ต้อง Set environment ของ ฝั่ง client ให้ตรงกัน

    โดยกำหนดตัวแปร NLS_LANG ในส่วนของ Character ให้ตรงกับ Database ที่เราทำงานด้วย เช่น Database เราใช้ Character Set เป็น TH8TISASCII เราก็ควรกำหนด

    NLS_LANG=THAI_THAILAND.TH8TISASCII

    หรือ

    NLS_LANG=AMERICAN_AMERICA.TH8TISASCII

ซึ่งก็อาจทำได้หลายวิธีด้วยกัน

    1. Set environment ที่ระดับของ Web Server ที่เราทำงานด้วย ถ้าท่านพัฒนาอยู่บน Apache เราก็กำหนดที่ httpd.conf โดยเพิ่มบรรทัดด้านล่าง

      SetEnv NLS_LANG AMERICAN_AMERICA.TH8TISASCII

      Sample configuration file

  1. 2.1 Web Server Environment Setting

    2.2 Inside Programming Code Setting

ระบุ Environment ใน Source Code ของ PHP

ตัวอย่างการใช้งาน

putenv(“ORACLE_SID=ZEAL”);

putenv(“ORACLE_HOME=/Oracle/Ora81”);

putenv(“NLS_LANG=AMERICAN_AMERCIA.TH8TISASCII”);

..

?>

See also:
1. Oracle8i National Language Support Guide, Release 2 (8.1.6) Part No. A76966-01 Oracle Corporation

You can download from http://otn.oracle.com.

2. NLS Setting for Oracle Environment (fuju at exzilla dot net)

อ้างอิงจาก : http://www.exzilla.net/docs/php-oci8/php-oracle-nls.php

php connect กับ oracle

Posted April 2, 2010 by pyayam
Categories: Uncategorized

Tags: , ,

1. ก็ต้องมี ฐานข้อมูล Oracle ก่อน
2. สำหรับการติดตั้ง oci8 สำหรับออราเคิลนั้น ขอให้ทำการติดตั้งตามคำแนะนำที่ http://www.oracle.com
โดยทำการติดตั้ง instantclient (หรือถ้าเครื่องดังกล่าวลงออราเคิลเซอร์เวอร์ไว้ก็ไม่จำเป็น) เสียก่อน
3. Config php.ini ตรง extension = php_oci8.dll
4. การติดตั้ง oci8 บนวินโดวส์นั้น เมื่อปลดคอมเมนต์ออกจากบรรทัด extension=php_oci8.dll แล้ว
และติดตั้ง Oracle Client หรือ Instant Client แล้ว อย่าลืมเซ็ต system environment ดังนี้
LD_LIBRARY_PATH เป็นไดรฟ์และไดเรกตอรีที่ติดตั้งเช่น C:\ORACLE
ORACLE_HOME C:\ORACLE (หรือไดเรกตอรีที่ติดตั้งอื่นใด)
NLS_LANG ระบบภาษาที่ใช้เช่น THAI_THAILAND.TH8TISASCII เป็นรหัสสมอ 8 บิต (TIS-620)
LD_PRELOAD C:\ORACLE (หรือไดเรกตอรีที่ติดตั้งอื่นใด)
เพิ่มไดเรกตอรีของ instantclient นี้ลงใน PATH ของ system environment
ถ้ารีสตาร์ทเซอร์วิสแล้วใน phpinfo ยังไม่ปรากฏ oci8 ให้ลองก็อปปี้ไฟล์ oci.dll
ไปวางที่ C:\WINDOWS\SYSTEM32 และอาจจะลองก็อปปี้ไฟล์ oci.dll, oraocci10.dll และ oraociei10.dll
ไปวางไว้ที่ไดเรกตอรี \ext หรือที่ php5/php ซึ่งเป็นที่วางไฟล์ของ php หรือ extension ของ php แล้วทดลองรีบูตเครื่องใหม่

ชุดคำสั่งการติดต่อฐานข้อมูล
Oracle $resource = oci_connect(‘รหัสชื่อผู้ใช้’,’รหัสผ่าน’,’รายละเอียดการเชื่อมต่อฐานข้อมูล’);
$resource = oci_new_connect(‘รหัสชื่อผู้ใช้’,’รหัสผ่าน’,’รายละเอียดการเชื่อมต่อฐานข้อมูล’);
$db = “//123.456.789.123:1521/DATABASE_SID.DATABASENAME”;
$c1 = oci_connect(“scott”, “tiger”, $db);
?>
Code

ตัวอย่าง การ Query ของ Oracle

read(100)."
";  //this will output first 100 bytes from LOB
}
?>

สำหรับคำสั่งอื่น ๆ สามารถอ่าน Document ของ php 5 ได้ที่ www.php.net
keyword index , oci

การประกาศฟังก์ชัน

Posted April 2, 2010 by pyayam
Categories: php

Tags:

FUNCTION ใช้ในการเขียนชุดคำสั่งเอาไว้เรียกใช้

โดยการประกาศฟังก์ชันมีรูปแบบดังนี้
function functionname([argument1,argument2,..]) { command; }
functionname เป็นชื่อที่ตั้งขึ้นสำหรับเรียกใช้ฟังก์ชัน
argument1,argument2,… ตัวแปรชนิดต่าง ๆ ใช้สำหรับรับข้อมูลเข้ามาประมวลผล และส่งกลับไป
command คำสั่งภายในฟังก์ชัน

ตัวอย่างการเขียนชุดคำสั่งไว้เรียกใช้งาน

<?php
function multi($a,$b){
require $a * $b;
}

echo multi(10*20); //การเรียกใช้งาน
?>

จะเห็นได้ว่าเรามีการสร้างฟังก์ชัน ชื่อ multi ไว้สำหรับคูณตัวเลข 2 จำนวนเข้าด้วยกัน

การกำหนดค่าดีฟอลต์ของฟังก์ชัน

เราสามารถกำหนดค่า default ของ argument ในฟังก์ชันได้ด้วย วิธีการใช้
function([argument1=default,argument2=default,..]) { command ;}

<?php
function a_add_b($numa=1,$numb=2)
{ $sumofab=$numa+$numb;
return $sumofab;
}

$numa=5;
$numb=10;
echo “ผลรวมของ $numa และ $numb คือ “.a_add_b($numa,$numb).” <br>\n”;
echo “หากไม่ส่งค่าไปในฟังก์ชันจะได้ผลลัพธ์เป็น “.a_add_b().” <br>\n”;
?>

ขอบเขตของตัวแปร

ปกติแล้วตัวแปรที่ประกาศไว้ภายในกับภายนอกฟังก์ชันจะมีข้อมูลที่แตกต่าง ถึงแม้ว่าจะมีชื่อเหมือนกัน
เพราะ php ถือว่าเป็นตัวแปรคนละตัวกัน และตำแหน่งในหน่วยความจำคนละที่กัน

แต่เราสามารถทำให้ตัวแปรนั้น ๆ เป็นตัวเดียวกันได้โดยการประกาศ
global var1,var2,var…; ไว้ในฟังก์ชัน

<?php
function sumofab($numa,$numb)

{ global $numa,$numb;
$sumab2=$numa+$numb;
$numa = $numa+5;
$numb = $numb+5;
return $sumab2;
}

$numa=3;
$numb=2;
echo ” \$numa มีค่า คือ $numa <br>\n”;
echo ” \$numb มีค่า คือ $numb <br>\n”;
echo “ผลรวมของ \$numa=$numa กับ \$numb=$numb คือ “.sumofab($numa,$numb).”
\n”;
echo “ค่าของ \$numa หลังจากใช้ฟังก์ชันคือ $numa <br>\n”;
echo “ค่าของ \$numb หลังจากใช้ฟังก์ชันคือ $numb <br>\n”;
?>

ซึ่งการทำวิธีนี้ทำให้ตัวแปรทั้งภายในและภายนอกฟังก์ชันเป็นตัวเดียวกั

การเขียน PHP ติดต่อกับ MySQL และ OOP เบื้องต้น

Posted April 2, 2010 by pyayam
Categories: php

Tags: , , ,

PHP & MySQLPart 1 พัฒนาเว็บไซต์ : การเขียน PHP ติดต่อกับ MySQL และ OOP เบื้องต้น

ช่วงนี้กำลังพัฒนาโมดูลของการเปลี่ยนธีมของทางเว็บไซต์ที่ดูแลอยู่เลยไม่ได้เขียน blog ต่ออยู่หลายวันครับ
หลังจากกลับมาจาก fitness เพิ่งมีเวลาว่างมานั่งเขียน blog วันนี้ลืมกางเกงไว้ที่ fitness ด้วย แย่จริงๆ Y-Y ไม่รุหายไปรึยังครับ ต้องโทรไปถามเค้าพรุ่งนี้

แต่ยังไงก็ blog มันยังร้างๆอยู่น่ะ ไม่ได้เขียนต่อคงไม่มีปัญหา แหะๆ ก็เพิ่งเริ่มทำเรื่องปกติครับต้องใจเย็นๆ เหมือนเว็บไซต์ที่เราจะพัฒนานี่แหละครับ ช่วงที่ยากที่สุดจะอยู่ที่ช่วงของการโปรโมทเว็บไซต์ ซึ่งต้องหาทางเพิ่ม traffic เข้ามาที่เว็บไซต์เรามากๆ ช่างมันไปก่อน มาดูที่เรื่องที่เราจะทำตอนนี้ครับ

Class เริ่มต้นที่เราจะเขียน คือ Class connection

class connection
{

function openConnection() // เปิดการเชื่อมต่อกับ MySQL
{
mysql_connect(‘localhost’, ‘username’, ‘password’) or die(‘Could not connect: ‘ . mysql_error());
}

function closeConnection() // ปิดการเชื่อมต่อกับ MySQL

{
mysql_close();
}

function select_onlineshop_db() // เลือกฐานข้อมูลที่ต้องการเชื่อมต่อ
{
mysql_select_db(“onlineshop”) or die(“Cannot select database.”);
mysql_query(“SET character_set_results=’utf8′”);
mysql_query(“SET character_set_client=’utf8′”);
mysql_query(“SET character_set_connection=’utf8′”);
mysql_query(“collation_connection = utf8_general_ci”);
mysql_query(“collation_database = utf8_general_ci”);
mysql_query(“collation_server = utf8_general_ci”);
}
}

Class เริ่มแรกสุดที่เราเขียนขึ้นเพื่อใช้ติดต่อกับฐานข้อมูลที่เราสร้างขึ้นในฉบับก่อนนะครับ

เวลาเราเรียกใช้งานใน code PHP จะเป็น ดังนี้

$connObj = new connection(); // สร้าง instance ของ object ของ class connection บรรทัดนี้ตัวแปร $connObj คือ สิ่งที่เรียกว่า instance ของ object ของ class connection

$connObj->openConnection(); // เมื่อ $connObj คือ instance ของ object ของ class connection ดังนั้นตัวแปรนี้สามารถเรียกใช้งานฟังก์ชั่นที่ประกาศภายใน class connection ได้ บรรทัดนี้จึงเป็นคำสั่งเปิดเชื่อมต่อกับ MySQL username กับ password ที่ ฟังก์ชั่น ตอนนี้ให้ใช้ username : root และ password : ****** ที่ตั้งตอน install appserv ไปก่อนครับ เนื่องจากใช้เป็นตัวพัฒนา แต่ถ้าหาก เอาขึ้นจริงๆควรสร้าง user ที่ฐานข้อมูลใหม่อีก user หนึ่งครับ ซึ่งจะอธิบายในภายหลัง

$connObj->select_onlineshop_db(); // เมื่อเชื่อมต่อแล้ว คำสั่งนี้เป็นคำสั่งเลือกฐานข้อมูลที่เราต้องใช้งานซึ่งก็คือ ฐานข้อมูลชื่อ onlineshop ที่เราสร้างไว้ที่ฉบับก่อนนะครับ

คำสั่ง 3 คำสั่งข้างต้นนี้ใช้ในการเปิดการเชื่อมต่อกับฐานข้อมูลที่เราสร้างไว้

นำโค้ดข้างต้นนี้ใส่ไว้ในไฟล์ชื่อ connectionClass.php ใส่ไว้ใน folder สร้างใหม่ชื่อ class ภายใต้ folder BJDev จากนั้นสร้างไฟล์ชื่อ allClass.php ภายในไฟล์นี้จะเป็นที่บรรจุรวมของ class ทั้งหมดที่เราจะสร้างต่อไปโดยมี code ดังนี้

allClass.php
<?php
require “connectionClass.php”;
?>

จากนั้นกลับมาที่ไฟล์ session.php ยังจำกันได้นะครับให้ใส่ code เพิ่มเติมลงไป

ob_start();
session_start();
require “class/allClass.php”; // บรรทัดที่เพิ่มลงไป

ทีนี้ที่ index.php ที่เป็นหน้าแรกของร้านค้าก็จะมี class connection ไว้ใช้งานแล้วครับ สังเกตการต่อยอดของไฟล์ครับ

connectionClass.php -> allClass.php -> session.php -> index.php โดยใช้คำสั่ง require จะได้กระจ่างขึ้นครับ

คำถามว่าทำไมต้องทำแบบนี้?
ยกตัวอย่าง สมมติว่าเรา สร้างไฟล์ตระกร้าสินค้ามา อีก 1 ไฟล์ชื่อ cart.php
เราจะทำอย่างไรให้ cart.php มี class connection ที่เชื่อมต่อ DB มาใช้งานอีกในไฟล์นี้ เราแค่
require “session.php” ลงไปที่ cart.php เพียงคำสั่งเดียวก็ใช้ได้เลย ไม่จำเป็นต้องมาเขียนซ้ำอีกใน cart.phpถ้าต้องการแก้คำสั่ง ใน connection class เราก็แก้ที่เดียวที่ connectionClass.php ไม่ต้องตามไปแก้ทุกไฟล์ที่เรียกใช้มัน แต่ก็เป็นรูปแบบส่วนตัวของแต่ละคนด้วยครับ ไม่เหมือนกัน 100 คนเขียนโปรแกรมออกมาได้ 100 รูปแบบ ไม่ซ้ำกันขึ้นอยู่กับแนวคิดและ algorithm ส่วนบุคคลครับ

มาถึงตรงนี้ขอเกริ่นเรื่องของ OOP – object oriented programming หรือภาษาไทยเรียกว่า การเขียนโปรแกรมเชิงวัตถุ จำไว้ 3 คุณสมบัติหลักของ OOP
1. encapsulation
2. inheritance
3. polymorphism

3 ตัวนี้เป็น แกนหลักของการเขียนโปรแกรมแบบ OOP ครับ

encapsulation – บรรจุอยู่ภายใน? ลักษณะที่บรรจุตัวแปรและฟังก์ชั่นต่างๆไว้ภายใน class และบังคับการใช้งานตัวแปรและฟังก์ชั่นนั้นๆภายในให้เป็นไปอย่างถูกต้อง เทียบกับ connection class ที่เขียนไว้ข้างต้นครับ สิ่งที่บรรจุอยู่ภายใน คือ ทั้ง 3 function ที่อยู่ภายใน class ในที่นี้ยังไม่มีการสร้างตัวแปรครับ

ยกตัวอย่างเทียบกับ รถยนต์ ตัวอย่างนี้ผมได้มาจากรุ่นพี่ของผมคนหนึ่งครับเห็นว่ามันเข้าใจง่ายดี
เราจะเขียนโปรแกรมการทำงานของรถยนต์ครับ
1. class รถยนต์ มี function ขับรถ อยู่ 1 function บรรจุอยู่
2. class รถยนต์เกียร์ธรรมดา มี function เข้าเกียร์กระปุก 1 function บรรจุอยู่
3. class รถยนต์เกียร์ออโต้ มี function เข้าเกียร์ออโต้ อยู่ 1 function บรรจุอยู่
ลักษณะการบังคับใช้งานให้ถูกต้องเป็น ดังนี้ ครับ
class รถยนต์เกียร์ธรรมดา จะไม่สามารถใช้ function เกียร์ออโต้ ได้
class รถยนต์เกียร์ออโต้ จะไม่สามารถใช้ function เกียร์ธรรมดา ได้
เริ่มจะเข้าใจคำนี้นะครับ encapsulation

inheritance – คุณสมบัติการสืบทอดจาก class แม่สู่ class ลูก ยกตัวอย่างเดิมครับ

1. class รถยนต์ เป็น Class แม่
2. class รถยนต์เกียร์ธรรมดา เป็น Class ลูก
3. class รถยนต์เกียร์ออโต้ เป็น Class ลูก

1 –> 2
1 –> 3

Class ลูกทั้ง 2 สามารถใช้ function ของ class แม่ได้ซึ่งก็คือ ทั้งเกียร์กระปุกและเกียร์ออโต้สามารถใช้ function ขับรถซึ่งมีอยู่ใน class แม่ได้ นี่เป็นคุณสมบัติสืบทอด

polymorphism – คุณสมบัติ หลายรูปร่าง poly – หลากหลาย, morphism – รูปร่าง อธิบายยาก ยกตัวอย่างเลยครับ เหมือนเดิม

1. class รถยนต์ เป็น Class แม่
2. class รถยนต์เกียร์ธรรมดา เป็น Class ลูก
3. class รถยนต์เกียร์ออโต้ เป็น Class ลูก

จาก class แม่รถยนต์ แยกออกมาเป็น รถยนต์เกียร์ออโต้ รถยนต์เกียร์ธรรมดา ต่อไปอาจจะมีเพิ่มเป็น รถยนต์เกียร์คอมพิวเตอร์ รถยนต์เกียร์ดิจิตอล etc… หลากหลายไม๊ครับ ประโยชน์ของมัน คือ function ขับรถต้องเขียนใหม่ไหม ? ไม่จำเป็นเลยถึงจะสร้าง class ใหม่ๆออกมามากมายแค่ไหน นี่แหละที่เรียกว่า polymorphism ครับ

น่าจะเคลียร์กันไปพอสมควร (มั๊ง)
ต่อฉบับหน้า (อีกแล้ว)

Hello world!

Posted April 2, 2010 by pyayam
Categories: Uncategorized

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!