Giáo trình Hướng dẫn thiết kế Web PHP và MySQL (Phần 2)

1. Định nghĩa hàm lấy chi tiết 1 tin

function ChiTietTin($idTin) {

settype($idTin, "int");

$sql="SELECT idTin, TieuDe, TomTat, Ngay, urlHinh, Content, SoLanXem,

TinNoiBat, tin.AnHien, tin.idLT, Ten, tin.idTL, TenTL

FROM tin, loaitin, theloai

WHERE tin.idLT=loaitin.idLT AND loaitin.idTL=theloai.idTL AND

idTin=$idTin";

$kq = mysql_query($sql) or die(mysql_error());

return $kq; }

182. Tạo file chitiettin.php

$idTin = $_GET['idTin']; settype($idTin,"int");

$tin = $t->ChiTietTin($idTin);

$row_tin=mysql_fetch_assoc($tin);?>

Trang chủ//

Giáo trình Hướng dẫn thiết kế Web PHP và MySQL (Phần 2) trang 1

Trang 1

Giáo trình Hướng dẫn thiết kế Web PHP và MySQL (Phần 2) trang 2

Trang 2

Giáo trình Hướng dẫn thiết kế Web PHP và MySQL (Phần 2) trang 3

Trang 3

Giáo trình Hướng dẫn thiết kế Web PHP và MySQL (Phần 2) trang 4

Trang 4

Giáo trình Hướng dẫn thiết kế Web PHP và MySQL (Phần 2) trang 5

Trang 5

Giáo trình Hướng dẫn thiết kế Web PHP và MySQL (Phần 2) trang 6

Trang 6

Giáo trình Hướng dẫn thiết kế Web PHP và MySQL (Phần 2) trang 7

Trang 7

Giáo trình Hướng dẫn thiết kế Web PHP và MySQL (Phần 2) trang 8

Trang 8

Giáo trình Hướng dẫn thiết kế Web PHP và MySQL (Phần 2) trang 9

Trang 9

Giáo trình Hướng dẫn thiết kế Web PHP và MySQL (Phần 2) trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 122 trang duykhanh 5460
Bạn đang xem 10 trang mẫu của tài liệu "Giáo trình Hướng dẫn thiết kế Web PHP và MySQL (Phần 2)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Giáo trình Hướng dẫn thiết kế Web PHP và MySQL (Phần 2)

Giáo trình Hướng dẫn thiết kế Web PHP và MySQL (Phần 2)
ẢM BẢO BẰNG NHỮNG CAM KẾT CỤ THỂ 250
if($diachi == NULL) {$error[] = "Mời bạn cho biết địa chỉ";}
if($dienthoai== NULL) {$error[] = "Bạn ơi! Điện thoại người nhận chưa có"; }
if ($pttt==NULL) {$error[] = "Bạn chưa chọn phương thức thanh toán";}
if ($ptgh==NULL) {$error[] = "Bạn chưa chọn phương thức giao hàng";}
if (count($error)>0) return false;
if (get_magic_quotes_gpc()==false) {
 $hoten = mysql_real_escape_string($hoten);
 $diachi = mysql_real_escape_string($diachi);
 $dienthoai = mysql_real_escape_string($dienthoai);
 $ghichu = mysql_real_escape_string($ghichu);
 $pttt = mysql_real_escape_string($pttt);
 $ptgh = mysql_real_escape_string($ptgh);
} 
//l u d li u vào db
$iduser = $_SESSION['login_id'];
$sessid = session_id();
if (isset($_SESSION['idDH'])==false) {
 $sql="INSERT INTO donhang SET 
 iduser = $iduser, tennguoinhan = '$hoten', diachi = '$diachi', 
 dtnguoinhan = '$dienthoai', ghichu = '$ghichu', idpttt = '$pttt',
NHẤT NGHỆ – NƠI DUY NHẤT CHẤT LƯỢNG ĐÀO TẠO ĐƯỢC ĐẢM BẢO BẰNG NHỮNG CAM KẾT CỤ THỂ 251
 idptgh = '$ptgh', thoidiemdathang = now(), sessionid = '$sessid' ";
 $kq = mysql_query($sql) or die(mysql_error());
 $_SESSION['idDH'] = mysql_insert_id();
 }else{
 $idDH = $_SESSION['idDH'];
 $sql="UPDATE donhang SET 
 iduser = $iduser, tennguoinhan = '$hoten', diachi = '$diachi', 
 dtnguoinhan = '$dienthoai', ghichu = '$ghichu', idpttt = '$pttt', 
 idptgh = '$ptgh', thoidiemdathang = now(), sessionid = '$sessid' 
 WHERE idDH = $idDH";
 $kq = mysql_query($sql) or die(mysql_error());
 }
 } //function LuuDonHang
CIX. Lưu chi tiết đơn hàng , hiện thông báo, hiện nút thanh toán 
 (code trong phần else ở trên)
 1. Định nghĩa hàm lưu chi tiết đơn hàng
 function LuuChiTietDonHang(){
 $sosp = count($_SESSION['daySoLuong']);
 if ($sosp<=0) {echo "Không có sản phẩm"; return;}
 if (isset( $_SESSION['idDH'] )==false) {echo "Không có idDH"; return;}
 $idDH = $_SESSION['idDH'];
 NHẤT NGHỆ – NƠI DUY NHẤT CHẤT LƯỢNG ĐÀO TẠO ĐƯỢC ĐẢM BẢO BẰNG NHỮNG CAM KẾT CỤ THỂ 252
 $sql = "DELETE FROM donhangchitiet WHERE idDH = $idDH";
 mysql_query($sql) or die(mysql_error());
 reset( $_SESSION['daySoLuong'] ); reset( $_SESSION['dayDonGia'] );
 reset( $_SESSION['dayTenSP'] );
 for ($i = 0; $i<$sosp ; $i++) {
 $idSP = key( $_SESSION['daySoLuong'] );
 $tensp = current( $_SESSION['dayTenSP'] );
 $soluong = current( $_SESSION['daySoLuong'] );
 $gia = current( $_SESSION['dayDonGia'] );
 $sql ="INSERT INTO donhangchitiet (idDH, idSP, TenSP, SoLuong, Gia)
 VALUES ($idDH, $idSP, '$tensp',$soluong, $gia)";
 mysql_query($sql) or die(mysql_error());
 next( $_SESSION['daySoLuong'] ); next( $_SESSION['dayDonGia'] );
 next( $_SESSION['dayTenSP'] );
 }//for
}//function LuuChiTietDonHang
 281. Gọi hàm lưu chi tiết đơn hàng (trong xulydonhang.php, phần else):
$sp->LuuChiTietDonHang();
 282. Hiện thông báo và nút thanh toán:
//hi n thông báo
$idpttt = $_POST['pttt'];
 NHẤT NGHỆ – NƠI DUY NHẤT CHẤT LƯỢNG ĐÀO TẠO ĐƯỢC ĐẢM BẢO BẰNG NHỮNG CAM KẾT CỤ THỂ 253
 if ($idpttt=="tructiep")
 $thongbao = "Cảm ơn bạn. Đơn hàng đã được ghi nhận. Chúng tôi sẽ liên lạc với 
 bạn để thanh toán và giao hàng trong thời gian sớm nhất.";
 else {
 $tenpttt = $sp->LayTenPhuongThucTT($idpttt);
 $thongbao= "Bạn đã chọn phương thức thanh toán là $tenpttt. Mời bạn nhắp 
 vào nút bên dưới để thực hiện thanh toán"; 
 }
 echo $thongbao;
Định nghĩa hàm LayTenPhuongThucTT
 function LayTenPhuongThucTT($idpttt){
 $sql = "SELECT TenPhuongThucTT from phuongthucthanhtoan WHERE 
 idPTTT='$idpttt'";
 $kq = mysql_query($sql) or die(mysql_error());
 $row_kq = mysql_fetch_assoc($kq);
 $ten = $row_kq['TenPhuongThucTT'];
 return $ten;
 }
 283. Lấy code nút thanh toán và hiện ra (trong file xulydonhang)
 $codethanhtoan = $sp->LayCodeThanhToan($idpttt);
 $tongtien = $sp->TongTienGioHang();
 $email = "aa@bb.com";
 $urlsuccess = "";
 NHẤT NGHỆ – NƠI DUY NHẤT CHẤT LƯỢNG ĐÀO TẠO ĐƯỢC ĐẢM BẢO BẰNG NHỮNG CAM KẾT CỤ THỂ 254
$urlcancel = "";
$urldetails = "";
if ($idpttt=="nganluong") { 
 $codethanhtoan = str_replace("", $_SESSION['idDH']
 ,$codethanhtoan);
$codethanhtoan = str_replace("" , $tongtien , $codethanhtoan);
$codethanhtoan=str_replace("<!--Email chính tài khoản nhận tiền--
>",$email,$codethanhtoan);
$codethanhtoan=str_replace("<!--URL thanh toán thành công--
>",$urlsuccess,$codethanhtoan);
 $codethanhtoan = str_replace("", "" , $codethanhtoan);
}
if ($idpttt=="baokim") {
 $codethanhtoan=str_replace("" , $email , $codethanhtoan);
 $codethanhtoan=str_replace("" , $tongtien , $codethanhtoan);
 $codethanhtoan=str_replace("","Đơn hàng " . $_SESSION['idDH'], 
$codethanhtoan);
 $codethanhtoan = str_replace("" , 1 , $codethanhtoan);
 $codethanhtoan = str_replace("" , "" , $codethanhtoan); 
 $codethanhtoan = str_replace("" , $tongtien , $codethanhtoan);
 $codethanhtoan=str_replace("" , $urlsuccess , $codethanhtoan);
 $codethanhtoan = str_replace("" , $urlcancel , $codethanhtoan);
 $codethanhtoan = str_replace("" , $urldetails ,$codethanhtoan);
 NHẤT NGHỆ – NƠI DUY NHẤT CHẤT LƯỢNG ĐÀO TẠO ĐƯỢC ĐẢM BẢO BẰNG NHỮNG CAM KẾT CỤ THỂ 255
 }
 echo $codethanhtoan;
Định nghĩa hàm LayCodeThanhToan
 function LayCodeThanhToan($idPTTT){
 $sql = "SELECT code FROM phuongthucthanhtoan WHERE idPTTT='$idPTTT'";
 $kq = mysql_query($sql) or die(mysql_error());
 $row_kq = mysql_fetch_assoc($kq);
 return $row_kq['code'];
 }
CX. Lồng trang xulymuahang vào trang chủ
 1. Mở file muahang.php. 
 - Nhắp sau nút Tiếp tục, chèn hidden field tên view, giá trị là xulymuahang
 - Xoá thuộc tính action của form mua hàng
 284. Mở trang chủ
 - Trong div content, bổ sung thêm đoạn code để được như sau:
 <? 
 if ($view=="muahang") include "muahang.php";
 elseif ($view=="xulymuahang") include "xulymuahang.php";
 else include "spmoi.php";
 ?>
 - Lên đầu trang, sau lệnh tiếp nhận biến view, thêm code sau:
 if (isset( $_POST['btntieptuc'] )==true) $view = "xulymuahang";
 NHẤT NGHỆ – NƠI DUY NHẤT CHẤT LƯỢNG ĐÀO TẠO ĐƯỢC ĐẢM BẢO BẰNG NHỮNG CAM KẾT CỤ THỂ 256
YÊU CẦU SINH VIÊN THỰC HIỆN TẠI NHÀ
I. Tạo trang hiện chi tiết 1 sản phẩm 
 (làm giống trang chitiettin.php)
CXI. Tạo trang hiện các sản phẩm trong 1 loại 
 (giống trang spmoi.php)
CXII. Thực hiện chức năng tìm kiếm 
CXIII. Nhúng icon yahoo chat vào trang chủ
CXIV. Làm form login trên trang chủ
CXV. Làm phần quản trị
 NHẤT NGHỆ – NƠI DUY NHẤT CHẤT LƯỢNG ĐÀO TẠO ĐƯỢC ĐẢM BẢO BẰNG NHỮNG CAM KẾT CỤ THỂ 257
LAB BỔ SUNG:
ĐẾM SỐ NGƯỜI XEM TRONG TỪNG MỤC
I. Tạo table
 CREATE TABLE `sessions` (
 `idSession` varchar(100) NOT NULL,
 `username` varchar(100) default NULL,
 `ipAddress` varchar(20) NOT NULL,
 `idTL` int(11) default NULL,
 `idLT` int(11) default NULL,
 `lastVisit` int(14) NOT NULL,
 `session_start` int(14) NOT NULL,
 `userAgent` varchar(100) default NULL
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CXVI. Định nghĩa hàm lưu thông tin
 1. Khai báo hàm
 function LuuThongTin($idTL, $idLT){
 //code sẽ gõ 
 }
 285. Bên trong hàm, lấy thông tin người dùng:
 $ipAddress = $_SERVER['REMOTE_ADDR'];
 NHẤT NGHỆ – NƠI DUY NHẤT CHẤT LƯỢNG ĐÀO TẠO ĐƯỢC ĐẢM BẢO BẰNG NHỮNG CAM KẾT CỤ THỂ 258
 $userAgent = mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']
 );
 $username = $_SESSION['login_user'];
 $idSession = session_id();
286. Lấy thông tin session của user hiện hành trong bảng session
 $sql = "SELECT idSession FROM sessions WHERE idSession='$idSession'";
 $ses = mysql_query($sql) or die (mysql_error());
287. Kiểm tra xem user hiện tại có trong bảng session chưa, nếu có thì update, nếu 
chưa thì insert into
 if (mysql_num_rows($ses)>0 ){ // ng i này có r i, gi request l i 
 $sql=" UPDATE sessions SET
 lastVisit = unix_timestamp(), 
 username = '$username',
 idTL = $idTL, idLT = $idLT
 WHERE idSession='$idSession'";
 mysql_query($sql) or die(mysql_error()." : " . $sql);
 } else { //ng i này ch a có, m i vào l n đ u
 $sql=" INSERT INTO sessions SET
 idSession = '$idSession',
 userAgent = '$userAgent',
 lastVisit = unix_timestamp(),
 session_start = unix_timestamp(),
 NHẤT NGHỆ – NƠI DUY NHẤT CHẤT LƯỢNG ĐÀO TẠO ĐƯỢC ĐẢM BẢO BẰNG NHỮNG CAM KẾT CỤ THỂ 259
 username = '$username',
 ipAddress = '$ipAddress',
 idTL = $idTL, idLT = $idLT";
 mysql_query($sql) or die(mysql_error());
 }
 288. Xoá những người quá lâu
 $sessionTime = 15; //th i gian l u thông tin 
 $sql="DELETE FROM sessions 
 WHERE unix_timestamp() - lastVisit >= $sessionTime * 60";
 mysql_query($sql) or die(mysql_error());
CXVII. Gọi hàm LuuThongTin
 - Mở trang home.php và gọi ham LuuThongTin
 $t->LuuThongTin(0,0);
 - Mở file tintrongloai.php và gọi hàm LuuThongTin để lưu thông tin user 
 $idTL = $row_loaitin['idTL'];
 $t->LuuThongTin($idTL, $idLT);
 - Mở file chitiettin.php và gọi hàm LuuThongTin để lưu thông tin user 
 $idTL = $row_tin['idTL'];
 $idLT = $row_tin['idLT'];
 $t->LuuThongTin($idTL, $idLT);
CXVIII. Tạo hàm đếm số user đang xem trong từng loại tin , trong từng thể loại
 NHẤT NGHỆ – NƠI DUY NHẤT CHẤT LƯỢNG ĐÀO TẠO ĐƯỢC ĐẢM BẢO BẰNG NHỮNG CAM KẾT CỤ THỂ 260
NHẤT NGHỆ – NƠI DUY NHẤT CHẤT LƯỢNG ĐÀO TẠO ĐƯỢC ĐẢM BẢO BẰNG NHỮNG CAM KẾT CỤ THỂ 261
CXIX. Thống kê số người đang xem từng loại
 a. Mở file usersonline_thongke.php 
 b. Phía sau chỗ hiện tên loại tin, gọi hàm SoNguoiXemLT và truyền tham số idTL, idLT
CXX. Hiện thông tin tổng kết 
 c. Tạo file usersonline_tongket.php
 d. Chạy câu lệnh như bên dưới, lấy thông tin lưu vào biến $row
 $sql="SELECT sum( if( username '' , 1 , 0 ) ) As SoThanhVien, 
 sum( if( username ='' , 1 , 0 ) ) As SoKhach , 
 count(*) As TongSoNguoi 
 FROM sessions";
 $kq = mysql_query($sql);
 $row= mysql_fetch_assoc($row);
 e. Hiện ra trong trang web thông tin như sau:
 Hiện có người xem trang web. 
 Trong đó có thành viên 
 Và khách.
 NHẤT NGHỆ – NƠI DUY NHẤT CHẤT LƯỢNG ĐÀO TẠO ĐƯỢC ĐẢM BẢO BẰNG NHỮNG CAM KẾT CỤ THỂ 262
f. Đưa file usersonline_thongke.php vào trang chủ (đặt ở đâu tùy ý, dùng include hoặc 
 request ajax với hàm: load, $.ajax, $,get, $.post)
Chú ý: Với việc tạo bảng session trên, bạn có thể đếm số thành viên, số khách ; có thể liệt kê 
các username đang online; có thể đếm số người dùng firfox số người dùng ie; biết bao nhiêu 
người đến từ viêt nam bao nhiêu người từ nước ngoài (dựa vào ip address); có thể ứng dụng 
bảng session để quy định mỗi username không được login đồng thời từ nhiều máy (dựa vào ip 
và usergent)
 NHẤT NGHỆ – NƠI DUY NHẤT CHẤT LƯỢNG ĐÀO TẠO ĐƯỢC ĐẢM BẢO BẰNG NHỮNG CAM KẾT CỤ THỂ 263
ĐĂNG NHẬP POPUP
I. Tạo form đăng nhập
 ĐĂNG NHẬP
 Tên đăng nhập:
 Mật khẩu:
   
 Ghi nhớ 
 Đóng 
 Mời bạn đăng nhập
 Định dạng CSS
 NHẤT NGHỆ – NƠI DUY NHẤT CHẤT LƯỢNG ĐÀO TẠO ĐƯỢC ĐẢM BẢO BẰNG NHỮNG CAM KẾT CỤ THỂ 264
CXXI. Tạo link đăng nhập: 
 Mở file home, thêm divlogin ngay sau mở đầu của div content3
 Đăng nhập
 Quên mật khẩu
 Đăng ký
CXXII. Nạp form đăng nhập 
 1. Mở file home
 289. Ở cuối tag body, tạo 2 div có id là divche và divpopup
 290. Định dạng 
 #divche { width:5000px; height:5000px; background-color:#000; 
 position:absolute; z-index:1; top:0; left:0; display:none}
 #divpopup{position:absolute; top:100px; left:300px; height:150px;
 z-Index:1; display:none }
 291. Code nạp form:
 $("#linkdangnhap").click(function(){
 $("#divche").show();
 $("#divche").fadeTo(0,0.8);
 $("#divpopup").load("formdangnhap.php").slideDown(500);
 });
 292. Code đóng form đăng nhập
 NHẤT NGHỆ – NƠI DUY NHẤT CHẤT LƯỢNG ĐÀO TẠO ĐƯỢC ĐẢM BẢO BẰNG NHỮNG CAM KẾT CỤ THỂ 265
 function dongformdangnhap(){
 $("#divche").hide();
 $("#divpopup").slideToggle();
 }
Test
293. Nạp trang kết quả đăng nhập: 
- Code jquery trong formdangnhap.php
 $(document).ready(function(){
 $("#btndn").click(function(){
 dulieu = $("#formdangnhap").serialize(); //alert(dulieu);
 $.post("ketquadangnhap.php",dulieu, xuly);
 });
 });
 function xuly(data){
 if (data=="OK"){ 
 username = $("#username").val(); 
 $("#divdangnhap").html("Đăng nhập thành công</
 p>");
 $("#divlogin").html("Chào bạn " + username + "");
 $("#divlogin").append("Đổi pass");
 $("#divlogin").append("Thoát");
 $("#divthongbao").html("Chúc mừng bạn");
 NHẤT NGHỆ – NƠI DUY NHẤT CHẤT LƯỢNG ĐÀO TẠO ĐƯỢC ĐẢM BẢO BẰNG NHỮNG CAM KẾT CỤ THỂ 266
 setTimeout('dongformdangnhap()',2000);
 }
 else $("#thongbao").html(data);
 } //function xuly
 - Tạo file ketquadangnhap.php , Gõ chữ OK và test
CXXIII. Thực hiện trang xử lý đăng nhập
 1. Định nghĩa class user kế thừa từ class db 
 <?php require_once "classdb.php";
 class user extends db{
 //code trong class user
 }
 ?>
 294. Định nghĩa hàm 
 function KiemTraUsernameTonTai($username){
 $sql = "SELECT * FROM users WHERE username='$username'";
 $user = mysql_query($sql) or die (mysql_error());
 if (mysql_num_rows($user) <=0) return false;
 else return true;
 }
 function ThongTinUser($user, $pass){
 if (get_magic_quotes_gpc()==false) {
 $user=trim(mysql_real_escape_string($user));
 NHẤT NGHỆ – NƠI DUY NHẤT CHẤT LƯỢNG ĐÀO TẠO ĐƯỢC ĐẢM BẢO BẰNG NHỮNG CAM KẾT CỤ THỂ 267
 $pass=trim(mysql_real_escape_string($pass));
 }
 $sql = "SELECT * FROM users WHERE username='$user' AND password ='$pass'";
 $kq = mysql_query($sql) or die(mysql_error());
 return $kq;
 }
295. Xử lý đăng nhập : file ketquadanghap.php
 session_start();
 require_once ("classUser.php"); 
 $u = new user;
 $username = $_POST['username'];
 $password = md5($_POST['password']); 
 if ( $u->KiemTraUsernameTonTai($username)==false) 
 echo "Username $username không tồn tại";
 else {
 $user = $u->ThongTinUser($username, $password);
 if (mysql_num_rows($user)<=0) echo "Mật khẩu sai rồi bạn ơi";
 else{
 $row_user = mysql_fetch_assoc($user);
 NHẤT NGHỆ – NƠI DUY NHẤT CHẤT LƯỢNG ĐÀO TẠO ĐƯỢC ĐẢM BẢO BẰNG NHỮNG CAM KẾT CỤ THỂ 268
 $_SESSION['login_id'] = $row_user['idUser'];
 $_SESSION['login_user'] = $row_user['Username'];
 $_SESSION['login_level'] = $row_user['idGroup'];
 $_SESSION['login_HoTen'] = $row_user['HoTen'];
 echo "OK";
 }
 }
CXXIV. Tạo file thoat.php (Mời bạn tự làm)
CXXV. Hiện lời chào khi user nạp lại trang
 - Mở File home.php: sửa div login để có được như sau:
 Đăng nhập
 Quên mật khẩu
 Đăng ký
 Chào bạn 
 Đổi pass
 Thoát
 NHẤT NGHỆ – NƠI DUY NHẤT CHẤT LƯỢNG ĐÀO TẠO ĐƯỢC ĐẢM BẢO BẰNG NHỮNG CAM KẾT CỤ THỂ 269
- Khi form đăng nhập hiện lên, nếu user gõ phím Enter sẽ thực hiện login
 $("#formdangnhap").keypress(function(e){
 if (e.which==13) $("#btndn").click();
 });
 NHẤT NGHỆ – NƠI DUY NHẤT CHẤT LƯỢNG ĐÀO TẠO ĐƯỢC ĐẢM BẢO BẰNG NHỮNG CAM KẾT CỤ THỂ 270

File đính kèm:

  • pdfgiao_trinh_huong_dan_thiet_ke_web_php_va_mysql_phan_2.pdf