Tuesday, September 27, 2011

แก้ไขรหัสผ่าน root ของ MySQL


MySQL: Resetting the Root Password: Generic Instructions

The preceding sections provide password-resetting instructions for Windows and Unix systems. Alternatively, on any platform, you can set the new password using the mysql client (but this approach is less secure):

Stop mysqld and restart it with the --skip-grant-tables option. This enables anyone to connect without a password and with all privileges. If you normally start the server with the --old-passwords option, include that option as well.

Connect to the mysqld server with this command:

shell> mysql
Issue the following statements in the mysql client. Replace the password with the password that you want to use.

mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass')
    ->                   WHERE User='root';
mysql> FLUSH PRIVILEGES;
The FLUSH statement tells the server to reload the grant tables into memory so that it notices the password change.

You should now be able to connect to the MySQL server as root using the new password. Stop the server and restart it normally
(without the --skip-grant-tables option).

Friday, September 02, 2011

การติดตั้ง SUN-Oracle Java 1.7.0 บน CentOS 6.0 (HowTo Install SUN-Oracle Java 1.7.0 on CentOS 6.0)


การติดตั้ง SUN-Oracle Java 1.7.0 บน CentOS 6.0 (HowTo Install SUN-Oracle Java 1.7.0 on CentOS 6.0)

Step-1: ตรวจสอบเวอร์ชั่นของ Java บน CentOS จะเห็นได้ว่าเป็น Java OpenJDK
[root@bitcentos]#  java  -version
java version "1.6.0_17"
OpenJDK Runtime Environment (IcedTea6 1.7.9) (rhel-1.36.b17.el6_0-x86_64)
OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode)

Step-2: เปลี่ยนโฟลเดอร์ไปที่  /usr/src
[root@bitcentos]#  cd  /usr/src

Step-3: สร้างโฟลเดอร์  /usr/src/downloads
[root@bitcentos]#  mkdir  downloads

Step-4: เปลี่ยนโฟลเดอร์ไปที่  /usr/src/downloads  เพื่อจัดเก็บไฟล์ดาวน์โหลด Java ลงที่โฟลเดอร์นี้
[root@bitcentos]#  cd  downloads

Step-5: ตรวจสอบโฟลเดอร์ปัจจุบัน ด้วยคำสั่ง pwd
[root@bitcentos]#  pwd
/usr/src/downloads

Step-6: ดาวน์โหลดไฟล์ RPM ชุดติดตั้ง jdk เวอร์ชั่น 1.7.0 แบบ 64 บิต ด้วยคำสั่ง  curl
[root@bitcentos]#  curl  -L  -O  'http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-x64.rpm'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 77.9M  100 77.9M    0     0  1183k      0  0:01:07  0:01:07 --:--:-- 1035k

Notes: รูปแบบคำสั่งและ URL สำหรับดาวน์โหลดชุดติดตั้ง Java อื่นๆ
- ชุดติดตั้ง jdk เวอร์ชั่น 1.7.0 แบบ 32 บิต
# curl  -L  -O  'http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586.rpm'
- ชุดติดตั้ง jre เวอร์ชั่น 1.7.0 แบบ 64 บิต
# curl  -L  -O  'http://download.oracle.com/otn-pub/java/jdk/7/jre-7-linux-x64.rpm'
- ชุดติดตั้ง jre เวอร์ชั่น 1.7.0 แบบ 32 บิต
#  curl  -L  -O  'http://download.oracle.com/otn-pub/java/jdk/7/jre-7-linux-i586.rpm'
- ชุดติดตั้ง jre เวอร์ชั่น 1.6.0 แบบ 64 บิต
#  curl -L -O  'http://download.oracle.com/otn-pub/java/jdk/6u27-b07/jre-6u27-linux-x64-rpm.bin'
- ชุดติดตั้ง jre เวอร์ชั่น 1.6.0 แบบ 32 บิต
#  curl -L -O  'http://download.oracle.com/otn-pub/java/jdk/6u27-b07/jre-6u27-linux-i586-rpm.bin'


Step-7: ติดตั้ง jdk เวอร์ชั่น 1.7.0 แบบ 64 บิต ด้วยคำสั่ง  yum
[root@bitcentos]#  yum  --nogpgcheck  localinstall  jdk-7-linux-x64.rpm


Step-8: ลงทะเบียน Java Compiler เวอร์ชั่น 1.7.0 แบบ 64 บิต  ด้วยคำสั่ง alternatives
[root@bitcentos]#  /usr/sbin/alternatives  --install  "/usr/bin/javac"  "javac"  "/usr/java/jdk1.7.0/bin/javac"  3


Step-9: ลงทะเบียน Java Runtime Environment (JRE) เวอร์ชั่น 1.7.0 แบบ 64 บิต ด้วยคำสั่ง alternatives
[root@bitcentos]#  /usr/sbin/alternatives  --install  "/usr/bin/java"  "java"  "/usr/java/jdk1.7.0/bin/java"  4


Step-10: สวิทช์คอมไพเลอร์ของ Java Development Kit (JDK) ของ CentOS ให้ใช้ SUN (Oracle) JDK แทน OpenJDK โดยการเลือกข้อ (2) - /usr/java/jdk1.7.0/bin/javac
[root@bitcentos]#  /usr/sbin/alternatives  --config  javac

There are 2 programs which provide 'javac'.
  Selection    Command
-----------------------------------------------
*+ 1           /usr/lib/jvm/java-1.6.0-openjdk.x86_64/bin/javac
   2           /usr/java/jdk1.7.0/bin/javac

Enter to keep the current selection[+], or type selection number: 2


Step-11: ตรวจสอบเวอร์ชั่น Java Compiler
[root@bitcentos]#  javac  -version
javac 1.7.0


Step-12: สวิทช์คำสั่ง Java Runtime Environment (JRE) ของ CentOS ให้ใช้ของ SUN (Oracle) JRE แทน OpenJRE โดยเลือกข้อ (4) - /usr/java/jdk1.7.0/bin/java
[root@bitcentos]#  /usr/sbin/alternatives  --config  java

There are 4 programs which provide 'java'.
  Selection    Command
-----------------------------------------------
   1           /usr/lib/jvm/jre-1.5.0-gcj/bin/java
*+ 2           /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
   3           /usr/java/jdk1.7.0/bin/javac
   4           /usr/java/jdk1.7.0/bin/java

Enter to keep the current selection[+], or type selection number: 4


Step-13: ตรวจสอบเวอร์ชั่น Java Runtime Environment (JRE)
[root@bitcentos]#  java  -version
java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)

Good Luck!

Sunday, August 21, 2011

การเซ็ต PHPBB ให้ใช้ Google SMTP ในการส่งออกอีเมล์

ต้องเริ่มจาก...การไปสมัคร/สร้าง ชื่อผู้ใช้ของ gmail มาก่อน เพื่อนำมาระบุ ชื่อผู้ใช้/รหัสผ่าน ในหน้า ผู้ดูแลระบบ (หน้าหลัก ACP) ของ PHPBB
เว็บบอร์ด PHPBB จะใช้ชื่อผู้ใช้ gmail นี้ในการส่งเมล์ขาออกเสมอ
ในที่นี้่ไปสมัครมาแล้ว ชื่อผู้ใช้: dunesmtp@gmail.com รหัสผ่าน: 123456 (รหัสผ่านง่ายไปหรือเปล่า :-)

หลังจากนั้นเข้าไปที่หน้า ผู้ดูแลระบบ (หน้าหลัก ACP) > ทั่วไป > การตั้งค่าอีเมล์

Use SMTP server for e-mail (ที่อยู่ SMTP เซิร์ฟเวอร์): Yes (ใช่)
SMTP server address (อยู่ SMTP เซิร์ฟเวอร์): tls://smtp.gmail.com หรือ ssl://smtp.gmail.com
SMTP server port (SMTP เซิร์ฟเวอร์พอร์ต): 465
Authentication method for SMTP (วิธีการตรวจสอบสำหรับ SMTP): PLAIN
SMTP username (ชื่อผู้ใช้ SMTP): ชื่อผู้ใช้@gmail.com
SMTP password (รหัสของ SMTP): รหัสผ่านของชื่อผู้ใช้ gmail

ทดสอบกับ PHPBB ด้วยการลองสมัครสมาชิก PHPBB แล้ว ให้ส่งเมล์แจ้งเพื่อ activate PHPBB account

ลองทำความเข้าใจดู

Thursday, September 09, 2010

องค์ประกอบของ Business Intelligence ที่จะดำเนินการเพิ่มเติมใน PROVIS Report ปีงบประมาณ 2554

คำว่า Business Intelligence จะประกอบไปด้วยระบบข้อมูล และโปรแกรมแอพพลิเคชั่น ด้านการวิเคราะห์ มากมายหลายระบบ เช่น
- ดาต้าแวร์เฮ้าส์ (Data Warehouse) - รายการนี้มีแล้ว
- ดาต้ามาร์ท (Data Mart) - รายการนี้มีแล้ว
- การทำเหมืองข้อมูล (Data Mining) - รายการนี้ยังไม่มี
- การแก้ปัญหาทางคณิตศาสตร์ (Operations Research & Numerical Methods) - รายการนี้ยังไม่มี
- เครื่องมือที่ใช้ในการวิเคราะห์ข้อมูลในหลายมิติ (OLAP) แบบประมวลผลทันทีที่ป้อนข้อมูลเข้าไป - รายการนี้มีแล้ว ใช้ jasperserver OLAP
- ระบบสืบค้นและออกรายงานต่างๆ (Search, Report) - รายการนี้มีแล้ว

Wednesday, September 08, 2010

JasperServer - ปิด Refine filters ออกจากแถบค้นหา (search box) ด้านซ้ายหน้าจอ

1. แก้ไขไฟล์ WEB0INF/applicationContext-search.xml หรือ WEB0INF/applicationContext-search-pro.xml:

เดิม:
แก้เป็น:

2. เปิดไฟล์ stylesheets/search.css ค้นหาคำว่า #filtersTable
เดิม:
#filtersTable {
width:100%;
border-top:none !important;
}

แก้เป็น:
#filtersTable {
width:100%;
border-top:none !important;
display:none;
}

Sunday, September 05, 2010

ข้อมูลจำนวนประชากร , ข้อมูลจำนวนประชากร (แยกตามอายุ) จากเว็บไซต์ สำนักทะเบียนราษฎร์ กระทรวงมหาดไทย

ดาวน์โหลดได้จากเว็บไซต์ สำนักทะเบียนราษฎร์ กระทรวงมหาดไทย
url http://www.dopa.go.th/TH/service.php
- ข้อมูลจำนวนประชากร ปี พ.ศ. 2536 - พ.ศ.2551
- ข้อมูลจำนวนประชากร (แยกตามอายุ) ปี พ.ศ. 2537 - พ.ศ.2551

ข้อมูลจำนวนประชากรแยกรายอายุ ได้จากเว็บไซต์ สำนักทะเบียนราษฎร์ กระทรวงมหาดไทย

ดาวน์โหลด ข้อมูลจำนวนประชากรแยกรายอายุ ปี 2537 - 2551
ได้จากเว็บไซต์ สำนักทะเบียนราษฎร์ กระทรวงมหาดไทย
url http://www.dopa.go.th/xstat/xstat.html

Wednesday, September 01, 2010

วิธีเก็บไฟล์ .rpm จากการติดตั้งด้วย yum และ วิธีติดตั้งด้วย yum จากไฟล์แพ็กเกจ rpm ภายในเซิร์ฟเวอร์

* วิธีเก็บไฟล์ rpm ที่ได้จากการติดตั้งด้วยคำสั่ง yum install
# nano /etc/yum.conf
แก้ไขค่า keepcache=0 เป็น keepcache=1
เมื่อเรียกคำส่ง yum install
โปรแกรมจะเก็บไฟล์ rpm ไว้ในไดเร็คทอรี่ /var/cache/yum/x86_64/12/updates/packages

* วิธีติดตั้งโปรแกรมด้วย yum จากไฟล์แพ็กเกจ rpm ภายในเซิร์ฟเวอร์
# yum localinstall *.rpm

Saturday, August 28, 2010

คนถามกันจัง อัปเดตโปรแกรมบนวินโดว์ 7 หรือ วิสต้า ไม่ได้

ะบบปฏิบัติการ วินโดว์ 7/วิสต้า ปกติแล้ว จะไม่อนุญาตให้เขียนไฟล์ลงที่ไดรว์ C: เป็นเหตุผลเรื่องความปลอดภัยของระบบ
นอกจากเราจะมั่นใจว่า ต้องการทำอะไรจริงๆ นั่นหมายถึง เราต้องเป็นผู้ดูแลระบบ หรือ ผู้ใช้ (username/account) Administrator ของวินโดว์

หากเราล็อกอินเข้าใช้งานด้วยผู้ใช้ (username/account) Administrator ของวินโดว์ ก็จะสามารถดำเนินการในเครื่องคอมพิวเตอร์นั้นได้ทุกอย่าง รวมทั้งเรื่องการเขียนไฟล์ลงไดรว์ C: หรือ การอัปเดตโปรแกรม JHCIS ด้วย

แต่...หลายๆ คนยังไม่ทราบเลยว่า ขณะนั้นกำลังล็อกอินด้วยผู้ใช้ (username/account) ใดอยู่ เนื่องจากไม่ได้ติดตั้งวินโดว์เอง ไปให้ร้านซ่อมคอมพิวเตอร์ติดตั้งให้ หรือ ให้เพื่อนบ้านติดตั้งให้ เป็นต้น ก็ขอบอกเลยว่า ส่วนใหญ่ไม่ได้ล็อกอินเข้าใช้ด้วยผู้ใช้ Administrator

นั่นก็หมายถึง ส่วนใหญ่ก็จะพบปัญหาเรื่องการอัปเดตโปรแกรม JHCIS แน่นอน แต่เราก็มีวิธีแก้ไข

ระบบปฏิบัติการ วินโดว์ 7/วิสต้า แบบ 32 บิต (ส่วนใหญ่เรายังใช้งานแบบ 32 บิต) โปรแกรม JHCIS ติดตั้งที่โฟลเดอร์ C:\Program Files\JHCIS
ระบบปฏิบัติการ วินโดว์ 7/วิสต้า แบบ 64 บิต โปรแกรม JHCIS ติดตั้งที่โฟลเดอร์ C:\Program Files (x86)\JHCIS

กรณีหากเป็นปัญหาเรื่องการอนุญาต (permission) ในการเขียนไฟล์ลงโฟลเดอร์ C:\Program Files\JHCIS (หรือ C:\Program Files (x86)\JHCIS ในวินโดว์ 7/วิสต้า แบบ 64 บิต) เราสามารถไปเปลี่ยนการอนุญาต (permission) ของโฟลเดอร์ที่ว่ามาได้

:idea: คลิกเม้าส์ขวาที่โฟลเดอร์ C:\Program Files\JHCIS > เลือกเมนู properties
:idea: เมื่อไดอะล็อก jhcis Properties ปรากฏขึ้นมา ให้คลิกแท็บ Security แล้ว คลิกปุ่ม Edit
:idea: เมื่อปรากฏไดอะล็อก Permissions fot jhcis ที่ช่อง Group or user names: ให้คลิกที่รายการ Users (COMPUTERNAME\Users) แล้วไปที่ช่อง Permissions for Users บรรทัด Full Control คอลัมน์ Allow แล้วคลิกปุ่ม Apply ด้านล่างของไดะอะล็อก

หากเป็นปัญหาเรื่องการอนุญาต (permission) ในการเขียนไฟล์หรือโฟลเดอร์ วิธีนี้ก็จะแก้ปัญหาได้

Sunday, August 15, 2010

การกู้ข้อมูลจากฐานข้อมูล MySQL Storage Engine แบบ InnoDB (Forcing InnoDB Recovery)

เริ่มมากันแล้ว ปัญหาฐานข้อมูล InnoDB เสีย
อ้างอิง: http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html

1) เปิดไฟล์คอนฟิกของ MySQL ดาต้าเบสเซิร์ฟเวอร์ ด้วยโปรแกรม Notepad หรือ Wordpad
C:\Program Files\JHCIS\MySQL\my.ini
ค้นหา [mysqld] แล้วแทรกบรรทัด innodb_force_recovery = 4 ลงไป
บันทีกการแก้ไข

[mysqld]
innodb_force_recovery = 4

2) รีสตาร์ตเซอร์วิสของ MySQL ดาต้าเบสเซิร์ฟเวอร์
คลิก Start > All Programs > MySQL-JHCIS > MySQL Service Stop
คลิก Start > All Programs > MySQL-JHCIS > MySQL Service Start

3) หากเซอร์วิสของ MySQL ดาต้าเบสเซิร์ฟเวอร์ ทำงานได้ปกติ ก็จะสามารถติดต่อฐานข้อมูลได้ ให้ทำการสำรองข้อมูล (Backup) ออกมาด้วยโปรแกรม MySQL Administrator จะได้ไฟล์ jhcisdb.sql

4) นำไฟล์ jhcisdb.sql ที่ได้จากการสำรองข้อมูล (Backup) ไปทดสอบนำเข้า (Restore) ที่เครื่องคอมพิวเตอร์อื่น (ต้องหามา) เพื่อให้มั่นใจว่า ไฟล์สำรองข้อมูลนั้นใช้ได้

5) หากมั่นใจว่าไฟล์สำรองข้อมูลที่ทำมาใช้การได้ ให้ทำการลบฐานข้อมูล jhcisdb เดิม ทิ้งไป
คลิก Start > All Programs > MySQL-JHCIS > MySQL Administrator คลิกเมนู Catalogs คลิกเม้าส์ปุ่มขวาที่รายการ jhcisdb แล้วเลือกเมนู Drop Schema

6) นำไฟล์ jhcisdb.sql ที่ได้จากการสำรองข้อมูล (Backup) มานำเข้า (Restore) กลับเข้าไปในเครื่องคอมพิวเตอร์ที่จัดเก็บฐานข้อมูลระบบงาน JHCIS

7) เปิดไฟล์คอนฟิกของ MySQL ดาต้าเบสเซิร์ฟเวอร์ ด้วยโปรแกรม Notepad หรือ Wordpad
C:\Program Files\JHCIS\MySQL\my.ini
ค้นหา [mysqld] แล้วลบบรรทัด innodb_force_recovery = 4 ออกจากไฟล์
บันทีกการแก้ไข

8) รีสตาร์ตเซอร์วิสของ MySQL ดาต้าเบสเซิร์ฟเวอร์
คลิก Start > All Programs > MySQL-JHCIS > MySQL Service Stop
คลิก Start > All Programs > MySQL-JHCIS > MySQL Service Start

เสร็จสิ้นขั้นตอน ก็คาดหวังว่า เครื่องคอมพิวเตอร์ของคุณ พร้อมกับ ฐานข้อมูล jhcisdb จะสามารถใช้งานได้ปกติ

Saturday, August 14, 2010

Friday, August 13, 2010

Dulyawat's Blog: การเซ็ตให้รายงาน JasperServer ส่งออกเป็นไฟล์ PDF ที่มีฟอนต์ภาษาไทย

Dulyawat's Blog: การเซ็ตให้รายงาน JasperServer ส่งออกเป็นไฟล์ PDF ที่มีฟอนต์ภาษาไทย

การเซ็ตให้รายงาน JasperServer ส่งออกเป็นไฟล์ PDF ที่มีฟอนต์ภาษาไทย

เซ็ตให้รายงาน JasperServer ส่งออกเป็นไฟล์ PDF ที่มีฟอนต์ภาษาไทย ได้ใน 4 ขั้นตอน
1. สร้างไฟล์ jasperreports_extension.properties ในโฟลเดอร์ WEB-INF/classes ของ jasperserver

Windows: C:\Program Files\Apache Software Foundation\tomcat 6.0\webapps\jasperserver\WEB-INF\classes\
Linux Fedora 12: /usr/share/tomcat6/webapps/jasperserver/WEB-INF/classes/

เขียนโค้ดบรรทัดต่อไปนี้ลงในไฟล์

jasperreports_extension.properties
net.sf.jasperreports.extension.registry.factory.fonts=net.sf.jasperreports.extensions.SpringExtensionsRegistryFactory
net.sf.jasperreports.extension.fonts.spring.beans.resource=fonts.xml

2. สร้างไฟล์ fonts.xml ภายใต้โฟลเดอร์ WEB-INF/classes ของ jasperserver (โฟลเดอร์เดียวกับขั้นตอน 1)

เขียนโค้ดบรรทัดต่อไปนี้ลงในไฟล์

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="TahomaFontFamily" class="net.sf.jasperreports.engine.fonts.SimpleFontFamily">
<property name="name" value="Tahoma"/>
<property name="normal" value="fonts/tahoma.ttf"/>
<property name="pdfEncoding" value="Identity-H"/>
</bean>
</beans>

3. สร้างโฟลเดอร์ fonts ภายใต้โฟลเดอร์ WEB-INF/classes ของ jasperserver (โฟลเดอร์เดียวกับขั้นตอน 1) จะได้โฟลเดอร์ WEB-INF/classes/fonts

4. ก็อปปี้หรืออัปโหลดไฟล์ฟอนต์ที่ต้องการ เช่น tahoma.ttf, tahomabd.ttf ไปวางที่โฟลเดอร์ WEB-INF/classes/fonts ของ jasperserver (โฟลเดอร์ที่ได้จากขั้นตอน 3)

เสร็จสิ้นขั้นตอน

Thursday, August 12, 2010

การแก้ปัญหา JasperServer เกี่ยวกับ webHelpModule is undefined

แก้บรรทัดเหล่านี้ ก็ได้แล้ว

jpivot\ja-pro.js(194): $('helpLink').onclick = webHelpModule.displayWebHelp;


WEB-INF\jsp\olap\viewOlap.jsp(107): webHelpModule.currentContext = "analysis";
WEB-INF\jsp\rolesFlow\roleManager.jsp(65): webHelpModule.currentContext="admin";
WEB-INF\jsp\search\results.jsp(76): webHelpModule.currentContext = "search";
WEB-INF\jsp\userFlow\userManager.jsp(65): webHelpModule.currentContext="admin";

Thursday, July 08, 2010

โค้ดจาวา แสดงชื่อ CPU

/*
* CpuInfo.java
*
*/
package pcu.config;

import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarLoader;
import org.hyperic.sigar.SigarException;
import org.hyperic.sigar.cmd.Shell;
import org.hyperic.sigar.cmd.SigarCommandBase;

public class CpuInfo extends SigarCommandBase {

public boolean displayTimes = true;

public CpuInfo(Shell shell) {
super(shell);
}

public CpuInfo() {
super();
}

public String getUsageShort() {
return "Display cpu information";
}

private void output(CpuPerc cpu) {
println("User Time....." + CpuPerc.format(cpu.getUser()));
println("Sys Time......" + CpuPerc.format(cpu.getSys()));
println("Idle Time....." + CpuPerc.format(cpu.getIdle()));
println("Wait Time....." + CpuPerc.format(cpu.getWait()));
println("Nice Time....." + CpuPerc.format(cpu.getNice()));
println("Combined......" + CpuPerc.format(cpu.getCombined()));
println("Irq Time......" + CpuPerc.format(cpu.getIrq()));
if (SigarLoader.IS_LINUX) {
println("SoftIrq Time.." + CpuPerc.format(cpu.getSoftIrq()));
println("Stolen Time...." + CpuPerc.format(cpu.getStolen()));
}
println("");
}

public void output(String[] args) throws SigarException {
org.hyperic.sigar.CpuInfo[] infos = this.sigar.getCpuInfoList();

CpuPerc[] cpus = this.sigar.getCpuPercList();

org.hyperic.sigar.CpuInfo info = infos[0];
long cacheSize = info.getCacheSize();
println("Vendor........." + info.getVendor());
println("Model.........." + info.getModel());
println("Mhz............" + info.getMhz());
println("Total CPUs....." + info.getTotalCores());
if ((info.getTotalCores() != info.getTotalSockets()) ||
(info.getCoresPerSocket() > info.getTotalCores()))
{
println("Physical CPUs.." + info.getTotalSockets());
println("Cores per CPU.." + info.getCoresPerSocket());
}

if (cacheSize != Sigar.FIELD_NOTIMPL) {
println("Cache size...." + cacheSize);
}
println("");

if (!this.displayTimes) {
return;
}

for (int i=0; i println("CPU " + i + ".........");
output(cpus[i]);
}

println("Totals........");
output(this.sigar.getCpuPerc());
}

public static void main(String[] args) throws Exception {
//Determine System Architechture
String osName = System.getProperty("os.name");
String osArch = System.getProperty("os.arch");
String sigarFile = "";
if(osArch.toLowerCase().contains("x86")) {
if(osName.toLowerCase().contains("linux")) sigarFile = "libsigar-x86-linux.so";
else if(osName.toLowerCase().contains("windows")) sigarFile = "sigar-x86-winnt.dll";
} else if(osArch.toLowerCase().contains("amd64")) {
if(osName.toLowerCase().contains("linux")) sigarFile = "libsigar-amd64-linux.so";
else if(osName.toLowerCase().contains("windows")) sigarFile = "sigar-amd64-winnt.dll";
}
//Load library
String userDir = System.getProperty("user.dir");
System.load( (userDir+"/lib/lib_hyperic-sigar-1.6.3/"+sigarFile) );

//Execute
new CpuInfo().processCommand(args);
}
}


จะแสดงผลลัพธ์

Model..........Core(TM)2 Duo CPU P8700 @ 2.53GHz
Mhz............2527
Total CPUs.....2
Physical CPUs..1
Cores per CPU..2

CPU 0.........
User Time.....30.3%
Sys Time......36.3%
Idle Time.....33.2%
Wait Time.....0.0%
Nice Time.....0.0%
Combined......66.7%
Irq Time......0.0%

CPU 1.........
User Time.....33.2%
Sys Time......36.3%
Idle Time.....30.3%
Wait Time.....0.0%
Nice Time.....0.0%
Combined......69.6%
Irq Time......0.0%

Totals........
User Time.....6.4%
Sys Time......0.0%
Idle Time.....93.6%
Wait Time.....0.0%
Nice Time.....0.0%
Combined......6.4%
Irq Time......0.0%

Monday, June 28, 2010

บทที่ 12 การสร้างระบบแก้ไขข้อมูล


 


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


รูปแสดงไฟล์ที่เกี่ยวข้องในระบบแก้ไขข้อมูล


ระบบแก้ไขข้อมูลที่จะยกตัวอย่างนี้ ประกอบด้วยไฟล์ 2 ไฟล์ ดังรูป

  • update.php    ประกอบด้วย ฟอร์มสำหรับแสดงข้อมูลเดิมเพื่อให้ผู้ใช้ปรับปรุงแก้ไขข้อมูล
            และ สคริปต์ PHP สำหรับจัดเก็บข้อมูลที่แก้ไขปรับปรุงแล้วลงตารางของฐานข้อมูล
  • updateok.php สำหรับแสดงข้อความแจ้งผลการแก้ไขปรับปรุงข้อมูล

ขั้นตอนการสร้างระบบแก้ไขข้อมูลที่ยกมาอธิบายในที่นี้ แบ่งเป็นขั้นตอนดังต่อไปนี้

  • การสร้างฟอร์มสำหรับแก้ไขข้อมูล
  • การสร้าง recordset สำหรับค้นหาข้อมูลเร็คคอร์ดที่ต้องการแก้ไข
  • การแทรกสคริปต์สำหรับแสดงข้อมูลเดิมในฟอร์ม HTML
  • การแทรก Update Record Server Behavior ลงในเว็บเพจ
  • การส่งและรับค่า URL Parameter เพื่อระบุเร็คคอร์ดที่ต้องการแก้ไข
  • การแสดงผลการแก้ไขข้อมูล
  • การใช้งานระบบแก้ไขข้อมูล


 


(1) การสร้างฟอร์มสำหรับแก้ไขข้อมูล


 


 

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

ขั้นตอนการสร้างฟอร์มสำหรับแก้ไขข้อมูล:

  • เริ่มต้นที่โปรแกรม Dreamweaver คลิกเมนู File > New จะปรากฏไดอะล็อก New Document ขึ้นมา ให้คลิกแท็บ General
    คลิกเลือก Dynamic Page > PHP หลังจากนั้นคลิกปุ่ม Create บันทึกเป็นไฟล์ update.php
  • แทรกฟอร์ม HTML สำหรับแก้ไขข้อมูลลงในเว็บเพจ โดยให้มีข้อความและชื่ออ็อบเจ็คต์ของฟอร์ม ดังรูป



รูปแสดงแบบฟอร์มสำหรับแก้ไขข้อมูล

NOTE:

เปิดไฟล์ htmlform.htm จากขั้นตอนการสร้างฟอร์ม HTML หรือ \PHPWEB\labs\solutions\lab03_htmlform\htmlform.htm

ขึ้นมาแล้วบันทึกเป็นไฟล์ PHPWEB\update.php (หากปรากฏไดอะล็อก Update Links? ให้คลิก No)


 

  • ปรับแต่งรูปแบบของเว็บเพจโดยการแทรกไฟล์รูปภาพ และ ข้อความ
    • กำหนด Document Title เป็น "Update an employee record" (ดังรูป)
    • หัวข้อของเว็บเพจ ให้ใช้ไฟล์ images/title_update.gif (ดังรูป)


 

  • หน้าจอ Dreamweaver ที่เปิดไฟล์ update.php ให้ทำการกำหนดชื่อของฟอร์ม โดยคลิกแท็ก <FORM> ที่ Tag Selector


    รูปแสดงการคลิกเลือกแท็ก <FORM> จาก Tag Selector


     

  • เปิดไดอะล็อก Properties โดยคลิกเมนู Window > Properties หลังจากนั้นให้พิมพ์ชื่อฟอร์ม frmUpdate ที่ช่อง Form name


     


    รูปแสดง Property ของแท็ก <FORM>


 

ค่าของไดอะล็อก

ค่าที่กำหนด

Form name

fmUpdate

ตารางแสดงการกำหนด Property ของแท็ก <FORM>


 

จะเห็นได้ว่า ในการกำหนดคุณสมบัติของฟอร์ม HTML เรากำหนดเฉพาะคุณสมบัติในช่อง Form Name เท่านั้น
ส่วนคุณสมบัติในช่องอื่นๆ ในขั้นตอนต่อไป Dreamweaver จะกำหนดให้เราเองโดยอัตโนมัติ


 


(2) การสร้าง recordset สำหรับค้นหาข้อมูลเร็คคอร์ดที่ต้องการแก้ไข


 


 

ขั้นตอนนี้จะเป็นการค้นหาข้อมูลเร็คคอร์ดที่ต้องการแก้ไขเพื่อนำเอามาแสดงในฟอร์ม เป็นการแสดงสถานะของข้อมูลปัจจุบัน
ก่อนที่จะมีการแก้ไขปรับปรุงข้อมูล


ขั้นตอนการสร้าง recordset สำหรับค้นหาข้อมูลเร็คคอร์ดที่ต้องการแก้ไข:

  1. คลิกที่เมนู Window > Server Behaviors หลังจากนั้นให้คลิกปุ่มเครื่องหมายบวก และเลือกรายการ Recordset


รูปแสดงการคลิกเลือกเมนู Recordset จาก Server Behaviors


 

  1. เมื่อปรากฏไดอะล็อก Recordset ขึ้นมา ให้กำหนดค่าต่างๆ ดังรายละเอียดข้างล่างนี้ หลังจากนั้นคลิกปุ่ม OK


 


รูปแสดงไดอะล็อก Recordset

ค่าของไดอะล็อก

ค่าที่กำหนด

Name 

rsEmp

Connection 

dbconn 

Table 

employees 

Column 

All 

Filter 

employeeid และ =

URL Parameter 

empid


 

  1. บันทึกไฟล์ update.php


 

 


(3) การแสดงข้อมูลเดิมในฟอร์ม HTML





    การแสดงข้อมูลลงในฟอร์ม ก็คือการแทรกสคริปต์สำหรับนำเอาฟิลด์จากการสร้าง Recordset ในขั้นตอนการค้นหาข้อมูลมา
แสดงผลในฟอร์มของเว็บเพจ เพื่อแสดงข้อมูลปัจจุบัน ก่อนที่จะแก้ไขปรับปรุง โดยวิธีการจะคล้ายกับขั้นตอนการทำระบบแสดงผลข้อมูล
ในไฟล์ detail.php


 

ขั้นตอนการแทรกสคริปต์สำหรับแสดงข้อมูลเดิมในฟอร์ม HTML:

  1. เริ่มต้นเปิดโปรแกรม Dreamweaver ไปที่ไฟล์ update.php คลิกที่เมนู Window > Bindings หลังจากนั้นให้คลิกเครื่องหมายบวก
    หน้ารายการ Recordset (rsEmp) จะปรากฏชื่อฟิลด์ ให้คลิกเลือกและแทรกฟิลด์ลงในอ็อบเจ็คต์ของฟอร์มเพื่อแสดงผลข้อมูล ดังรูปด้านล่าง



    รูปการแสดงผลข้อมูลในฟอร์ม (Bindings)


 

  1. บันทึกไฟล์ update.php ก็เป็นอันเสร็จการแสดงผลข้อมูลลงในฟอร์ม


 

 


(4) การแทรก Update Record Server Behavior ลงในเว็บเพจ


 


 


 

การแทรก Update Record Server Behavior ก็คือการแทรกสคริปต์ PHP เพื่อสั่งให้บันทึกการแก้ไขข้อมูลลงตารางของฐานข้อมูล

ขั้นตอนการแทรก Update Record Server Behavior ลงในเว็บเพจ:


 

  1. เริ่มต้นที่โปรแกรม Dreamweaver เปิดไฟล์ update.php หลังจากนั้นให้คลิกเม้าส์ที่ตำแหน่งใดๆ ภายใต้เส้นประสีแดง ที่เป็นขอบเขตของฟอร์ม
  2. คลิกเมนู Insert > Form > Hidden Field หลังจากนั้นคลิกเม้าส์ที่อ็อบเจ็คต์ Hidden Field จะปรากฏไดอะล็อก Properties ของ Hidden Field
    (หากไม่ปรากฏไดอะล็อก Properties ให้คลิกที่เมนู Windows > Properties) และให้กำหนดค่าในไดอะล็อกดังต่อไปนี้


    รูปแสดงการกำหนด Property ของ Hidden Field "empid"

    

ค่าของไดอะล็อก

ค่าที่กำหนด

HiddenField 

empid

Value 

<?php echo $row_rsEmp['employeeid']; ?>

ตารางแสดงการกำหนด Property ของ Hidden Field "empid"


 

  1. เปิดแถบ Server Behaviors โดยคลิกเมนู Window > Server Behaviors แล้วคลิกที่ปุ่มเครื่องหมายบวก
    เลือกรายการUpdate Record จากเมนู


    ตารางแสดง Update Record Server Behaviors

  2. เมื่อปรากฏไดอะล็อก Update Record ให้กำหนดค่าต่างๆ มีดังต่อไปนี้


    รูปแสดงการกำหนดค่าต่างๆ ในไดอะล็อก Update Record

ค่าของไดอะล็อก

ค่าที่กำหนด

Submit Values From 

fmUpdate 

Connection 

dbconn 

Update Table 

employees 

Columns 

จับคู่ฟิลด์ของฐานข้อมูลกับอ็อบเจ็คต์ของฟอร์มดังต่อไปนี้

employeeid -> FORM.empid

firstname -> FORM.firstname

lastname -> FORM.lastname

birthdate -> FORM.birthdate

startdate -> FORM.startdate

deptid -> FORM.deptid

phone -> FORM.phone

extension -> FORM.extension

email -> FORM.email

notes -> FORM.notes

photo -> FORM.photo

After Updating, Go To 

updateok.php

ตารางแสดงการกำหนดค่าต่างๆ ในไดอะล็อก Update Record


 

  1. บันทึกไฟล์ update.php ก็เป็นอันเสร็จขั้นตอนการแทรก Update Record Server behavior



     


     


(5) การส่งและรับค่า URL Parameter เพื่อระบุเร็คคอร์ดที่ต้องการแก้ไข


 

ขั้นตอนนี้ ก็คือการทำให้ไฟล์เว็บเพจ 2 ไฟล์ list.php และ update.php สามารถเชื่อมโยงเพื่อส่งและรับค่า URL Parameter กันได้นั่นเอง


ขั้นตอนการส่งและรับค่า URL Parameter เพื่อระบุเร็คคอร์ดที่ต้องการแก้ไข:

  1. เริ่มต้นที่โปรแกรม Dreamweaver เปิดไฟล์ list.php ขึ้นมา แล้วลากเม้าส์ทำไฮไลต์ข้อความ "แก้ไข" ดังรูป


 


รูปแสดงการไฮไลต์ข้อความ "แก้ไข"


 

  1. เปิดไดอะล็อก Properties โดยคลิกที่เมนู Window > Properties จะปรากฏไดอะล็อก Properties ขึ้นมา ให้คลิกไอคอนรูป
    Folder สีเหลือง (Browse for File) ที่ตำแหน่งช่อง Link เพื่อสร้างไฮเปอร์ลิงค์สำหรับ URL Parameter ไปหาไฟล์ update.php


    รูปแสดง Property ของลิงค์ "แก้ไข"


 

  1. เมื่อปรากฏไดอะล็อก Select File ขึ้นมา ให้คลิกเลือกไฟล์ update.php เป็นการกำหนดว่าจะส่งค่า URL Parameter ไปที่ไฟล์นี้
    หลังจากนั้นให้คลิกปุ่ม Parameters… ที่ด้านล่างของไดอะล็อก Select File เพื่อกำหนดการส่งค่า URL Parameter


     



    รูปแสดงขั้นตอนการสร้างลิงค์ พร้อมกับการกำหนด "Parameters…"


     

  2. เมื่อปรากฏไดอะล็อก Parameters ขึ้นมา ที่ช่อง Name ให้พิมพ์ชื่อ URL Parameter ที่ต้องการจะส่งไป
    ในที่นี้ให้เราพิมพ์ empid หลังจากนั้นให้ไปที่ช่อง Value เพื่อกำหนดค่าที่จะส่งไป ในที่นี้เราต้องการกำหนดค่า
    ให้เปลี่ยนไปแบบ Dynamic ตามข้อมูลที่แสดงในแต่ละเร็คคอร์ด ให้คลิกปุ่ม Dynamic Data ที่ช่อง Value


     


    รูปแสดงขั้นตอนการสร้างลิงค์ พร้อมกับการกำหนด "Parameters…"


 

ค่าของไดอะล็อก

ค่าที่กำหนด

Name 

empid

Value 

<?php echo $row_rsEmp['employeeid']; ?>

ตารางแสดงการกำหนดค่า URL Parameter ในไดอะล็อก "Parameters"

  1. เมื่อปรากฏไดอะล็อก Dynamic Data ขึ้นมา ให้คลิกเลือกฟิลด์ employeeid จาก Recordset (rsEmp) หลังจากนั้นคลิกปุ่ม OK


    รูปแสดงการเลือกฟิลด์ employeeid จาก Recordset


 

  1. บันทึกไฟล์ list.php ก็เป็นเสร็จขั้นตอนการกำหนดการส่งค่า URL Parameter
  2. ขั้นตอนสุดท้ายคือกำหนดให้ไฟล์ update.php รับค่า URL Parameter ที่ส่งมาจากไฟล์ list.php ซึ่งวิธีการทำนั้น
    เราได้ทำผ่านมาแล้วให้ย้อนกลับไปดูในขั้นตอน "การสร้าง recordset สำหรับค้นหาข้อมูลเร็คคอร์ดที่ต้องการแก้ไข"
    จะเห็นได้ว่า เราได้มีการเรียกใช้ URL Parameter "empid" ซึ่งก็คือค่า URL Parameter ที่ส่งไปจากไฟล์ list.php นั่นเอง


 


 

 


(6) การแสดงผลลัพธ์การแก้ไขข้อมูล


 


 


 

ขั้นตอนสุดท้ายของระบบแก้ไขข้อมูลคือ การสร้างไฟล์แสดงผลการทำงาน ซึ่งจะประกอบด้วยข้อความ แสดงให้ผู้ใช้
ทราบว่าการแก้ไขข้อมูลเสร็จเรียบร้อยแล้วเท่านั้น ให้สร้างเว็บเพจขึ้นมาและพิมพ์ข้อความสำหรับแสดงผลการแก้ไขข้อมูล
บันทึกเป็นไฟล์ updateok.php


 


รูปแสดงการสร้างไฟล์ updateok.php


 


 


 


(7) การใช้งานระบบแก้ไขข้อมูล


 

เริ่มต้นโดยใช้โปรแกรม Dreamweaver เปิดไฟล์ list.php ขึ้นมา แล้วกดปุ่ม F12 โปรแกรม Internet Explorer
จะถูกเปิดขึ้นมาเรียกใช้งานไฟล์ list.php หลังจากนั้นให้คลิกปุ่ม "แก้ไข" เพื่อแก้ไขข้อมูลแต่ละเร็คคอร์ด เสร็จแล้วคลิกปุ่ม
Update เพื่อบันทึกข้อมูล รอดูผลที่จะแสดงจากไฟล์ updateok.php


 


 

บทที่ 11 การสร้างระบบเพิ่มข้อมูล


 


 

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


รูปแสดงไฟล์ที่เกี่ยวข้องกับระบบเพิ่มข้อมูล

  • insert.php    ประกอบด้วยฟอร์มสำหรับเป็นแบบฟอร์มกรอกข้อมูลและสคริปต์สำหรับจัดเก็บข้อมูลลงตารางของฐานข้อมูล
  • insertok.php     ประกอบด้วยข้อความแสดงผลการเพิ่มข้อมูล

ขั้นตอนการสร้างระบบเพิ่มข้อมูลที่ยกมาอธิบายในที่นี้ แบ่งเป็นขั้นตอนดังต่อไปนี้

  • การสร้างฟอร์มกรอกข้อมูล
  • การแทรก Insert Record Server Behavior ลงในเว็บเพจ
  • การสร้างเว็บเพจแสดงผลลัพธ์การเพิ่มข้อมูล
  • การใช้งานระบบเพิ่มข้อมูล


 

(1) การสร้างฟอร์มกรอกข้อมูล


    การสร้างฟอร์มกรอกข้อมูล คือ ขั้นตอนการสร้างแบบฟอร์มให้ผู้ใช้เว็บแอพพลิเคชั่น นำข้อมูลมากรอกในแบบฟอร์ม
และส่งข้อมูลไปประมวลผลบนแอพพลิเคชั่นเซิร์ฟเวอร์ เพื่อบันทึกลงตารางของฐานข้อมูล

ขั้นตอนการสร้างฟอร์มกรอกข้อมูล:

  1. เริ่มต้นที่โปรแกรม Dreamweaver คลิกเมนู File > New จะปรากฏไดอะล็อก New Document ขึ้นมา
    ให้คลิกแท็บ General คลิกเลือก Dynamic Page > PHP หลังจากนั้นคลิกปุ่ม Create บันทึกเป็นไฟล์ insert.php
  2. แทรกฟอร์ม HTML สำหรับกรอกข้อมูลลงในเว็บเพจ โดยให้มีข้อความและชื่ออ็อบเจ็คต์ของฟอร์ม ดังรูป


 


รูปแสดงแบบฟอร์มกรอกข้อมูล

NOTE:

เปิดไฟล์ htmlform.htm จากขั้นตอนการสร้างฟอร์ม HTML หรือ \PHPWEB\labs\solutions\lab03_htmlform\htmlform.htm

ขึ้นมาแล้วบันทึกเป็นไฟล์ PHPWEB\insert.php (หากปรากฏไดอะล็อก Update Links? ให้คลิก No)


 

  1. หน้าจอ Dreamweaver ที่เปิดไฟล์ insert.php ให้ทำการกำหนดชื่อของฟอร์ม โดยคลิกแท็ก <FORM> ที่ Tag Selector


     


    รูปแสดงการคลิกเลือกแท็ก <FORM> จาก Tag Selector

  2. เปิดไดอะล็อก Properties โดยคลิกเมนู Window > Properties หลังจากนั้นให้พิมพ์ชื่อฟอร์ม fmAdd ที่ช่อง Form name


 

ค่าของไดอะล็อก

ค่าที่กำหนด

Form name

fmAdd

ตารางแสดงการกำหนด Property ของแท็ก <FORM>


 


รูปแสดง Property ของแท็ก <FORM>


 

จะเห็นได้ว่า ในการกำหนดคุณสมบัติของฟอร์ม เราไม่จำเป็นต้องกำหนดค่าใดๆ ในช่อง Action และ Method
เนื่องจากในขั้นตอนต่อไป Dreamweaver จะสร้างให้เราเองโดยอัตโนมัติ


 


 


(2) การแทรก Insert Record Server Behavior ลงในเว็บเพจ


 

การแทรก Insert Record Server Behavior เป็นการแทรกสคริปต์ PHP เพื่อบันทึกข้อมูลลงตารางของฐานข้อมูล


ขั้นตอนการแทรก Insert Record Server Behavior ลงในเว็บเพจ:

  1. เปิดแถบ Server Behaviors โดยคลิกเมนู Window > Server Behaviors แล้วคลิกที่ปุ่มเครื่องหมายบวก
    เลือกรายการ Insert Record จากเมนู

ดังรูป


 


รูปแสดงการคลิกเลือกเมนู Insert Record จาก Server Behaviors


 


 

  1. เมื่อปรากฏไดอะล็อก Insert Record ขั้นตอนต่อจากนี้ ก็จะเป็นการกำหนดค่าในไดอะล็อก Insert Record
    ซึ่งรายละเอียดการกำหนดค่าต่างๆ มีดังต่อไปนี้


    รูปแสดงไดอะล็อก Insert Record


 

ค่าของไดอะล็อก    

ค่าที่กำหนด

Submit Values From 

fmAdd 

Connection 

dbconn 

Insert Table

employees 

Columns 

จับคู่ฟิลด์ของฐานข้อมูลกับอ็อบเจ็คต์ของฟอร์มดังต่อไปนี้

firstname -> firstname

lastname -> lastname

birthdate -> birthdate

startdate -> startdate

deptid -> deptid

phone -> phone

extension -> extension

email -> email

notes -> notes

photo -> photo

After Inserting, Go To 

insertok.php 

ตารางแสดงการเลือกฟิลด์จากไดอะล็อก Insert Record เพื่อเพิ่มข้อมูล


 

  1. บันทึกไฟล์ insert.php ก็เป็นอันเสร็จขั้นตอนการแทรก Insert Record Server behavior


 


 


(3) การสร้างเว็บเพจแสดงผลลัพธ์การเพิ่มข้อมูล


 

ขั้นตอนสุดท้ายของระบบเพิ่มข้อมูลคือ การสร้างไฟล์แสดงผลการทำงาน ซึ่งจะประกอบด้วยข้อความ แสดงให้ผู้ใช้
ทราบว่าการกรอกข้อมูลเสร็จเรียบร้อยแล้วเท่านั้น ให้สร้างเว็บเพจขึ้นมาและพิมพ์ข้อความสำหรับแสดงผลการเพิ่มข้อมูล
บันทึกเป็นไฟล์ Insertok.php


 



 


(4) การใช้งานระบบเพิ่มข้อมูล


 

เริ่มต้นโดยใช้โปรแกรม Dreamweaver เปิดไฟล์ insert.php ขึ้นมา แล้วกดปุ่ม F12 โปรแกรม Internet Explorer
จะถูกเปิดขึ้นมาเรียกใช้งานไฟล์ insert.php หลังจากนั้นให้ทดลองกรอกข้อมูลและคลิกปุ่ม Insert เพื่อบันทึกข้อมูล
เสร็จแล้วรอดูผลที่จะแสดงจากไฟล์ insertok.php


 


 


 


 

บทที่ 10 การสร้างระบบค้นหาข้อมูล


 

ระบบค้นหาข้อมูล คือเว็บเพจที่ทำหน้าที่ในการเรียกค้นหาข้อมูลจากฐานข้อมูล และนำผลลัพธ์มาแสดงผลที่หน้าจอเว็บเพจ


 


รูปแสดงไฟล์ที่เกี่ยวข้องกับระบบค้นหาข้อมูล


 

ระบบค้นหาข้อมูลในส่วนที่จะอธิบายนี้ จะประกอบด้วยไฟล์ 2 ไฟล์

  • search.php      ทำหน้าที่รับค่าคำค้น แล้วส่งไปเป็น URL Parameter ชื่อ keywords ไปให้ไฟล์ result.php
                ใช้เปรียบเทียบค้นหาข้อมูลจากตารางในฐานข้อมูล
  • result.php     ทำหน้าแสดงรายละเอียดของพนักงานทีละคน โดยจะรับ URL Parameter ชื่อ keywords ใน
                รูปแบบ $_GET['keywords'] จากฟอร์มในไฟล์ search.php


 

ขั้นตอนการสร้างระบบค้นหาข้อมูลที่ยกมาอธิบายในที่นี้ แบ่งเป็นขั้นตอนดังต่อไปนี้

  • การสร้างฟอร์มสำหรับพิมพ์คำค้น
  • การค้นหาข้อมูลแบบเงื่อนไขเดียว
  • การใช้งานระบบค้นหาข้อมูลแบบเงื่อนไขเดียว
  • การค้นหาข้อมูลแบบหลายเงื่อนไข
  • การใช้งานระบบค้นหาข้อมูลแบบหลายเงื่อนไข


 

 


(1) การสร้างฟอร์มสำหรับพิมพ์คำค้น


 

ขั้นตอนนี้จะเป็นการสร้างฟอร์มสำหรับพิมพ์คำค้น โดยการแทรกฟอร์มและอ็อบเจ็คต์ของฟอร์มชนิด Text Field สำหรับรับค่าคำค้น


 

ขั้นตอนการสร้างฟอร์มสำหรับพิมพ์คำค้น:

  1. เริ่มต้นที่โปรแกรม Dreamweaver คลิกเมนู File > New จะปรากฏไดอะล็อก New Document ขึ้นมา ให้คลิกแท็บ General
    คลิกเลือก Dynamic Page > PHP หลังจากนั้นคลิกปุ่ม Create เมื่อปรากฏเว็บเพจว่างๆ ขึ้นมา ให้บันทึกเป็นไฟล์ search.php
  2. เลือกเมนู Modify > Page Properties เมื่อปรากฏไดอะล็อก Page Properties ขึ้นมา ให้กำหนด Properties ของเว็บเพจ
    ดังรายละเอียดด้านล่างนี้ หลังจากนั้นคลิกปุ่ม OK

ค่าของไดอะล็อก    

ค่าที่กำหนด 

Appearance > Background Image 

images/bkg_search.gif

Title/Encoding > Title

Search employees

Title/Encoding > Document Type (DTD)

None

Title/Encoding > Encoding

Thai (Windows)

ตารางแสดงการกำหนดค่าใน Page Properties


 


รูปแสดงการกำหนด Page Properties

  1. แทรกฟอร์มลงในเว็บเพจ โดยคลิกไปที่เมนู Insert > Form > Form
  2. กำหนด Properties ของฟอร์ม โดยเลือกแท็ก <form> จาก Tag Selector หลังจากนั้นคลิกเมนู Window > Properties
    เมื่อปรากฏไดอะล็อก Properties ขึ้นมา ให้กำหนดค่าดังต่อไปนี้


 

ค่าของไดอะล็อก

ค่าที่กำหนด

Form name

fmSearch 

Action 

result.php

Method 

GET 

ตารางแสดงการกำหนด Property ของฟอร์ม


 


รูปแสดงการกำหนด Property ของฟอร์ม


 

  1. แทรกตารางลงภายในแท็ก <FORM> โดยคลิกที่เมนู Insert > Table แล้วกำหนดค่าดังนี้


 


รูปแสดงการกำหนดค่าของไดอะล็อก Table


 

ค่าของไดอะล็อก

ค่าที่กำหนด

Rows

1

Columns

3

Table width

400 pixel

Border thickness

1 pixels

Cell padding

3

Cell spacing 

1

ตารางแสดงการกำหนดค่าของไดอะล็อก Table


 


 

  1. คอลัมน์ที่ 1 ของตาราง และให้แทรกข้อความ "คำค้น:" ลงไป


    รูปแสดงการแทรกข้อความ "คำค้น"


 

  1. คอลัมน์ที่ 2 ของตาราง และให้แทรกอ็อบเจ็คต์ของฟอร์มชนิด Text Field ลงไป โดยคลิกที่เมนู
    Insert > Form > Text Field หลังจากนั้นให้กำหนดคุณสมบัติของ Text Field ดังต่อไปนี้


 

ค่าของไดอะล็อก

ค่าที่กำหนด

TextField 

keywords 

Char Width 

25 

Max Chars 

25

Type 

Single line 

ตารางแสดงการกำหนด Property ของ Text Field


 


รูปแสดงการกำหนด Property ของ Text Field


 


รูปแสดงไฟล์ search.php หลังการแทรก Text Field

  1. คอลัมน์ที่ 3 ของตาราง ให้แทรกอ็อบเจ็คต์ของฟอร์มชนิด Button ลงไป โดยคลิกที่เมนู Insert > Form > Button หลังจากนั้นให้กำหนดคุณสมบัติของ Button โดยไปที่เมนู Window > Properties แล้วให้กำหนดค่าดังนี้


 

ค่าของไดอะล็อก

ค่าที่กำหนด

Label 

Search 

Action 

Submit form 

ตารางแสดงการกำหนด Property ของ Button


รูปแสดงการกำหนด Property ของ Button


 

  1. บันทึกไฟล์ search.php


    รูปแสดงหน้าจอไฟล์ search.php หลังการแทรก Button


 


(2) การค้นหาข้อมูลแบบเงื่อนไขเดียว (Basic)


 

ขั้นตอนนี้ จะเป็นการ Recordset (Query) สำหรับค้นหาข้อมูลจากฐานข้อมูล โดยจะมีการกำหนดเงื่อนไขในการค้นหาข้อมูลจาก
URL Parameter ชื่อ $_GET['keywords'] ที่ส่งมาจากไฟล์ searchadv.php

การแทรก Recordset (Query) นี้ จะคล้ายกับขั้นตอนการสร้างในไฟล์ list.php เพื่อเป็นการประหยัดเวลา จึงแนะนำให้เปิดไฟล์
list.php ขึ้นมาแล้วบันทึกเป็นไฟล์ resultadv.php


 

ขั้นตอนการค้นหาข้อมูลแบบเงื่อนไขเดียว (Basic):

  1. เปิดไฟล์ list.php ของระบบแสดงผลข้อมูลขึ้นมา ให้บันทึก (SAVE AS…) เป็นไฟล์ result.php
  2. คลิกที่เมนู Window > Bindings ดับเบิลคลิกที่รายการ Recordset (rsEmp) เมื่อปรากฏไดอะล็อก Recordset ขึ้นมา
    ให้กำหนดค่าของตัวแปรต่างๆ ดังรายละเอียดต่อไปนี้

NOTE:

เปิดไฟล์ list.php จากขั้นตอนการสร้างระบบแสดงผลข้อมูลหรือ PHPWEB\labs\solutions\lab05_displayrecords\list.php
ขึ้นมาแล้วบันทึกเป็นไฟล์ PHPWEB\result.php (หากปรากฏไดอะล็อก Update Links? ให้คลิก No)


 


รูปแสดงการดับเบิลคลิก Recordset (rsEmp)


รูปแสดงไดอะล็อก Recordset


 

ค่าของไดอะล็อก

ค่าที่กำหนด

Name 

rsEmp

Connection

dbconn 

Table 

employees 

Columns 

employeeid, firstname, lastname, deptid, phone, extension

Filter 

ช่องที่ 1: firstname หมายถึงให้ค้นหาจากฟิลด์ firstname

 

ช่องที่ 2: contains หมายถึงให้ค้นหาแบบประกอบด้วย (LIKE)

 

ช่องที่ 3: URL Parameter หมายถึง รับค่าคำค้นจาก URL Parameter
(ส่งมาจากฟอร์มที่ METHOD="GET")

 

ช่องที่ 4: keywords หมายถึง คำค้นถูกส่งมาเป็น URL Parameter ชื่อ keywords

Sort 

Firstname , Ascending หมายถึง เรียงลำดับตาม firstname น้อยไปหามาก


 


 


 


 


(3) การใช้งานระบบค้นหาข้อมูลแบบเงื่อนไขเดียว (Basic)


 

เริ่มต้นโดยใช้โปรแกรม Dreamweaver เปิดไฟล์ search.php ขึ้นมา แล้วกดปุ่ม F12 โปรแกรม Internet Explorer
จะถูกเปิดขึ้นมาเรียกใช้งานไฟล์ search.php หลังจากนั้นให้พิมพ์คำค้น และคลิกปุ่ม Search เพื่อค้นหาข้อมูลจากฟิลด์ firstname


 

 


(4) การค้นหาข้อมูลแบบหลายเงื่อนไข


 

ในขั้นตอนที่ผ่านมา เราได้ค้นหาข้อมูลโดยในการ Filter ข้อมูลนั้นจะเป็นการเปรียบเทียบค่าฟิลด์ firstname กับ URL Parameter
$_GET['keywords'] ซึ่งก็หมายถึง ค้นหาข้อมูลจากฟิลด์ firstname ฟิลด์เดียวเท่านั้น

การค้นหาด้วยเงื่อนไขที่ซับซ้อนมากกว่านี้ สามารถทำได้โดยการดับเบิลคลิก Recordset(rsEmp) ขึ้นมา แล้วคลิกปุ่ม Advanced…
เพื่อเข้าไปเพิ่มเติมเงื่อนไขการค้นหาข้อมูล


 

ขั้นตอนการค้นหาข้อมูลแบบหลายเงื่อนไข:


 

  1. เปิดไฟล์ list.php ของระบบแสดงผลข้อมูลขึ้นมา ให้บันทึก (SAVE AS…) เป็นไฟล์ result.php
  2. คลิกที่เมนู Window > Bindings ดับเบิลคลิกที่รายการ Recordset (rsEmp) เมื่อปรากฏไดอะล็อก Recordset ขึ้นมา
    ให้คลิกปุ่ม Advanced… เพื่อกำหนดแก้ไขคำสั่ง SQL สำหรับค้นหาหลายเงื่อนไข


 


 


รูปแสดงการดับเบิลคลิก Recordset (rsEmp)


รูปแสดงไดอะล็อก Recordset


 


รูปแสดงไดอะล็อก Recordset ในโหมด Advanced


 

  1. เมื่ออยู่ในโหมด Advanced จะเห็นว่าในช่อง SQL จะแสดงชุดคำสั่ง SQL ในการเรียกค้นหาข้อมูล ดังรูปคำสั่งด้านล่าง
    แล้วทดสอบการค้นหาโดยการกด F12

SELECT employeeid, firstname, lastname, phone, extension

FROM employees

WHERE (employees.firstname LIKE '%colname%')

ORDER BY firstname ASC

รูปแสดงการกำหนดเงื่อนไขให้ค้นหาจาก firstname


 

  1. ปรับคำสั่งในไดอะล็อก Recordset ดังรูปคำสั่งด้านล่าง เพื่อ JOIN ตาราง departments เอาฟิลด์ชื่อแผนก (deptname)
    มาแสดงผลและเพิ่มเงื่อนไขให้ค้นหาจากฟิลด์ firstname และ lastname หลังจากนั้นให้ทดสอบการค้นหาโดยเปิด
    Dreamweaver ไปที่ไฟล์ search.php แล้วกด F12

SELECT employees.*, departments.deptname

FROM employees, departments

WHERE employees.deptid = departments.deptid

AND ( employees.firstname LIKE '%colname%' OR employees.lastname LIKE '%colname%' )

ORDER BY firstname ASC

รูปแสดงการ JOIN ตาราง departments เพื่อเอาชื่อแผนกมาแสดง และค้นหาจาก fistname และ lastname

  1. ปรับคำสั่งในไดอะล็อก Recordset ดังรูปคำสั่งด้านล่าง และเพิ่มเงื่อนไขให้ค้นหาจากฟิลด์ employeeid firstname
    lastname email และ deptname หลังจากนั้นให้ทดสอบการค้นหาโดยเปิด Dreamweaver ไปที่ไฟล์ searchadv.php
    แล้วกด F12


     

SELECT employees.*, departments.deptname

FROM employees, departments

WHERE employees.deptid = departments.deptid

AND ( employees.employeeid LIKE '%colname%'

OR employees.firstname LIKE '%colname%'
OR employees.lastname LIKE '%colname%'

OR employees.email LIKE '%colname%'

OR departments.phone LIKE '%colname%'

)

ORDER BY firstname ASC

รูปแสดงการกำหนดเงื่อนไขให้ค้นหาจากฟิลด์ firstname, lastname, email, phone


 

  1. บันทึกไฟล์ resultadv.php


 


 


 


(5) การใช้งานระบบค้นหาข้อมูลแบบหลายเงื่อนไข (Advanced)



 

เริ่มต้นโดยใช้โปรแกรม Dreamweaver เปิดไฟล์ searchadv.php ขึ้นมา แล้วกดปุ่ม F12 โปรแกรม Internet Explorer
จะถูกเปิดขึ้นมาเรียกใช้งานไฟล์ searchadv.php หลังจากนั้นให้พิมพ์คำค้น และคลิกปุ่ม Search เพื่อค้นหาข้อมูล
โดยให้ทดสอบพิมพ์คำค้นที่ตรงกับค่าในฟิลด์ employeeid firstname lastname email และ deptname ทีละเงื่อนไข

แล้วสังเกตผลลัพธ์ว่าถูกต้องหรือไม่