Lập trình và thiết kế Web 1 - Bài 7: PHP kết nối CSDL MySQL

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

pdf26 trang | Chia sẻ: franklove | Lượt xem: 2057 | Lượt tải: 1download
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.
Tài liệu liên quan