ใช้ PHP กับ Table ของ Microsoft Access

        บทเรียนนี้ได้สำเนามาจากเว็บของ Thaicreate.com ขอขอบคุณมา ณ โอกาสนี้ด้วย ทั้งหมดมี  8  ข้อ  ท้ายเป็นโจทย์ที่กำหนดเป็นแบบฝึกหัด  ลองศึกษาดูครับ

1.   เริ่มต้นการติดต่อกับ Access

ก่อนที่เราจะติดต่อกับฐานข้อมูลจริง ต้องรู้จักกับฟังก์ชั่นเหล่านี้ก่อน ซึ่งมีความจำเป็นมาก ๆ ในการใช้งาน

 

ฟังก์ชั่น
จุดมุ่งหมาย และ ความหมาย
odbc_close() ปิดการเชื่อมต่อกับฐานข้อมูล
odbc_close_all() ปิดการเชื่อม ODBC แน่นอน
odbc_commit() สั่งทำคำสั่งกับ ODBC
odbc_connect() เชื่อมต่อกับฐานข้อมูล หรือ datasource
odbc_do() เตรียมและเอ็กซิคิวส์คำสั่ง SQL
odbc_exec() เตรียมและเอ็กซิคิวส์คำสั่ง SQL
odbc_execute() เอ็กซิคิวส์คำสั่งที่เตียมใว้แล้ว
odbc_fetch_into() ดึงข้อมูลครั้งละ 1 Reccord และเก็บข้อมูลลง Array
odbc_fetch_row() ดึงข้อมูลครั้งละ 1 Reccord
odbc_filed_name() แสดงชื่อฟิวส์
odbc_filed_type() แสดงประเภทของฟิวส์
odbc_filed_len() แสดงค่าขนาดของฟิวส์
odbc_num_files() นับจำนวนฟิวส์
odbc_pconnect() เปิดการเชื่อมฐานข้อมูลที่มีอยู่
odbc_perpare() เตรียมคำสั่งสำหรับการเอ็กซิคิวส์
odbc_num_rows() หาจำนวน Reccord ของข้อมูล
odbc_result() แสดงข้อมูลอกมา
odbc_result_all() แสดงข้อมูลเป็นตารางของ Html
odbc_rollback() ทำคำสั่งอีกครั้ง
odbc_setoption() ปรับแต่งการตั้งค่า Odbc จะให้ค่า false ถ้าเกิดข้อผิดพลาดนอกจากเป็นจริง



การที่เราจะเขียน php ติดต่อกับฐานข้อมูล Microsoft Access เราจะต้องติดตอผ่าน ODBC ซึ่งเป็น Driver ของการเชื่อมต่อฐานข้อมูล ซึ่งการติดต่อผ่าน ODBC จะต้องมีการ Set ชื่อ DSN เพื่อเป็นชื่ออ้างอิงในการติดต่อกับฐานข้อมูลนั้น ๆ สามารถศึกษาได้ที่หัวข้อถัดจากนี้

 
 

2.  การ Set DSN เพื่อติดต่อกับ Access

ก่อนที่เราจะ Set Dsn เราต้องมีฐานข้อมูลก่อน รู้จะ Path และ ที่อยู่ของฐานข้อมูล

ในที่นี้ ฐานข้อมูลผมอยู่ที่ C:\Appserv\www\database.mdb ชื่อฐานข้อมูล database.mdb ( Downloads ฐานข้อมูล )

เริ่มกันเลยครับ ผมจะแบ่งเป้น 2 ประเภทครับ คือ

- การ Set บน Win95,Win98,WinMe

เมนู Start > Sitting > Control Panel เลือก ODBC Datasources (32Bit)




 

1. ดับเบิ้ลคลิก

2. เลือก Add จากนั้นเลือก Microsoft Access Driver (*.mdb) -> Finish







กำหนด ชื่อ DSN เป็น customer และ เลือก Select เพื่อ ทำการอ้างอิงไฟล์ฐานข้อมูล







- การ Set บน WinXP,NT,2000

เมนู Start > Sitting > Control Panel > Administrative Tool เลือก Data Sources (ODBC)
 

1. ดับเบิ้ลคลิก เลือก Tab System DSN และเลือก > Add



จากนั้นเลือก Driver do Microsoft Access Driver (*.mdb) -> Finish




กำหนด ชื่อ DSN เป็น customer และ เลือก Select เพื่อ ทำการอ้างอิงไฟล์ฐานข้อมูล


จะได้ชื่อ DSN เป็น customer ใว้อ้างอิงในการติดต่อกับฐานข้อมูล


 


 

3.  การแสดงคุณสมบัติต่าง ๆ ของตาราง

 

ฐานข้อมูล C:\Appserv\www\database.mdb ชื่อฐานข้อมูล database.mdb ( Downloads ฐานข้อมูล )
ชื่อตาราง customer


 



Sample1.php
การแสดงชื่อและจำนวนฟิวส์ของตาราง customer

<?
$dsn_name = "customer";
$username ="";
$password ="";
$connect= odbc_connect($dsn_name, $username, $password) or die("ติดต่อ DSN ไม่ได้");
$sql = "select * from customer";
$execute = odbc_exec($connect, $sql) or die ("เอ็กซิคิวส์คำสั่งไม่ได้");
$num_field = odbc_num_fields($execute);
for ($I=1; $I<= $num_field; $I++)
{
echo $I. ". ฟิวส์ <b> ".odbc_field_name($execute, $I),"</b> ชนิดของข้อมูลเป็น <b> ".odbc_field_type($execute, $I),"</b><br>";
}
odbc_close($connect);
?>

Out Put

1. ฟิวส์ id ชนิดของข้อมูลเป็น COUNTER
2. ฟิวส์ name ชนิดของข้อมูลเป็น VARCHAR
3. ฟิวส์ surname ชนิดของข้อมูลเป็น VARCHAR



 


 

4.  การนำข้อมูลจากตารางมาแสดง

ฐานข้อมูล C:\Appserv\www\database.mdb ชื่อฐานข้อมูล database.mdb ( Downloads ฐานข้อมูล )
ชื่อตาราง customer


 



Sample1.php
การนำข้อมูลจากตารางมาแสดง

<?
$dsn_name = "customer";
$username ="";
$password ="";
$connect= odbc_connect($dsn_name, $username, $password) or die("ติดต่อ DSN ไม่ได้");
$sql = "select * from customer";
$execute = odbc_exec($connect, $sql) or die ("เอ็กซิคิวส์คำสั่งไม่ได้");
?>
<table border="1" width="371">
<tr>
<td width="32">
<div align="center">id</div>
</td>
<td width="132">
<div align="center">name</div>
</td>
<td width="185">
<div align="center">surname</div>
</td>
</tr>
</table>
<?
$i=1;
while(odbc_fetch_row($execute,$i))
{
$id=odbc_result($execute,"id");
$name=odbc_result($execute,"name");
$surname=odbc_result($execute,"surname");
?>
<table border="1" width="370">
<tr>
<td width="35">
<div align="center">
<? echo "$id"; ?>
</div>
</td>
<td width="129">
<? echo "$name"; ?>
</td>
<td width="184">
<? echo "$surname"; ?>
</td>
</tr>
</table>
<?
$i++;
}
?>
<?
odbc_close($connect);
?>

Out Put





 


 

5.  การเพิ่มข้อมูลลงในตาราง

ฐานข้อมูล C:\Appserv\www\database.mdb ชื่อฐานข้อมูล database.mdb ( Downloads ฐานข้อมูล )
ชื่อตาราง customer


 


รูปแบบ

insert ino ชื่อตาราง (ฟิวส์1,ฟิวส์2,ฟิวส์3...) values ('ค่า1','ค่า2','ค่า3',...)
 



Sample1.php

<?
$dsn_name = "customer";
$username ="";
$password ="";
$connect= odbc_connect($dsn_name, $username, $password) or die("ติดต่อ DSN ไม่ได้");
/* จะเห็นว่า code ข้างล่างไม่ได้มีการเพิ่มฟิวส์ id เพราะ id ชนิดของข้อมูลเป็น Auto number */
$sql = "insert into customer (name,surname) values ('นายวีระชัย ','นุกิจรัมย์')";
$execute = odbc_exec($connect, $sql) or die ("เอ็กซิคิวส์คำสั่งไม่ได้");
odbc_free_result($execute);
odbc_close($connect);
?>


หรือจะ Add ผ่าน Form

New.html

<html>
<body>
<form name="form1" method="post" action="Sample1.php">
Name
<input type="text" name="name">
Surname
<input type="text" name="surname">
<input type="submit" name="Submit" value="Submit">
</form>
</body>
</html>





 


6.  การค้นหาข้อมูลจากตาราง

ฐานข้อมูล C:\Appserv\www\database.mdb ชื่อฐานข้อมูล database.mdb ( Downloads ฐานข้อมูล )
ชื่อตาราง customer


 


Sample1.php

<html>
<body>
<form name="form1" method="post" action="">
กรุณากรอกชื่อที่ต้องการค้นหา
<input type="text" name="search_name" value="<?=$search_name;?>">
<input type="submit" name="Submit" value="Search">
</form>
<?
if(empty($search_name))
{
?><hr>
กรุณากรอกข้อมูลด้วยครับ
<?
}
else
{
$dsn_name = "customer";
$username ="";
$password ="";
$connect= odbc_connect($dsn_name, $username, $password) or die("ติดต่อ DSN ไม่ได้");
$sql = "select * from customer Where name like '%$search_name%'";
$execute = odbc_exec($connect, $sql) or die ("เอ็กซิคิวส์คำสั่งไม่ได้");
?>
<table border="1" width="371">
<tr>
<td width="32">
<div align="center">id</div>
</td>
<td width="132">
<div align="center">name</div>
</td>
<td width="185">
<div align="center">surname</div>
</td>
</tr>
</table>
<?
$i=1;
while(odbc_fetch_row($execute,$i))
{
$id=odbc_result($execute,"id");
$name=odbc_result($execute,"name");
$surname=odbc_result($execute,"surname");
?>
<table border="1" width="370">
<tr>
<td width="35">
<div align="center">
<? echo "$id"; ?>
</div>
</td>
<td width="129">
<? echo "$name"; ?>
</td>
<td width="184">
<? echo "$surname"; ?>
</td>
</tr>
</table>
<?
$i++;
}
?>
<?
odbc_close($connect);
}
?>
</body>
</html>
 

** เพิ่มเติมครับ

หากต้องการค้นหานามสกุลด้วยให้เปลี่ยนเป็น

$sql = "select * from customer Where name like '%$search_name%' or surname like '%ค่าหรือตัวแปรที่ต้องการค้นหา%'";


Out Put









 


 

7.  การแก้ข้อมูลในตาราง

ฐานข้อมูล C:\Appserv\www\database.mdb ชื่อฐานข้อมูล database.mdb ( Downloads ฐานข้อมูล )
ชื่อตาราง customer


 


Sample1.php

<?
$dsn_name = "customer";
$username ="";
$password ="";
$connect= odbc_connect($dsn_name, $username, $password) or die("ติดต่อ DSN ไม่ได้");
$sql = "select * from customer";
$execute = odbc_exec($connect, $sql) or die ("เอ็กซิคิวส์คำสั่งไม่ได้");
?>
<table border="1" width="451">
<tr>
<td width="36">
<div align="center">id</div>
</td>
<td width="125">
<div align="center">name</div>
</td>
<td width="210">
<div align="center">surname</div>
</td>
<td width="52">
<div align="center">แก้ไข</div>
</td>
</tr>
</table>
<?
$i=1;
while(odbc_fetch_row($execute,$i))
{
$id=odbc_result($execute,"id");
$name=odbc_result($execute,"name");
$surname=odbc_result($execute,"surname");
?>
<table border="1" width="451">
<tr>
<td width="37">
<div align="center">
<? echo "$id"; ?>
</div>
</td>
<td width="122">
<? echo "$name"; ?>
</td>
<td width="212">
<? echo "$surname"; ?>
</td>
<td width="52">
<div align="center"><a href="Sample2.php?id=<?=$id;?>">แก้ไข</a></div>
</td>
</tr>
</table>
<?
$i++;
}
?>
<?
odbc_close($connect);
?>



Out Put







Sample2.php
 

<?
$dsn_name = "customer";
$username ="";
$password ="";
$connect= odbc_connect($dsn_name, $username, $password) or die("ติดต่อ DSN ไม่ได้");
$sql="SELECT * FROM customer Where id=$id";
$execute = odbc_exec($connect, $sql) or die ("เอ็กซิคิวส์คำสั่งไม่ได้");
$id=odbc_result($execute,"id");
$name=odbc_result($execute,"name");
$surname=odbc_result($execute,"surname");
odbc_close($connect);
?>
<html>
<body>
<form name="form1" method="post" action="Sample3.php">
Name
<input type="text" name="name" value="<?=$name;?>">
Surname
<input type="text" name="surname" value="<?=$surname;?>">
<input type="submit" name="Submit" value="Update">
<input type="hidden" name="id" value="<?=$id;?>">
</form>
</body>
</html>



Out Put



 


Sample3.php
 

<?
$dsn_name = "customer";
$username ="";
$password ="";
$connect= odbc_connect($dsn_name, $username, $password) or die("ติดต่อ DSN ไม่ได้");
$sql = "update customer set name='$name',surname='$surname' where id=$id";
$execute = odbc_exec($connect, $sql) or die ("เอ็กซิคิวส์คำสั่งไม่ได้");
odbc_close($connect);
echo"ได้ทำการ แก้ไขข้อมูลเรียบร้อยแล้ว ";
?>



Out Put
 

ได้ทำการ แก้ไขข้อมูลเรียบร้อยแล้ว


 


 

8.  การลบข้อมูลในตางราง

ฐานข้อมูล C:\Appserv\www\database.mdb ชื่อฐานข้อมูล database.mdb ( Downloads ฐานข้อมูล )
ชื่อตาราง customer


 


Sample1.php

<?
$dsn_name = "customer";
$username ="";
$password ="";
$connect= odbc_connect($dsn_name, $username, $password) or die("ติดต่อ DSN ไม่ได้");
$sql = "select * from customer";
$execute = odbc_exec($connect, $sql) or die ("เอ็กซิคิวส์คำสั่งไม่ได้");
?>
<table border="1" width="451">
<tr>
<td width="36">
<div align="center">id</div>
</td>
<td width="125">
<div align="center">name</div>
</td>
<td width="210">
<div align="center">surname</div>
</td>
<td width="52">
<div align="center">ลบ</div>
</td>
</tr>
</table>
<?
$i=1;
while(odbc_fetch_row($execute,$i))
{
$id=odbc_result($execute,"id");
$name=odbc_result($execute,"name");
$surname=odbc_result($execute,"surname");
?>
<table border="1" width="451">
<tr>
<td width="37">
<div align="center">
<? echo "$id"; ?>
</div>
</td>
<td width="122">
<? echo "$name"; ?>
</td>
<td width="212">
<? echo "$surname"; ?>
</td>
<td width="52">
<div align="center"><a href="Sample2.php?id=<?=$id;?>">ลบ</a></div>
</td>
</tr>
</table>
<?
$i++;
}
?>
<?
odbc_close($connect);
?>




Out Put







Sample2.php
 

<?
$dsn_name = "customer";
$username ="";
$password ="";
$connect= odbc_connect($dsn_name, $username, $password) or die("ติดต่อ DSN ไม่ได้");
$sql = "delete from customer where id=$id";
$execute = odbc_exec($connect, $sql) or die ("เอ็กซิคิวส์คำสั่งไม่ได้");
odbc_close($connect);
echo"ได้ทำการ ลบข้อมูลเรียบร้อยแล้ว ";
?>


Out Put
 

ได้ทำการ ลบข้อมูลเรียบร้อยแล้ว


 


 

 

โจทย์  จงสร้างฟอร์มรับข้อมูลเข้าสู่ตารางตามแบบข้างล่างนี้  โดยบทเรียน ."ภาษา PHP กับ Microsoft Access". นี้

Add Links 
เพิ่มลิงค์
ชื่อ-สกุล: *
อีเมล: *
ชื่อเว็บไซต์: *
ที่อยู่เว็บไซต์: *
ประเภทเว็บไซด์: *
รายละเอียด: *
ไฟล์แบนเนอร์:
 
   
กรุณากรอกข้อมูลให้ครบทุกช่องด้วยครับ

 

ที่มา  http://www.thaicreate.com/index.php?modules=tutorphp.php เมื่อวันที่  12  พฤษภาคม  2550