Transcript Document

โหลดไฟล์ที่ http://www.iamsanya.com/docfile/database1.zip
1
2
 ก่ อนที่เราจะติดต่ อกับฐานข้ อมูลจริ ง ต้ องรู้ จักกับฟั งก์ ช่ น
ั เหล่ านีก้ ่ อน ซึ่งมีความจาเป็ นมาก ๆ ในการใช้ งาน
3
• การที่เราจะเขียน php ติดต่ อกับฐานข้ อมูล Microsoft Access เรา
จะต้ องติดตอผ่ าน ODBC ซึ่งเป็ น Driver ของการเชื่อมต่ อ
ฐานข้ อมูล ซึ่งการติดต่ อผ่ าน ODBC จะต้ องมีการ Set ชื่อ DSN
เพื่อเป็ นชื่ออ้ างอิงในการติดต่ อกับฐานข้ อมูลนัน้ ๆ สามารถ
ศึกษาได้ ท่ หี วั ข้ อถัดจากนี ้
4
ก่ อนที่เราจะ Set Dsn เราต้ องมีฐานข้ อมูลก่ อน รู้ จะ Path และ ที่อยู่ของฐานข้ อมูล
ในที่นี ้ ฐานข้ อมูลผมอยู่ท่ ี C:\Appserv\www\web\database.mdb
เริ่มกันเลยครั บ ผมจะแบ่ งเป้น 2 ประเภทครั บ คือ
- การ Set บน Win95,Win98,WinMe
เมนู Start > Sitting > Control Panel เลือก ODBC Datasources (32Bit)
1. ดับเบิ้ลคลิก
5
6
2. เลือก Add จากนั้นเลือก Microsoft Access Driver (*.mdb) -> Finish
7
กาหนด ชื่อ DSN เป็น customer และ เลือก Select เพื่อ ทาการอ้างอิงไฟล์ฐานข้อมูล
8
- การ 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
9
- กาหนด ชื่อ DSN เป็น customer และ เลือก Select เพื่อ ทาการอ้างอิงไฟล์ฐานข้อมูล
จะได้ชอ
ื่ DSN เป็น customer ใว้อ้างอิงในการติดต่อกับฐานข้อมูล
10
ฐานข้อมูล C:\Appserv\www\web\database.mdb
ซื่อตาราง Customer
11
การแสดงชื่อและจานวนฟิ วส์ ของตาราง customer
<?
php4-1.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 ("เอ็กซิควิ ส์คำสั่งไม่ได้");
$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);
?>
12
Out Put
1. ฟิ วส์ id ชนิดของข้อมูลเป็ น COUNTER
2. ฟิ วส์ name ชนิดของข้อมูลเป็ น VARCHAR
3. ฟิ วส์ surname ชนิดของข้อมูลเป็ น VARCHAR
ฐานข้อมูล C:\Appserv\www\web\database.mdb
ชื่อตาราง customer
13
การนาข้ อมูลจากตารางมาแสดง
14
<?
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))
{
$id=odbc_result($execute,"id");
$name=odbc_result($execute,"name");
$surname=odbc_result($execute,"surname");
?>
<tr>
<?
<td width="35">
if ($i%2==0)
<div align="center">
{
<? echo "$id"; ?>
</div>
echo "<tr
</td>
bgcolor=#FFFF99>";
<td width="129">
}else{
<? echo "$name"; ?>
echo "<tr
</td>
<td width="184">
bgcolor=#FFCCCC>";
<? echo "$surname"; ?>
}?>
</td>
//เพื่อสลับสีแถว ให้ เขียนทับ <tr>
</tr>
</table>
<?
$i++;
}
?>
<?
odbc_close($connect);
?>
15
Out Put
16
ฐานข้อมูล C:\Appserv\www\web\database.mdb
17
รูปแบบ
insert ino ชือ
่ ตำรำง (ฟิ วส์1,ฟิ วส์2,ฟิ วส์3...) values ('ค่ำ1','ค่ำ2','ค่ำ3',...)
<?
php4-3.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);
?>
18
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>
19
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"ได้ทำกำรบันทึกข้อมูลเรียบร้อยแล้ว ";
?>
20
• ฐานข้อมูล C:\Appserv\www\web\database.mdb
21
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 ("เอ็กซิควิ ส์คำสั่งไม่ได้");
?>
22
<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");
?>
23
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>
24
php4-5.php ต่ อ
** เพิ่มเติมครับ
หากต้องการค้นหานามสกุลด้วยให้เปลีย
่ นเป็น
$sql = "select * from customer Where name like
'%$search_name%' or surname like '%ค่ำหรือตัว
แปรทีต
่ อ
้ งกำรค้นหำ%'";
Out Put
25
26
ฐานข้อมูล C:\Appserv\www\web\database.mdb
ชื่อตาราง customer
php4-6.php
php4-7.php
ดึงข้ อมูลที่เลือกมาแก้ ไข
php4-8.php
xxx
xxx
แก้ไข
xxx
xxx
แก้ไข
Form แก้ไข
xxx
xxx
xxx
บันทึกลงฐานข้ อมูล
27
<?
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>
<?
28
$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>
29
php4-6.php ต่ อ
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
30
<?
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>
31
Out put
<?
php4-8.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
ได้ ทาการ แก้ ไขข้ อมูลเรี ยบร้ อยแล้ ว
32
ฐานข้อมูล C:\Appserv\www\web\database.mdb
ชื่อตาราง customer
33
<?
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");
?>
34
<table border="1" width="451">
<tr>
<td width="37">
php4-9.php
<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);
?>
Out Put
35
ต่ อ
php4-10.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
ได้ ทาการ ลบข้ อมูลเรี ยบร้ อยแล้ ว
36
• ฐานข้อมูล C:\Appserv\www\web\database.mdb ตารางชื่อ Customer
php4-11.php
xxxx
User :
Password :
Login
******
Cancel
php4-12.php
ยินดีต้อนรับคุณ..xx.สู่เมนูหลัก
37
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
xxxx
User :
Password :
Login
38
******
Cancel
<?
$dsn_name = "customer";
php4-12.php
$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>
39
Output
ยินดีต้อนรับคุณ..xx.สู่เมนูหลัก
ในที่นี้เพื่อเข้ารหัสพาสเวิร์ดเฉยๆ แต่ 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"ได้ทำกำรบันทึกข้อมูลเรียบร้อยแล้ว ";
?>
40
Userform.php
xxxx
User :
Password :
Login
******
Cancel
checkuser.php
ยินดีต้อนรับคุณ..xx.สู่เมนูหลัก
แต่ตอนสัง่ เก็บข้ อมูลหรื อสมัครสมาชิกให้ ใช้ ฟังก์ชนั่ MD5 ตรงฟิ ลดิ์ Password
ซึง่ รองรับข้ อมูล 128bits ดังนันตรง
้
password อาจจะต้ องกาหนดขนาดให้ มากขึ ้น
41
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
xxxx
User :
Password :
Login
42
******
Cancel
<?
$dsn_name = "customer";
checkuser.php
$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>
43
Output ยินดีต้อนรับคุณ..xx.สู่เมนูหลัก
• www.thaicreate.com
44