Tạo thư mục có cấu trúc như sau trong thư mục C:\wamp\www\ để lưu website
BookStoreOnline:
C:\wamp\www\BookStoreOnline\
C:\wamp\www\BookStoreOnline\script\ : Chứa các file javascript
C:\wamp\www\BookStoreOnline\css\ : Chứa các file định dạng css
C:\wamp\www\BookStoreOnline\BookImages\ : Chứa ảnh bìa của các cuốn sách
C:\wamp\www\BookStoreOnline\ : Chứa các trang .php, .html
26 trang |
Chia sẻ: franklove | Lượt xem: 2057 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Lập trình và thiết kế Web 1 - Bài 7: PHP kết nối CSDL MySQL, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
KHOA CÔNG NGHỆ THÔNG TIN – ĐẠI HỌC KHOA HỌC TỰ NHIÊN
2007
Authored by: Ngô Bá Nam Phương - Lương Vĩ Minh
Bài 7 : PHP kết nối CSDL MySQL
Môn : Lập trình và Thiết kế Web 1
1
B
à
i
7
:
P
H
P
k
ế
t
n
ố
i
C
S
D
L
M
yS
Q
L
|
9
/
2
6
/
2
0
0
7
Bài 7 : PHP kết nối CSDL MySQL
Môn : Lập trình và Thiết kế Web 1
Yêu cầu: Trong ứng dụng BookStore Online, xây dựng các chức năng Tìm kiếm, Thêm,
Xóa, Cập nhật thông tin sách
1. Cấu trúc thư mục :
Tạo thư mục có cấu trúc như sau trong thư mục C:\wamp\www\ để lưu website
BookStoreOnline:
C:\wamp\www\BookStoreOnline\
C:\wamp\www\BookStoreOnline\script\ : Chứa các file javascript
C:\wamp\www\BookStoreOnline\css\ : Chứa các file định dạng css
C:\wamp\www\BookStoreOnline\BookImages\ : Chứa ảnh bìa của các cuốn sách
C:\wamp\www\BookStoreOnline\ : Chứa các trang .php, .html
2. Cấu trúc CSDL :
Sử dụng MySQL, tạo CSDL gồm 3 bảng Book, Category, Publisher có cấu trúc như sau:
a- Bảng Book :
b- Bảng Category :
2
B
à
i
7
:
P
H
P
k
ế
t
n
ố
i
C
S
D
L
M
yS
Q
L
|
9
/
2
6
/
2
0
0
7
c- Bảng Publisher :
3
B
à
i
7
:
P
H
P
k
ế
t
n
ố
i
C
S
D
L
M
yS
Q
L
|
9
/
2
6
/
2
0
0
7
3. Tạo kết nối đến CSDL :
Do đa số các trang web đều kết nối đến CSDL, do đó ta sẽ đóng gói việc kết nối với
CSDL trong 1 class riêng để dễ dàng hơn trong việc sử dụng
Tạo file DataProvider.php
Lưu DataProvider.php trong thư mục C:\wamp\www\BookStoreOnline\
Khai báo class DataProvider trong DataProvider.php
<?php
class DataProvider
{
public static function ExecuteQuery($sql)
{
$connection = mysql_connect("localhost","root","") or
die ("couldn't connect to localhost");
// ebookDB : Tên CSDL
mysql_select_db("ebookDB",$connection);
mysql_query("set names 'utf8'");
$result = mysql_query($sql,$connection);
mysql_close($connection);
return $result;
}
}
?>
Các trang nào cần sử dụng class DataProvider sử dụng khai báo sau:
<?php
include_once("DataProvider.php");
?>
4
B
à
i
7
:
P
H
P
k
ế
t
n
ố
i
C
S
D
L
M
yS
Q
L
|
9
/
2
6
/
2
0
0
7
Để thực thi hàm static trong vsphp:
Trong VS.PHP, từ cửa sổ Solution Explorer,
chọn PHP Project R-Click Properties
Chọn Configuration Manager
Trong mục Active solution platform, chọn PHP 5:
5
B
à
i
7
:
P
H
P
k
ế
t
n
ố
i
C
S
D
L
M
yS
Q
L
|
9
/
2
6
/
2
0
0
7
4. Sơ đồ hệ thống website cần xây dựng:
4.1. Trang chủ ( TrangChu.php )
TrangChu.php
TimSach.php DangNhap.php
xlTimSach.php
ThemSach.php xlXoa.php CapNhat.php
6
B
à
i
7
:
P
H
P
k
ế
t
n
ố
i
C
S
D
L
M
yS
Q
L
|
9
/
2
6
/
2
0
0
7
4.2. Trang đăng nhập ( DangNhap.php )
Mã lệnh
Dang nhap he thong
Tên đăng nhập
Mật khẩu
7
B
à
i
7
:
P
H
P
k
ế
t
n
ố
i
C
S
D
L
M
yS
Q
L
|
9
/
2
6
/
2
0
0
7
Trở về trang chủ
Bổ sung mã lệnh php xử lý việc đăng nhập trong trang DangNhap.php:
Dang nhap he thong
<?php
$tenDangNhap = $_REQUEST["txtTenDangNhap"];
$matKhau = $_REQUEST["txtMatKhau"];
$ketQuaDangNhap = false;
include_once("DataProvider.php");
$dsNguoiDung = DataProvider::ExecuteQuery("Select * From User");
if($dsNguoiDung != false)
{
while($row = mysql_fetch_array($dsNguoiDung,MYSQL_ASSOC))
{
if($tenDangNhap == $row["UserName"] &&
$matKhau == $row["Password"])
{
$ketQuaDangNhap = true;
}
}
}
if($ketQuaDangNhap == false)
8
B
à
i
7
:
P
H
P
k
ế
t
n
ố
i
C
S
D
L
M
yS
Q
L
|
9
/
2
6
/
2
0
0
7
{
?>
Tên đăng nhập
Mật khẩu
<td
Trở về trang chủ
<?php
}
else
{
echo ("Xin chào " . $tenDangNhap);
?>
Trở về trang chủ
<?php
}
?>
9
B
à
i
7
:
P
H
P
k
ế
t
n
ố
i
C
S
D
L
M
yS
Q
L
|
9
/
2
6
/
2
0
0
7
4.3. Tìm sách (TimSach.php) & Xử lý tìm sách (xlTimsach.php)
1. Tìm sách
Tim sach
Tên sách
10
B
à
i
7
:
P
H
P
k
ế
t
n
ố
i
C
S
D
L
M
yS
Q
L
|
9
/
2
6
/
2
0
0
7
Trở về trang chủ
2. Xử lý tìm sách
Xu ly tim kiem
Kết quả tìm sách
<?php
// lấy tên sách tu trang TimKiem.php
$tenSach = $_REQUEST["txtTenSach"];
include_once("DataProvider.php");
$dsSach = DataProvider::ExecuteQuery("Select * From Book Where BookTitle like '%" . $tenSach . "%'");
if($dsSach != false)
{
if(mysql_num_rows($dsSach)>0)
{
?>
STT
Mã sách
Tựa sách
Giá tiền
Xóa
1
B
à
i
7
:
P
H
P
k
ế
t
n
ố
i
C
S
D
L
M
yS
Q
L
|
9
/
2
6
/
2
0
0
7
<?php
$stt = 1;
while($row = mysql_fetch_array($dsSach,MYSQL_ASSOC))
{
$maSach = $row["BookID"];
$tenSach = $row["BookTitle"];
$giaTien = $row["BookPrice"];
?>
<?php
echo($stt);
$stt++;
?>
<?php
echo($maSach);
?>
" >
" >
2
B
à
i
7
:
P
H
P
k
ế
t
n
ố
i
C
S
D
L
M
yS
Q
L
|
9
/
2
6
/
2
0
0
7
<?php
} // end while
?>
<?php
} // end if(mysql_num_rows($dsSach)>0)
else
{
echo ("Không tìm thấy sách với tựa " . $tenSach);
}
} // end if ($dsSach != false )
?>
Thêm một đầu sách mới
3
B
à
i
7
:
P
H
P
k
ế
t
n
ố
i
C
S
D
L
M
yS
Q
L
|
9
/
2
6
/
2
0
0
7
3. Xử lý Phân trang xlTimsach.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
transitional.dtd">
Untitled Document
Kết quả tìm sách
<?php
// Xử lý phân trang --------------------------------------------------------------------------
$rowsPerPage = 20;
$pageNum = 1;
// if $_GET['page'] defined, use it as page number
if(isset($_GET['page']))
{
$pageNum = $_GET['page'];
}
$offset = ($pageNum - 1) * $rowsPerPage;
// lấy tên sách tu trang TimKiem.php
$tenSach = $_REQUEST["txtTenSach"];
include_once("DataProvider.php");
4
B
à
i
7
:
P
H
P
k
ế
t
n
ố
i
C
S
D
L
M
yS
Q
L
|
9
/
2
6
/
2
0
0
7
$sql = "Select * From Book Where BookTitle like '%" . $tenSach . "%'";
$sql .= " LIMIT $offset, $rowsPerPage";
$dsSach = DataProvider::ExecuteQuery($sql);
if($dsSach != false)
{
if(mysql_num_rows($dsSach)>0)
{
?>
STT
Mã sách
Tựa sách
Giá tiền
Xóa
<?php
$stt = 1;
while($row = mysql_fetch_array($dsSach,MYSQL_ASSOC))
{
$maSach = $row["BookID"];
$tenSach = $row["BookTitle"];
$giaTien = $row["BookPrice"];
?>
<?php
echo($stt);
5
B
à
i
7
:
P
H
P
k
ế
t
n
ố
i
C
S
D
L
M
yS
Q
L
|
9
/
2
6
/
2
0
0
7
$stt++;
?>
" >
" >
<?php
} // end while
?>
<?php
// xuất ra danh sách các link liên kết phân trang
$sql = "SELECT COUNT(BookID) AS numrows FROM Book where BookTitle like '%" .
$_REQUEST["txtTenSach"] . "%'";
$result = DataProvider::ExecuteQuery($sql) ;
6
B
à
i
7
:
P
H
P
k
ế
t
n
ố
i
C
S
D
L
M
yS
Q
L
|
9
/
2
6
/
2
0
0
7
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];
$maxPage = ceil($numrows/$rowsPerPage);
// print the link to access each page
$self = $_SERVER['PHP_SELF'];
$nav = '';
for($page = 1; $page <= $maxPage; $page++)
{
if ($page == $pageNum)
{
$nav = " $page "; // no need to create a link to current page
}
else
{
$nav = " <a href='" . $self . "?page=" . $page;
$nav.= "&txtTenSach=".$_REQUEST["txtTenSach"]."' >" . $page . " ";
}
echo $nav;
}
} // end if(mysql_num_rows($dsSach)>0)
else
{
echo ("Không tìm thấy sách với tựa " . $tenSach);
}
} // end if ($dsSach != false )
?>
7
B
à
i
7
:
P
H
P
k
ế
t
n
ố
i
C
S
D
L
M
yS
Q
L
|
9
/
2
6
/
2
0
0
7
Thêm một đầu sách mới
4.4. Trang xử l y xóa sách ( xlXoa.php )
Xu ly Xoa sach
<?php
$bookIDDeleted = $_REQUEST["BookIDDeleted"];
include_once("DataProvider.php");
DataProvider::ExecuteQuery("Delete From Book Where BookID = " .
$bookIDDeleted);
?>
Đã xóa thành công cuốn sách có mã là
Tiếp tục tìm kiếm
Trở về trang chủ
1
B
à
i
7
:
P
H
P
k
ế
t
n
ố
i
C
S
D
L
M
yS
Q
L
|
9
/
2
6
/
2
0
0
7
4.5. Trang Thêm một đầu sách mới ( ThemSach.php )
Mã lệnh
Them mot cuon sach
Thêm một đầu sách mới
Thông tin sách
Tựa sách
2
B
à
i
7
:
P
H
P
k
ế
t
n
ố
i
C
S
D
L
M
yS
Q
L
|
9
/
2
6
/
2
0
0
7
Hình bìa
Nội dung tóm tắt
Thể loại
<?php
include_once("DataProvider.php");
$dsTheLoai = DataProvider::ExecuteQuery("Select * From Category");
if ( $dsTheLoai != false )
{
while ($row = mysql_fetch_array($dsTheLoai,MYSQL_ASSOC))
{
$maTheLoai = intval ($row["CategoryID"]);
$tenTheLoai = $row["CategoryName"];
?>
">
<?php
}
}
?>
Danh sách tên tác giả
Nhà xuất bản
<?php
$dsNhaXuatBan = DataProvider::ExecuteQuery("Select * From Publisher");
if($dsNhaXuatBan != false)
3
B
à
i
7
:
P
H
P
k
ế
t
n
ố
i
C
S
D
L
M
yS
Q
L
|
9
/
2
6
/
2
0
0
7
{
while($row = mysql_fetch_array($dsNhaXuatBan,MYSQL_ASSOC))
{
$maNhaXuatBan = $row["PublisherID"];
$tenNhaXuatBan = $row["PublisherName"];
?>
">
<?php
}
}
?>
Năm xuất bản
Giá tiền
nbsp;
Trở về trang chủ
4
B
à
i
7
:
P
H
P
k
ế
t
n
ố
i
C
S
D
L
M
yS
Q
L
|
9
/
2
6
/
2
0
0
7
Bổ xung mã lệnh xử l y việc ghi nhận một đầu sách mới trên trang ThemSach.php khi
người dùng click button Thêm mới
<?php
if(isset($_REQUEST["btnThemMoi"]))
{
include_once("DataProvider.php");
// ghi nhan sach moi
$sql = "Insert into Book ( BookTitle, BookDesc, BookCatID,
BookAuthor, BookPubID, BookYear, BookPrice ) values (";
$sql .= "'" . $_REQUEST["txtTenSach"] . "',";
$sql .= "'" . $_REQUEST["txtNoiDungTomTat"] . "',";
$sql .= $_REQUEST["cmbTheLoai"] . "," ;
$sql .= "'" . $_REQUEST["txtTacGia"] . "',";
$sql .= $_REQUEST["cmbNhaXuatBan"] . "," ;
$sql .= $_REQUEST["txtNamXuatBan"] . "," ;
$sql .= $_REQUEST["txtGiaTien"] . ")" ;
DataProvider::ExecuteQuery($sql);
$maSach = -1;
$sql = "select max(BookID) From Book";
$result = DataProvider::ExecuteQuery($sql);
if($result!=false)
{
$row = mysql_fetch_array($result,MYSQL_ASSOC);
$maSach = $row["max(BookID)"];
}
// upload hinh bia cuốn sách
if (is_uploaded_file($_FILES['fileUploadHinhBia']['tmp_name']))
{
$fileName = $_FILES['fileUploadHinhBia']['name'];
$pos = strrpos( $fileName, "." );
$fileExtension = substr($fileName,$pos);
$hinhBia = "upload/" . $maSach . $fileExtension;
move_uploaded_file($_FILES['fileUploadHinhBia']['tmp_name'], $hinhBia );
// cập nhật lại giá trị cột BookPic
$sql = "Update Book Set BookPic='" . $hinhBia . "' Where BookID=" . $maSach;
DataProvider::ExecuteQuery($sql);
}
}
?>
5
B
à
i
7
:
P
H
P
k
ế
t
n
ố
i
C
S
D
L
M
yS
Q
L
|
9
/
2
6
/
2
0
0
7
4.6. Trang cập nhật thông tin sách (CapNhat.php)
Quy trình xử ly:
- Lấy mã sách từ trang xlTimSach.php ( $_REQUEST[“BookID”])
- Tạo câu query truy vấn thông tin của sách cần cập nhật
- Thực thi câu query vừa tạo, đưa các thông tin truy vấn được vào các control trên trang
CapNhat.php
Xử l y sự kiện người dùng click vào button Cập nhật để hiệu chỉnh thông tin sách xuống
CSDL.