Xây dựng Website bán hoa Flower Shop

Tiếp theo đồ án kỳ 8: Tìm hiểu về PHP, PHPMyAdmin, MySQL. Trong đồ án kỳ 9 này em xin phép được tìm hiểu và xây dựng cơ bản Website bán hoa Flower Shop. Do trình độ còn hạn chế cũng như thời gian hạn hẹp nên em chỉ dừng lại ở việc xây dựng Webstie cơ bản. Với việc đăng ký trở thành thành viên và đăng nhập khi mua hàng. Bên cạnh đó là giới thiệu hoa cũng như cho phép khách hàng lựa chọn hoa vào giỏ hàng. Đây chỉ là bước khởi đầu trong việc xây dựng đồ án tốt nghiệp :Xây dựng Website bán hoa Flower Shop.

doc56 trang | Chia sẻ: lvbuiluyen | Ngày: 05/09/2013 | Lượt xem: 1718 | Lượt tải: 2download
Bạn đang xem nội dung tài liệu Xây dựng Website bán hoa Flower Shop, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Lời nói đầu Tiếp theo đồ án kỳ 8: Tìm hiểu về PHP, PHPMyAdmin, MySQL. Trong đồ án kỳ 9 này em xin phép được tìm hiểu và xây dựng cơ bản Website bán hoa Flower Shop. Do trình độ còn hạn chế cũng như thời gian hạn hẹp nên em chỉ dừng lại ở việc xây dựng Webstie cơ bản. Với việc đăng ký trở thành thành viên và đăng nhập khi mua hàng. Bên cạnh đó là giới thiệu hoa cũng như cho phép khách hàng lựa chọn hoa vào giỏ hàng. Đây chỉ là bước khởi đầu trong việc xây dựng đồ án tốt nghiệp :Xây dựng Website bán hoa Flower Shop. Mục lục Lời nói đầu 1 Phần I:Thiết kế cơ sở dữ liệu 3 I. Cấu trúc cơ sở dữ liệu 3 Bảng sản phẩm 3 III.Bảng khách hàng 4 IV.Bảng Tỉnh 4 Phần II Xây dựng các trang cơ bản của Flower Shop 5 I. Trang Top.php 5 II. Trang Left.php 5 III. Trang Right.php 8 IV. Trang Bottom.php 9 V. Trang KNCSDL.php 10 VI. Trang Phantrang.php 10 VII.Trang Chung.php 11 VII.Trang Index.php 12 Phần III. Xây dựng phần đăng ký 14 I. Trang Dangky.php 14 II. Trang Xacnhan.php 20 III Trang Camon.php 24 Phần IV Xây dựng phần đăng nhập 27 I. Trang Dangnhap.php 27 II. Trang XNDangnhap.php 31 Phần V. Danh sách sản phẩm 34 I. Trang Danghsach.php 34 II. Trang ChitietSP.php 40 Phần VI. Chọn hàng 44 I. Trang Vaogiohang.php 44 II. Trang Xemgiohang.php 47 Kết luận……………………………………………………………….. 55 Tài liệu tham khảo 56 Phần I: Thiết kế cơ sở dữ liệu. I.Cấu trúc cơ sở dữ liệu Do sử dụng cơ sở dữ liệu MySQL là cơ sở dữ liệu có quy mô nhỏ, chính vì vây không thể phát triển ứng dụng bên trong của cơ sở dữ liệu này như các cơ sở dữ liệu có quy mô lớn hơn. Khi xây dựng ứng dụng này theo hướng ứng dụng Web, em chọn trung tâm vấn đề là sản phẩm và chọn hàng. Cụ thể hơn ở trong đồ án kỳ này em xây dựng chỉ đơn giản 3 bảng dữ liệu liệu liên quan. Đó là bảng sản phẩm, bảng khách hàng và bảng tỉnh. Bảng sản phẩm dùng để chứa các sản phảm liên quan đến các sản phẩm về hoa. Bảng khách hàng dùng để lưu các thông tin liên quan về khách hàng tạo điều kiện thuận tiện trong việc đặt hàng sau này của khách. Đồng thời cũng là giúp khách hàng đăng nhập một cách nhanh chóng và thuận tiện. Đối với bảng tỉnh lưu giữ các tỉnh trong nước giúp khách hàng trong phần đăng kỳ được thuận tiện và tạo sự chuẩn hoá đồng thời cũng là 1 phần trong tính cước vận chuyển trong hợp đồng mua hàng sẽ được xây dựng trong đồ án kỳ sau. II.Bảng sản phẩm: Trong đó : -MaSP là mã của sản phẩm, được đánh số một cách tự động. -TenSP là tên của sản phẩm. -GiaSP là giá của sản phẩm. -GiaodichSP là cho biết sản phẩm có còn để giao dich hay khong. Nó mang giá trị là 1 hoặc 0. 1 có ngghia là còn giao dich. 0 nghia là đã hết sản phẩm. -ChitietSP là chi tiết về sản phẩm được trình bày. -HinhanhSP là chứa hình ảnh của sản phẩm. III. Bảng khách hàng : Trong đó : -MaKH là mã của khách hàng. Được đánh số tự động khi khách hàng đăng ký. -TenKH là tên dùng để đăng nhập khi khách quay lại Flowershop. -MKKH là mật khẩu của khách hàng khi đăng nhập Flower Shop. -HTKH là họ tên đầy đủ của khách hàng. -DCKH là địa chỉ của khách hàng. -DTKH là điện thoại của khách hàng. -TPKH là thành hay quận huyện nơi khách hàng sống. -TKH là tỉnh nơi khách hàng sống. IV. Bảng Tỉnh : Trong đó : -MaTinh là mã của tỉnh. -TenTinh là tên của tỉnh Phần II Xây dựng các trang cơ bản của FlowerShop Tất cả các trang Web của Flower Shop đều có nội dung của các phần Top, Left, Right và Bottom lặp đi và lặp lại. Chi riêng phần thân của trang Web là có sự khác nhau tuỳ thuộc vào nội dung của trang.Cho nên em tạo ra 4 trang: Top.php, Left.php, Right.php và Bottom.php để khi cần chúng ta có thể dùng lời gọi Require() để nạp các file trên. Ngoài ra em còn xây dựng các trang như KNCSDL.php để thực hiện việc kết nối với cơ sở dữ liệu. Bên cạnh đó là trang phantrang.php dùng để sắp xếp và phân chia số sản phẩm trên một trang cho phù hợp. Trang Top.php <table cellspacing="0" cellpadding="0" border="0" align="center" width ="100%"> Trang chủ  |</b Đăng nhập |  Đăng ký   |  Trang Left.php Hoa theo mẫu   Hoa theo ngày lễ Ngày 14 -2 Ngày 8-3 Ngày 20-10 Ngày 1-5   Hoa theo giá 20.000-50.000 50.000-100.000 100.000-150.000 150.000-200.000 200.000-250.000   Thông tin trợ giúp Giá vận chuyển Trợ giúp mua hàng Khuyến mại Ở trong trang Left.php này có lời gọi đến trang hoamau.php. Trang này chứa trang Danhsach.php. Đây là trang chứa tất cả các sản phẩm của Flower Shop được sắp xếp theo thứ tự ABC. Bất cứ khi nào khách hàng lựa chọn trang này, trang sản phẩm sẽ cung cấp tất cả các sản phẩm mà Flower Shop đang có. Trang Right.php Tài khoản Giỏ hàng Đặt hàng IV) Trang Bottom.php      Copyright ; 2005-2006 Flower Shop. Copy by Pham Le Nghi. Trang KNCSDL.php <?php $link = mysql_connect ("localhost", "root", "triadpass") or die ("Không thể kết nối với CSDL MySQL "); mysql_select_db("FlowerShop", $link); ?> Trang phantrang.php <?php function paging($totalRows,$curPg,$pg,$re) { $paging=""; $mxR = $re; $mxP = $pg; if($totalRows%$mxR==0) $totalPages = (int)($totalRows/$mxR); else $totalPages = (int)($totalRows/$mxR+1); $curRow = ($curPg-1)*$mxR+1; $paging ="Current Page : "; $paging .="".$curPg; $paging .="   "; $paging .="Total pages : "; $paging .=""; $paging .=$totalPages." "; if($totalRows>$mxR) { $start=1; $end=1; $paging1 =""; for($i=1;$i<=$totalPages;$i++) { if(($i>((int)(($curPg-1)/$mxP))* $mxP) && ($i<=((int)(($curPg-1)/$mxP+1))* $mxP)) { if($start==1) $start=$i; if($i==$curPg) $paging1 .= $i."  "; else { $paging1 .= "<a href='javascript:"; $paging1 .="GotoPage(".$i.");'>".$i; $paging1 .="  "; } $end=$i; } } $paging.= "Go to page :  " ; if($curPg>$mxP) { $paging .="<a href='javascript:"; $paging .="GotoPage(".($start-1); $paging .=");'>Previous  "; } $paging.=$paging1; if(((($curPg-1)/$mxP+1)*$mxP) < $totalPages) { $paging .= "<a href='javascript:"; $paging .="GotoPage(".($end+1); $paging .=");'>Next  "; } } return $paging; } ?> Trang Chung.php <?php function repl($str) { return str_replace("'","''",$str); } function Separate($lsX,$lsY) { $x= strpos($lsX, $lsY,1)+strlen($lsY)+1; $y= strpos($lsX,"(",$x-1); return substr($lsX,$x,$y-$x-1); } $provinces=array("Thái Nguyên","Hà Nội","Thái Bình","Nghệ An","Hà Tỉnh","Huế","Hồ Chí Minh"); ?> Trang Index.php Flower Shop <BODY text="#333333" vLink="#ff9900" aLink="#FFCC00" link="#FFFFFF" bgColor="#ffffff" leftMargin= "0" topMargin="0" marginheight="0" marginwidth="0" rightmargin="0" onLoad= "if(document.all&&window.print)init()" > <?php require("top.php"); ?> <?php require("left.php"); ?> Chào mừng bạn đã đến với FLower Shop <?php require("right.php"); ?>   <?php require("bottom.php"); ?> Phần III Xây dựng phần đăng ký Ở trong phần đăng ký này đựoc chia thành 3 phần. Bao gồm phần khách hàng đăng ký, khách hàng xác nhận và phần xác nhận đăng ký thành công từ Flower Shop. Khi khách hàng đăng nhập thông tin để trở thành khách hàng thường xuyên của Flower Shop thông qua trang Dangky.php. Trang xác nhận sẽ lấy thông tin và kết nối cơ sở dữ liệu để kiểm tra xem tên đăng nhập đã được sử dụng hay chưa. Nếu đã tồn tại thi thông báo cho khách hàng biết để chọn tên khác. Nếu chưa thì cho phép đăng ký trở thành khách hàng của Flower Shop. Khi khách hàng đăng ký thành công trang Camon.php sẽ xuất hiện thông báo khách hàng đã đăng ký thành công và trở thành khách hàng thường xuyên của Flower Shop. I) Trang Dangky.php Flower Shop <link rel="stylesheet" type="text/css" href="style.css"> function checkInput() { if (document.frmNew.txtTen.value=="") { alert("Sai kiểu tên tài khoản"); document.frmLogin.txtUser.focus(); return false; } if (document.frmNew.txtMK.value=="") { alert("Xin hãy nhập lại mật khẩu"); document.frmNew.txtMK.focus(); return false; } if (document.frmLogin.txtMK.value!=document.frmLogin.txtMKXN.value) { alert("Mật khẩu xác nhận không khớp. Hãy nhập lại."); document.frmNew.txtMK.focus(); return false; } if (document.frmNew.txtHT.value=="") { alert("Hãy nhập vào họ tên"); document.frmNew.txtHT.focus(); return false; } if (document.frmNew.txtDC.value=="") { alert("Hãy nhập vào địa chỉ"); document.frmNew.txtDC.focus(); return false; } if (document.frmNew.txtDT.value=="") { alert("Hãy nhập vào điện thoại"); document.frmNew.txtDT.focus(); return false; } if (document.frmNew.txtDT.value=="") { alert("Hãy nhập vào điện thoại"); document.frmNew.txtHT.focus(); return false; } if (document.frmNew.txtTP.value=="") { alert("Hãy nhập vào thành phố, huyện "); document.frmNew.txtTP.focus(); return false; } if (document.frmNew.cbTinh.value=="") { alert("Hãy chọn tỉnh"); return false; } return true; } <BODY text="#333333" vLink="#ff9900" aLink="#FFCC00" link="#FFFFFF" bgColor="#ffffff" leftMargin= "0" topMargin="0" marginheight="0" marginwidth="0" rightmargin="0" onLoad= "if(document.all&&window.print)init()" > <?php require("top.php"); ?>    Đăng ký trở thành khách hàng của FlowerShop Tên đăng nhập * Mật khẩu * Nhập lại mật khẩu: * input type="password" name="txtMKXN" size="25" maxlength="8" class="textbox"> Họ và tên * Địa chỉ * Số điện thoại : * Thành phố, Huyện * Tỉnh * -Hãy lựa chọn- Thái Nguyên Hà Nội Thái Bình Nghệ An Hà Tĩnh Thừa Thiên Huế Hồ Chí Minh   <?php require("bottom.php"); ?> II) Trang Xacnhan.php: <?php require("KNCSDL.inc"); $sql="select * from tblkhachang"; $sql=$sql." where TenKH='" ; $sql=$sql.$HTTP_POST_VARS{"txtTen"}."'"; $result = mysql_query($sql,$link); $isexist=0; if (mysql_num_rows($result)!=0) $isexist=1; mysql_close($link); ?> Flower Shop <BODY text="#333333" vLink="#ff9900" aLink="#FFCC00" link="#FFFFFF" bgColor="#ffffff"leftMargin= "0" topMargin="0" marginheight="0" marginwidth="0" rightmargin="0" onLoad="if(document.all&&window.print)init()" > <?php require("top.php"); ?> Xác nhận Tên tài khoản: Mật khẩu: Họ và tên: Địa chỉ: Điện thoại: Thành phố hay huyện: Tỉnh: <?php if ($isexist){ ?> alert("Xin lỗi tên này đã được sử dụng. Bạn hãy chọn tên khác"); window.history.go(-1); <?php } if ($isexist==0){ ?> <input type="hidden" name="txtTen"value=" "> "> "> "> "> "> <input type="hidden" name="cbTinh"value=" "> <?php } ?>   <?php require("bottom.php"); ?> III)Trang Camon.php: <?php session_start(); session_register("suid"); require("KNCSDL.inc"); require("Chung.php"); $sql="insert into tblkhachang(TenKH,MKKH,"; $sql .="HTKH,DCKH,DTKH,TPKH,TKH)"; $sql .=" values('"; $sql .=repl($HTTP_POST_VARS{"txtTen"})."','"; $sql .=repl($HTTP_POST_VARS{"txtMK"})."','"; $sql .=repl($HTTP_POST_VARS{"txtHT"})."','"; $sql .=repl($HTTP_POST_VARS{"txtDC"})."','"; $sql .=repl($HTTP_POST_VARS{"txtDT"})."','"; $sql .=repl($HTTP_POST_VARS{"txtTP"})."','"; $sql .=$HTTP_POST_VARS{"cbTinh"}."')"; $result = mysql_query($sql,$link); mysql_close($link); ?> Welcome to Flower Shop <?php require("top.php"); ?>    Cảm ơn Tài khoản của bạn đã được đăng ký Cảm ơn bạn đã sử dụng Flower Shop   <?php require("bottom.php"); ?> Phần IV Xây dựng phần đăng nhập Ở trong phần này em xin phép được trình bày về khách hàng đăng nhập. Khi khách hàng đăng nhập, trang Web sẽ kết nối với cơ sở dữ liệu và kiểm tra xem khách hàng có tồn tại trong Flower Shop hay không. Nếu khách hàng không tồn tại thì sẽ quay lại trang đăng nhập vì có thể khách hàng đăng nhập sai tên tài khoản hoặc sai mật khẩu. Còn nếu khách hàng đăng nhập thành công trang XNdangnhap.php xuất hiện thông báo khách hàng đã đăng nhập thành công. I)Trang Dangnhap.php <?php session_start(); $msg="Đăng nhập vào tài khoản của bạn"; if(session_is_registered("scustid")) { session_register("scustid"); switch($scustid) { case -2: $msg="Bạn chưa đăng ký tại Flower Shop "; $msg .= "Xin hãy nhập vào tài khoản"; break; case -1: $msg="Sai mật khẩu. "; $msg .= "Xin hãy nhập lại mật khẩu"; break; case -3: $msg="Tài khoản đã bị khoá."; $msg .= "Liên hệ với Quản trị Flower Shop"; break; default: $msg="Xin hãy đăng nhập vào Flower Shop "; $msg .="Tên tài tài khoản và mật khẩu"; } } ?> Flower Shop function checkInput() { if (document.frmLogin.txtTen.value=="") { alert("Sai kiểu cách tên tài khoản. Xin hãy nhập lại tên tài khoản"); document.frmLogin.txtTen.focus(); return false; } if (document.frmLogin.txtMK.value=="") { alert("Xin hãy nhập vào mật khẩu"); document.frmLogin.txtMK.focus(); return false; } return true; } <BODY text="#333333" vLink="#ff9900" aLink="#FFCC00" link="#FFFFFF" bgColor="#ffffff" leftMargin="0" topMargin="0" marginheight="0" marginwidth="0" rightmargin="0" onLoad="if(document.all&&window.print)init()" > <?php require("top.php"); ?>    Khách đăng nhập Tên tài khoản Mật khẩu:   <?php require("bottom.php"); ?> II) Trang XNDangnhap.php Flower Shop <BODY text="#333333" vLink="#ff9900" aLink="#FFCC00" link="#FFFFFF" bgColor="#ffffff" leftMargin="0" topMargin="0" marginheight="0" marginwidth="0" rightmargin="0" onLoad="if(document.all&&window.print)init()" > <?php require("top.php"); ?> <?php session_start(); require("KNCSDL.inc"); $sql="select * from tblkhachang where TenKH ='".$HTTP_POST_VARS{"txtTen"}."'"; $result = mysql_query($sql, $link); $totalRows=mysql_num_rows($result); if($totalRows > 0) { $row=mysql_fetch_row($result); if($row[2]==$HTTP_POST_VARS{"txtMK"}) echo "Tài khoản đã được đăng nhập"; else echo "Lỗi đăng nhập!"; } else echo "Lỗi đăng nhập!"; ?>   <?php require("bottom.php"); ?> Phần V Danh sách sản phẩm Có nhiều kiểu trình bày sản phẩm, từ sắp xếp sản phẩm theo thứ tự ABC hoặc sắp xếp theo mã sản phẩm… Ở đây em xin phép được trình bày theo thứ tự ABC tên của sản phẩm. Khi khách hàng xem một sản phẩm, trang chi tiết sản phẩm sẽ xuất hiện, cho khách hàng biết về mã sản phẩm, tên sản phẩm, giá sản phẩm cũng như chi tiết về sản phẩm. Nếu khách hàng đồng ý chọn sản phẩm thì sản phẩm sẽ được đưa vào giỏ hàng thông qua trang Giohang.php. Trang Danhsach.php <?php $alpha=(isset($alpha))?$alpha:"All"; ?> Flower Shop <!-- td { font-size: 11px} a:link { font-size: 11px; text-decoration: none} a:active { font-size: 11px; text-decoration: none} a:hover { font-size: 11px; text-decoration: none} a:visited { font-size: 11px; text-decoration: none} --> function view(id) { var arg= "width=500,height=400,resizable=no,scrollbars=yes,status=0,top=0,left=0"; window.open ("chitietSP.php?MaSP="+ id +"&file=DanhsachSP.php","_parent"); } //----BEGIN implement for paging----------//s function GotoPage(iPage) { document.form1.curPg.value=iPage document.form1.submit() } <BODY text="#333333" vLink="#ff9900" aLink="#FFCC00" link="#FFFFFF" bgColor="#ffffff" leftMargin="0" topMargin="0" marginheight="0" marginwidth="0" rightmargin="0" onLoad="if(document.all&&window.print)init()" > <?php require("top.php"); ?> <?php require("left.php"); ?> " method=post name=form1> <?php require("KNCSDL.inc"); require("phantrang.php"); $wh=""; $msg=""; $alpha=str_replace ("'", "''", $alpha); $msg= "Tât cả sản phẩm"; if($alpha!="" && $alpha!="All") { $wh.=" and TenSP like '".$alpha."%'"; $msg= "".$alpha.""; } $wh=" and (GiaodichSP=1 ".$wh.")"; $sortby=" order by TenSP"; $totalRows = 0; $stSQL ="select MaSP,TenSP,GiaSP from tblsanpham "; $stSQL.=$sortby; $result = mysql_query($stSQL, $link); $totalRows=mysql_num_rows($result); $maxPages =5; $maxRows=5; $curPg=(isset($curPg))?$curPg:1; if($curPg=="") $curPg =1; $curRow = ($curPg-1)*$maxRows+1; mysql_close($link); ?> TT Tên SP Giá SP <?php if($totalRows>0) { $i=0; $low=$curRow; $curRow=1; while (($row = mysql_fetch_array ($result))&&($curRow<=$totalRows) && ($curRow <= $curPg*$maxRows)) { $curRow++; if($curRow>$low) { $MaSP=$row["MaSP"]; $TenSP=$row["TenSP"]; $GiaSP=$row["GiaSP"]; $i+=1; ?> ');"> .jpg"> <?php }} }else{ ?>   Hoa đã bán hết.Bạn vui lòng quay lại sau. <?php } ?> Tổng số sản phẩm đã có <?php require("right.php"); ?>   <?php require("bottom.php"); ?> Trang chitietSP.php    <?php require("KNCSDL.inc"); $wh=""; $ID=$HTTP_GET_VARS{"MaSP"}; $ID=str_replace ("'", "''", $ID); if($ID!="") { $wh.=" and MaSP= '".$ID."'"; } $wh=" and (GiaodichSP=1 ".$wh.")"; $stSQL ="select * from tblsanpham".$wh; //echo $stSQL; $result = mysql_query($stSQL, $link); $totalRows=mysql_num_rows($result); ?> <?php $isexiting=0; if($row = mysql_fetch_array ($result)) { $isexiting=1; $MaSP=$row["MaSP"]; $TenSP=$row["TenSP"]; $ChiTietSP=$row["ChitietSP"]; $GiaSP=$row["GiaSP"]; } if($isexiting==1) { ?>   </b   .jpg"> Gia   "> ">   Chi tiet           <?php } ?> <?php } else { ?>   Không có sản phẩm phẩm nào trong danh sách. <?php } ?> Phần V Chọn hàng Khi khách hàng chọn hàng xong có thể kiểm tra lại những mặt hàng mà mình đã chọn mua. Khách hàng có thể vào trang Vaogiohang.php để kiểm tra. Trang Vaogiohang.php <?php session_start(); if(!session_is_registered("cart")) { $cart = $MaSP.","; session_register("cart"); } else if(!(strpos($cart,$MaSP.",")>0)) $cart .=$MaSP.","; ?> Flower Shop <BODY text="#333333" vLink="#ff9900" aLink="#FFCC00" link="#FFFFFF" bgColor="#ffffff" leftMargin="0" topMargin="0" marginheight="0" marginwidth="0" rightmargin="0" onLoad="if(document.all&&window.print)init()" > <?php require("top.php"); ?>       Thêm vào giỏ hàng Bạn đã lựa chọn sản phẩm này vào giỏ hàng Cảm ơn bạn đã sử dụng Flower Shop    method=post> <input type=submit value="Tiếp tục chọn hoa" class=button name="submit"> <input type=submit value="Xem giỏ hàng" class=button name="submit">   <?php require("bottom.php"); ?> II) Trang Xemgiohang.php <?php session_start(); ?> Flower Shop function view(id) { var arg= "width=500,height=400,resizable=no,scrollbars=yes,status=0,top=0,left=0"; window.open ("chitietSP.php?MaSP="+ id ,"a",arg); } function docheckone() { var alen=document.frmList.elements.length; var isChecked=true; alen=(alen>5)?document.frmList.chkid.length:0; if (alen>0) { for(var i=0;i<alen;i++) if(document.frmList.chkid[i].checked==false) isChecked=false; }else { if(document.frmList.chkid.checked==false) isChecked=false; } document.frmList.chkall.checked=isChecked; } function docheck(status,from_) { var alen=document.frmList.elements.length; alen=(alen>5)?document.frmList.chkid.length:0; if (alen>0) { for(var i=0;i<alen;i++) document.frmList.chkid[i].checked=status; }else { document.frmList.chkid.checked=status; } if(from_>0) document.frmList.chkall.checked=statu