450 likes | 593 Views
เพิ่มเติม เขียน PHP ติดต่อฐานข้อมูล MS-Access. PHP: Hypertext Preprocessor. โหลดไฟล์ที่ http://www.iamsanya.com/docfile/database1.zip. สัญญา เครือหงษ์ ภาควิชาวิทยาการคอมพิวเตอร์และเทคโนโลยีสารสนเทศ คณะวิทยาศาสตร์ มหาวิทยาลัยนเรศวร. วัตถุประสงค์การเรียนรู้ประจำบท.
E N D
เพิ่มเติม เขียน PHP ติดต่อฐานข้อมูล MS-Access PHP:Hypertext Preprocessor โหลดไฟล์ที่ http://www.iamsanya.com/docfile/database1.zip สัญญา เครือหงษ์ ภาควิชาวิทยาการคอมพิวเตอร์และเทคโนโลยีสารสนเทศ คณะวิทยาศาสตร์ มหาวิทยาลัยนเรศวร
วัตถุประสงค์การเรียนรู้ประจำบทวัตถุประสงค์การเรียนรู้ประจำบท
เริ่มต้นการติดต่อกับ Access • ก่อนที่เราจะติดต่อกับฐานข้อมูลจริง ต้องรู้จักกับฟังก์ชั่นเหล่านี้ก่อน ซึ่งมีความจำเป็นมาก ๆ ในการใช้งาน
การที่เราจะเขียน php ติดต่อกับฐานข้อมูล Microsoft Access เราจะต้องติดตอผ่าน ODBC ซึ่งเป็น Driver ของการเชื่อมต่อฐานข้อมูล ซึ่งการติดต่อผ่าน ODBC จะต้องมีการ Set ชื่อ DSN เพื่อเป็นชื่ออ้างอิงในการติดต่อกับฐานข้อมูลนั้น ๆ สามารถศึกษาได้ที่หัวข้อถัดจากนี้
การ SET DSN เพื่อติดต่อกับ ACCESS ก่อนที่เราจะ Set Dsn เราต้องมีฐานข้อมูลก่อน รู้จะ Path และ ที่อยู่ของฐานข้อมูลในที่นี้ ฐานข้อมูลผมอยู่ที่ C:\Appserv\www\web\database.mdb เริ่มกันเลยครับ ผมจะแบ่งเป้น 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 ใว้อ้างอิงในการติดต่อกับฐานข้อมูล
ตอนที่ 1 การแสดงคุณสมบัติต่าง ๆ ของตาราง ฐานข้อมูล C:\Appserv\www\web\database.mdb ซื่อตาราง Customer
การแสดงชื่อและจำนวนฟิวส์ของตาราง 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); ?> php4-1.php Out Put 1. ฟิวส์ id ชนิดของข้อมูลเป็น COUNTER2. ฟิวส์ name ชนิดของข้อมูลเป็น VARCHAR3. ฟิวส์ surname ชนิดของข้อมูลเป็น VARCHAR
ตอนที่ 2 การนำข้อมูลจากตารางมาแสดง ฐานข้อมูล C:\Appserv\www\web\database.mdb ชื่อตาราง customer
การนำข้อมูลจากตารางมาแสดงการนำข้อมูลจากตารางมาแสดง php4-2.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><? $i=1;while(odbc_fetch_row($execute,$i)){
<? if ($i%2==0) { echo "<trbgcolor=#FFFF99>"; }else{ echo "<trbgcolor=#FFCCCC>"; }?> //เพื่อสลับสีแถว ให้เขียนทับ <tr> $id=odbc_result($execute,"id");$name=odbc_result($execute,"name");$surname=odbc_result($execute,"surname");?><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);?>
ตอนที่ 3 การเพิ่มข้อมูลลงในตาราง ฐานข้อมูล C:\Appserv\www\web\database.mdb
รูปแบบ insert ino ชื่อตาราง (ฟิวส์1,ฟิวส์2,ฟิวส์3...) values ('ค่า1','ค่า2','ค่า3',...) <?$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);?> php4-3.php
Add ผ่าน Form php4-4.php <html><body><form name="form1" method="post" action=“php4-4-2.php”>Name <input type="text" name="name">Surname <input type="text" name="surname"><input type="submit" name="Submit" value="Submit"></form></body></html>
php4-4-2.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 (‘$name’,’$surname’)";$execute = odbc_exec($connect, $sql) or die ("เอ็กซิคิวส์คำสั่งไม่ได้");odbc_free_result($execute);odbc_close($connect);echo"ได้ทำการบันทึกข้อมูลเรียบร้อยแล้ว ";?>
ตอนที่ 4 การค้นหาข้อมูลจากตาราง • ฐานข้อมูล C:\Appserv\www\web\database.mdb
php4-5.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 ("เอ็กซิคิวส์คำสั่งไม่ได้");?>
php4-5.php ต่อ <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><? $i=1;while(odbc_fetch_row($execute,$i)){ $id=odbc_result($execute,"id"); $name=odbc_result($execute,"name"); $surname=odbc_result($execute,"surname");?>
php4-5.php ต่อ <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><?$i++;}?> </table><?odbc_close($connect);}?></body></html>
** เพิ่มเติมครับหากต้องการค้นหานามสกุลด้วยให้เปลี่ยนเป็น $sql = "select * from customer Where name like '%$search_name%' or surname like '%ค่าหรือตัวแปรที่ต้องการค้นหา%'"; Out Put
ตอนที่ 5 การแก้ข้อมูลในตาราง php4-6.php ฐานข้อมูล C:\Appserv\www\web\database.mdb ชื่อตาราง customer Form แก้ไข php4-7.php xxx xxx ดึงข้อมูลที่เลือกมาแก้ไข xxx บันทึกลงฐานข้อมูล php4-8.php
php4-6.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><?
php4-6.php ต่อ $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>
php4-6.php ต่อ <td width="52"><div align="center"><a href=“php4-7.php?id=<?=$id;?>">แก้ไข</a></div></td></tr><?$i++;}?> </table><?odbc_close($connect);?> Out Put
php4-7.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=“php4-8.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
php4-8.php Out Put ได้ทำการ แก้ไขข้อมูลเรียบร้อยแล้ว <?$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"ได้ทำการ แก้ไขข้อมูลเรียบร้อยแล้ว ";?>
ตอนที่ 6 การลบข้อมูลในตางราง ฐานข้อมูล C:\Appserv\www\web\database.mdb ชื่อตาราง customer
php4-9.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");?>
php4-9.php ต่อ Out Put <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=“php4-10.php?id=<?=$id;?>">ลบ</a></div></td></tr></table><?$i++;}?><?odbc_close($connect);?>
php4-10.php Out Put ได้ทำการ ลบข้อมูลเรียบร้อยแล้ว <?$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"ได้ทำการ ลบข้อมูลเรียบร้อยแล้ว ";?>
ตัวอย่างการสร้างระบบ Login โดยใช้ฐานข้อมูล php4-11.php User : xxxx Password : ****** Login Cancel php4-12.php ยินดีต้อนรับคุณ..xx.สู่เมนูหลัก ฐานข้อมูล C:\Appserv\www\web\database.mdb ตารางชื่อ Customer
php4-11.php <FORM METHOD=POST ACTION="php4-12.php"> User: <INPUT TYPE="text" NAME=“user"><BR> Password:<INPUT TYPE="Password" NAME=“pass"><BR> <INPUT TYPE="submit" value="Login"> <INPUT TYPE="reset" value=“Cancel"> </FORM> Output User : xxxx Password : ****** Login Cancel
<? $dsn_name = "customer"; $username =""; $password =""; $connect= odbc_connect($dsn_name, $username, $password) or die("ติดต่อ DSN ไม่ได้"); $sql="SELECT * FROM customer Where user='$user' and password='$pass'"; $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> <?if(empty($id)) { echo " ไม่พบข้อมูล"; } else {?> ยินดีต้อนรับ <B>คุณ<?=$name;?><?=$surname;?></B>.. สู่เมนูหลัก <?}?></body> </html> php4-12.php ยินดีต้อนรับคุณ..xx.สู่เมนูหลัก Output
ตัวอย่างการสร้างระบบ Login โดยใช้ฐานข้อมูล และใช้ MD5 ในการเข้ารหัส ในที่นี้เพื่อเข้ารหัสพาสเวิร์ดเฉยๆ แต่ User ก้ยังจำ Password ของตัวเองปกติ เช่น ถ้ากำหนด “1234” เมื่อเข้ารหัสด้วย MD5 แล้วจะได้ “81dc9bdb52d04dc20036dbd8313ed055” เป็นต้น <?$dsn_name= "customer";$username =""; $password =""; $pass1=md5($pass); // pass คือชื่อที่ตั้งจาก textbox ประเภท password$connect= odbc_connect($dsn_name, $username, $password) or die("ติดต่อ DSN ไม่ได้");/* จะเห็นว่า code ข้างล่างไม่ได้มีการเพิ่มฟิวส์ id เพราะ id ชนิดของข้อมูลเป็น Auto number */ $sql= "insert into customer (user,password)values (‘$user’,’$pass1’)";$execute = odbc_exec($connect, $sql) or die ("เอ็กซิคิวส์คำสั่งไม่ได้");odbc_free_result($execute);odbc_close($connect);echo"ได้ทำการบันทึกข้อมูลเรียบร้อยแล้ว ";?>
ตัวอย่างการสร้างระบบ Login โดยใช้ฐานข้อมูล และใช้ MD5 ในการเข้ารหัส(ต่อ) Userform.php User : xxxx Password : ****** Login Cancel checkuser.php ยินดีต้อนรับคุณ..xx.สู่เมนูหลัก แต่ตอนสั่งเก็บข้อมูลหรือสมัครสมาชิกให้ใช้ฟังก์ชั่น MD5 ตรงฟิลดิ์ Password ซึ่งรองรับข้อมูล 128bits ดังนั้นตรง password อาจจะต้องกำหนดขนาดให้มากขึ้น
ตัวอย่างการสร้างระบบ Login โดยใช้ฐานข้อมูล และใช้ MD5 ในการเข้ารหัส(ต่อ) Userform.php <FORM METHOD=POST ACTION=“checkuser.php”> User: <INPUT TYPE="text" NAME=“user"><BR> Password:<INPUT TYPE="Password" NAME=“pass"><BR> <INPUT TYPE="submit" value="Login"> <INPUT TYPE="reset" value=“Cancel"> </FORM> Output User : xxxx Password : ****** Login Cancel
<? $dsn_name = "customer"; $username =""; $password =""; $pass1=md5($pass); // ใช้ MD5 $connect= odbc_connect($dsn_name, $username, $password) or die("ติดต่อ DSN ไม่ได้"); $sql="SELECT * FROM customer Where user='$user' and password='$pass1'"; $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> <?if(empty($id)) { echo " ไม่พบข้อมูล"; } else {?> ยินดีต้อนรับ <B>คุณ<?=$name;?><?=$surname;?></B>.. สู่เมนูหลัก <?}?></body> </html> checkuser.php ยินดีต้อนรับคุณ..xx.สู่เมนูหลัก Output
อ้างอิง • www.thaicreate.com