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ủ/=$row_tin['tentl'];???>/=$row_tin['ten'];???>
=$row_tin['tieude'];???>
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
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)
Ả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:
- giao_trinh_huong_dan_thiet_ke_web_php_va_mysql_phan_2.pdf