Code TMDT

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 16

1.

Tạo database
2. Tạo thư mục ảnh
3. Nhập dl vào database
4. Tạo fooder css  add new item  web style sheet

/*Reset css*/
*{
padding:0;
margin:0;
list-style:none;
}

.css_danhmuc{
text-decoration:none;
font-family:Arial;
color:black;
cursor:pointer;
text-transform:uppercase;
padding-bottom:80px;
font-weight:bold;
}
.css_danhmuc:hover{
color:blue;
}

.banner_img{
object-fit:cover;
width:100%;
height:200px;
}

header {
background-image: url('../images/bg_img.jpg');
}

.css-link_btn{
color:black;
font-size:20px;
text-decoration:none;
font-weight:bold;
padding:20px 0px;
}

.item-container{
padding-left:10px;
margin-bottom:10px;
}
.item-container:hover .css-link_btn {
color: #2d58ff;
}

.item-container div:nth-child(2){
margin-bottom:8px;
}

.bold{
font-weight:bold;
}

.item-label-header{
font-weight:bold;
font-size:24px;
}

.margin-right{
margin-right: 16px;
}

WEB CONFIG :
<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
https://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None"/>
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.7.2" />
<httpRuntime targetFramework="4.7.2" />
</system.web>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider,
Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35" warningLevel="4"
compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider,
Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35" warningLevel="4"
compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot;
/optionInfer+" />
</compilers>
</system.codedom>
</configuration>

5. LỚP KẾT NÔI:


Add new item  visual c#  CLASS
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;

namespace HAOLONG_BANHOA
{
public class Lopketnoi : System.Web.UI.Page
{
//Khai bao bien
SqlConnection con;

//Khai báo hàm khởi tạo connection


public Lopketnoi()
{
string sqlCon = @"Data Source=(LocalDB)\
MSSQLLocalDB;AttachDbFilename="+Server.MapPath("/App_Data/QL_BANHOA.mdf")+";Integrated
Security=True";
con = new SqlConnection(sqlCon);
}

//Hàm lấy data


public DataTable getData(string sql)
{
DataTable dt = new DataTable();
//Viết vào try catch để tránh bị lỗi
try
{
//Cầu nối adapter
SqlDataAdapter da = new SqlDataAdapter(sql, con);
//Đổ dữ liệu vào dt (Datatable)
da.Fill(dt);
}
catch { }
return dt;
}

//Hàm update dữ liệu


public int updateData(string sql)
{
int row = 0;
try
{
//Mở kết nối
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
row = cmd.ExecuteNonQuery();
}
catch { }
finally
{
//Bắt buộc đóng kết nối
con.Close();
}
return row;
}
}
}

6. Add new item webform  webform master page


<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="MasterPage.master.cs"
Inherits="HAOLONG_BANHOA.MasterPage" %>

<!DOCTYPE html>

<html>
<head runat="server">
<title>TRANG WEB BÁN HOA</title>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>

<%--Thư viện Css--%>


<link href="Css/Style.css" rel="stylesheet" />
</head>
<body>
<form id="form1" runat="server">
<%--Hình nền--%>
<header>
<%--Cách 1--%>
<%--<center>
<img class="banner_img" src="images/banner.jpg" />
</center>--%>

<%--Cách 2--%>
<center>
<img src="images/banner.jpg" />
</center>
</header>

<div>
<table style="width: 100%">
<%--1 hàng tr -- 3 cột td--%>
<tr>
<%--Phần danh mục--%>
<td style="width: 30%">
<center>
<h1 style="font-weight: bold; margin-bottom: 10px;">DANH MỤC
HOA</h1>
<asp:DataList ID="dl_DanhMuc" runat="server">
<ItemTemplate>
<asp:LinkButton CssClass="css_danhmuc"
ID="LinkButton1" runat="server" Text='<%# Eval("TENDM") %>' OnClick="LinkButton1_Click"
CommandArgument='<%# Eval("MADM") %>'></asp:LinkButton>
</ItemTemplate>
</asp:DataList>
</center>
</td>

<%--Phần nội dung chuyển trang--%>


<td style="width: 40%">
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</td>
<%--Phần login--%>
<td style="width: 30%">
<center>
<asp:Login ID="Login1" runat="server" Height="171px"
LoginButtonText="Đăng nhập" PasswordLabelText="Mật khẩu"
RememberMeText="Ghi nhớ mật khẩu." TitleText="Thông Tin
Đăng Nhập"
UserNameLabelText="Tên đăng nhập" Width="314px"
OnAuthenticate="Login1_Authenticate" >
</asp:Login>
</center>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>

FN 7:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

namespace HAOLONG_BANHOA
{
public partial class MasterPage : System.Web.UI.MasterPage
{
//Khai báo chuỗi kết nối
Lopketnoi kn = new Lopketnoi();
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack) return;

//Câu lệnh sql để lấy dữ liệu


string sql = "SELECT * FROM DANHMUC";

try
{
//Lấy dữ liệu ra rồi đổ vào data table
DataTable dt = kn.getData(sql);
//Lấy dữ liệu từ dt đổ vào datalist
dl_DanhMuc.DataSource = dt;
dl_DanhMuc.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}

//Kính vào danh mục để lọc mặt hàng


protected void LinkButton1_Click(object sender, EventArgs e)
{
//Lấy command argument
string madanhmuc = ((LinkButton)sender).CommandArgument;
Context.Items["mdm"] = madanhmuc;
Server.Transfer("Default.aspx");
}

//Xây dựng chức năng login


protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
string tendn = Login1.UserName;
string matkh = Login1.Password;

string sql = "SELECT * FROM KHACHHANG WHERE TENDN='" + tendn + "' AND
MATKHAU='"+ matkh + "'";

DataTable dt = kn.getData(sql);

//Kiểm tra nếu trong bảng có thì chuyển sang trang Default
if (dt.Rows.Count > 0)
{
Response.Cookies["tendn"].Value = tendn;
Response.Redirect("Default.aspx");
}
//Nếu sai thì đưa ra thông báo
else
{
Login1.FailureText = "Tên đăng nhập hoặc mật khẩu không đúng";
}
}
}

7. Add with master page : name: default

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.Master"


AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="HAOLONG_BANHOA.Default" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">


</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<h1>Mặt hàng các sản phẩm</h1>
<asp:DataList ID="dl_HangHoa" runat="server" RepeatColumns="5">
<ItemTemplate>
<div class="item-container">
<div>
<asp:ImageButton ID="ImageButton1" runat="server" CommandArgument='<
%# Eval("MAHANG") %>' ImageUrl='<%# "images/"+Eval("HINHANH") %>' Width="180px"
Onclick="ImageButton1_Click"/>
</div>
<div>
<asp:LinkButton CssClass="css-link_btn" ID="LinkButton2"
runat="server" CommandArgument='<%# Eval("MAHANG") %>' Text='<%# Eval("TENHANG") %>'
OnClick="LinkButton2_Click"></asp:LinkButton>
</div>
Đơn giá:
<asp:Label CssClass="bold" ID="Label1" runat="server" Text='<%#
Eval("DONGIA") %>'></asp:Label>
<br />
</div>
</ItemTemplate>
</asp:DataList>
</asp:Content>

8. Trang default. Aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

namespace HAOLONG_BANHOA
{
public partial class Default : System.Web.UI.Page
{
//Khai báo kết nối
Lopketnoi kn = new Lopketnoi();
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack) return;

string madanhmuc = Context.Items["mdm"] + "";


//Khai báo biến sql rỗng , rồi xún điều kiện if kiểm tra
string sql = "";
if (madanhmuc == "")
{
//Nếu madanhmuc rỗng thì ko làm gì
sql = "SELECT * FROM HANGHOA";
}
else
{
//Nếu madanhmuc khác rỗng thì gán chuỗi lệnh SQL vào biến sql
sql = "SELECT * FROM HANGHOA WHERE MADM=" + madanhmuc;
}

//Thực hiện đổ cơ sở dữ liệu


try
{
DataTable dt = kn.getData(sql);

dl_HangHoa.DataSource = dt;
dl_HangHoa.DataBind();
}
catch { }
}

//Chuyển trang từ default sang trang chi tiết sản phẩm


protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
//Lấy command arg
string mahang = ((ImageButton)sender).CommandArgument;
Context.Items["mh"] = mahang;
Server.Transfer("Chitietsp.aspx");
}

protected void LinkButton2_Click(object sender, EventArgs e)


{
//Lấy command arg
string mahang = ((LinkButton)sender).CommandArgument;
Context.Items["mh"] = mahang;
Server.Transfer("Chitietsp.aspx");
}

}
}

9. Tạo with master page : name : chi tiết

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.Master"


AutoEventWireup="true" CodeBehind="Chitietsp.aspx.cs" Inherits="HAOLONG_BANHOA.Chitietsp"
%>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">


</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<h1>Chi tiết sản phẩm</h1>
<asp:DataList ID="dl_ChiTiet" runat="server">
<ItemTemplate>
<table style="width: 100%;">
<%--1 hàng 2 cột -- cột td 1: Hình ảnh , cột td 2: Thông tin về sản
phẩm--%>
<tr>
<td>
<div class="margin-right">
<asp:Image ID="Image1" runat="server" ImageUrl='<%#
"images/"+Eval("HINHANH") %>' Width="300px" />
</div>
</td>
<td>
<asp:Label CssClass="item-label-header" ID="Label1"
runat="server" Text='<%# Eval("TENHANG") %>'></asp:Label><br />
<br />
Mô tả:
<asp:Label ID="Label2" runat="server" Text='<%# Eval("MOTA")
%>'></asp:Label><br />
Đơn vị tính:
<asp:Label ID="Label3" runat="server" Text='<%# Eval("DONVITINH")
%>'></asp:Label><br />
Đơn giá:
<asp:Label ID="Label4" runat="server" Text='<%# Eval("DONGIA")
%>'></asp:Label><br />
Só lượng:
<asp:TextBox ID="txtSoLuong" runat="server"></asp:TextBox><br />
<br />
<asp:Button ID="Button1" runat="server" Text="Mua"
CommandArgument='<%# Eval("MAHANG") %>' OnClick="Button1_Click" />
<br />
<br />
<a href="GioHang.aspx">Giỏ hàng</a>
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
<asp:Label ID="chitiet_notifi" runat="server" Text=""></asp:Label>
</asp:Content>
Chi tiêt. Cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

namespace HAOLONG_BANHOA
{
public partial class Chitietsp : System.Web.UI.Page
{

Lopketnoi kn = new Lopketnoi();


protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack) return;

string mahang = Context.Items["mh"] + "";


//Nếu mã hàng là null thì không làm gì hết
if (mahang == "") return;

string sql = "SELECT * FROM HANGHOA WHERE MAHANG=" + mahang;

//Đổ dữ liệu vào


try
{
DataTable dt = kn.getData(sql);
dl_ChiTiet.DataSource = dt;
dl_ChiTiet.DataBind();
}
catch { }
}

//Xây dựng chức năng mua hàng


protected void Button1_Click(object sender, EventArgs e)
{
string sqlCon = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=" +
Server.MapPath("/App_Data/QL_BANHOA.mdf") + ";Integrated Security=True";
SqlConnection con = new SqlConnection(sqlCon);

if (Request.Cookies["tendn"] == null) chitiet_notifi.Text = "Bạn phải đăng


nhập";
else
{
//Lấy command arg rồi gán cho mahang
Button bt = (Button)sender;
string mahang = bt.CommandArgument;

//Tìm thẻ cha chứa bt


DataListItem item = (DataListItem)bt.Parent;
//Đứng từ thẻ cha tìm được rồi tìm tiếp textbox chứa id là txtSoLuong để
lấy text
string soluong = ((TextBox)item.FindControl("txtSoLuong")).Text;

//Lấy tên đăng nhập được nhập vào login rồi Lưu vào biến tendangnhap
string tendangnhap = Request.Cookies["tendn"].Value + "";

//Chuỗi lệnh sql tìm các đơn hàng của người dùng đó
string sql_dh = "SELECT * FROM DONHANG WHERE TENDN='" + tendangnhap + "'
AND MAHANG="+mahang+"";

DataTable dt = kn.getData(sql_dh);

string str_sql = "";

if (dt.Rows.Count > 0)
{
//UPDATE : Cập nhật thêm số lượng hàng

str_sql = "UPDATE DONHANG SET SOLUONG=SOLUONG+" + soluong + " WHERE


MAHANG=" + mahang
+ " and TENDN='" + tendangnhap + "'";
}
else
{
//INSERT : Thêm đơn hàng

// Lưu ý : Trong csdl cái tabel mình thiết kế thứ tự các cột như thế
nào thì dòng ni mình phải add lần lượt các giá trị y như thế
// Lỗi nằm ở phần INSERT NI , do thứ tự của video thứ 15 ko giống với
thiết kế của csdl
str_sql = "INSERT INTO DONHANG VALUES('" + tendangnhap + "'," +
mahang + "," + soluong + ")";
}
//Reload lại trang để thấy
int row = kn.updateData(str_sql);
//Kiểm tra lại hàng và thông báo
if (row > 0)
chitiet_notifi.Text = "Mua hàng thành công!";
else
chitiet_notifi.Text = "Mua hàng không thành công";
}
}
}
}

Chi tiết. designer . cs:


//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace HAOLONG_BANHOA
{

public partial class Chitietsp


{

/// <summary>
/// dl_ChiTiet control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.DataList dl_ChiTiet;

/// <summary>
/// chitiet_notifi control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Label chitiet_notifi;
}
}

8. GIỎ HÀNG( with master page ).aspx


<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.Master"
AutoEventWireup="true" CodeBehind="GioHang.aspx.cs" Inherits="HAOLONG_BANHOA.GioHang" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<h1>Giỏ hàng của bạn</h1>
<div>
<asp:GridView ID="dl_GioHang" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="TENHANG" HeaderText="Tên hàng" />
<asp:BoundField DataField="DONGIA" HeaderText="Đơn giá" />
<asp:TemplateField HeaderText="Số lượng">
<ItemTemplate>
<asp:TextBox ID="txtSoLuong" runat="server" Text='<%#
Eval("SOLUONG") %>'></asp:TextBox>
<asp:Button ID="Button1" runat="server" CommandArgument='<%#
Eval("MAHANG") %>' Text="Sửa" Onclick ="Button1_Click"/>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="THANHTIEN" HeaderText="Thành tiền" />
<asp:TemplateField HeaderText="Xoá">
<ItemTemplate>
<asp:LinkButton ID="LinkButton2" runat="server"
CommandArgument='<%# Eval("MAHANG") %>' OnClick="LinkButton2_Click">Xoá</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<%--Nhãn thông báo--%>
<asp:Label ID="GioHang_Notifi" runat="server" Text=""></asp:Label>
</div>
</asp:Content>

Giỏ hang.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

namespace HAOLONG_BANHOA
{
public partial class GioHang : System.Web.UI.Page
{
//Khai bao chuoi ket noi
Lopketnoi kn = new Lopketnoi();
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack) return;
//Kiểm tra có tên đăng nhập không
if (Request.Cookies["tendn"] == null) return;
DocDL();
}

//Hàm đọc dữ liệu chung


private void DocDL()
{
//Lấy giá trị tên đăng nhập được lưu trên client rồi chuyển nó thành chuỗi
xong gán cho biến tendn
string tendn = Request.Cookies["tendn"].Value + "";

//Câu lệnh sql dùng để lấy dữ liệu


string sql = "SELECT HANGHOA.MAHANG, TENHANG, DONGIA, SOLUONG, SOLUONG*DONGIA
AS THANHTIEN"
+ " FROM HANGHOA, DONHANG"
+ " WHERE HANGHOA.MAHANG = DONHANG.MAHANG AND TENDN='" + tendn + "'";

DataTable dt = kn.getData(sql);
dl_GioHang.DataSource = dt;
dl_GioHang.DataBind();
}

//SỬA
protected void Button1_Click(object sender, EventArgs e)
{
//Kiểm tra có tên đăng nhập không
if (Request.Cookies["tendn"] == null) return;
//Lấy giá trị tên đăng nhập được lưu trên client rồi chuyển nó thành chuỗi
xong gán cho biến tendn
string tendn = Request.Cookies["tendn"].Value;

//Trỏ tới thẻ Button


Button bt = (Button)sender;
//Lấy command arg của button đó ròi gán vào mahang
string mahang = bt.CommandArgument;

//Từ thẻ button tìm được thoát ra ngoài tìm thẻ cha
GridViewRow item = (GridViewRow)bt.Parent.Parent; // thẻ cha lớn nhất là
<asp:GridView ID="dl_GioHang" runat="server" AutoGenerateColumns="False">
//Đứng từ thẻ cha lớn nhất đi tìm thẻ con TEXTBOX có id là txtSoLuong , xong
chuyển nó thành tex rồi gán cho string soluong
string soluong = ((TextBox)item.FindControl("txtSoLuong")).Text;

//Câu lệnh sql


string sql = "UPDATE DONHANG SET SOLUONG=" + soluong +
" WHERE TENDN='" + tendn + "' AND MAHANG=" + mahang;

//cập nhật lại bảng


int row = kn.updateData(sql);
if (row > 0) GioHang_Notifi.Text = "Sửa hàng thành công!";
else GioHang_Notifi.Text = "Sửa hàng không thành công :(";

//Reload lại trang để thấy dữ liệu thay đổi


DocDL();
}

//XOÁ
protected void LinkButton2_Click(object sender, EventArgs e)
{
//Kiểm tra có tên đăng nhập không
if (Request.Cookies["tendn"] == null) return;
//Lấy giá trị tên đăng nhập được lưu trên client rồi chuyển nó thành chuỗi
xong gán cho biến tendn
string tendn = Request.Cookies["tendn"].Value;

//Lấy command arg của thẻ linkbutton


string mahang = ((LinkButton)sender).CommandArgument;

//Câu lệnh xoá sql


string sql = "DELETE FROM DONHANG WHERE TENDN='" + tendn + "' AND MAHANG=" +
mahang;
int row = kn.updateData(sql);
if (row > 0) GioHang_Notifi.Text = "Xoá hàng thành công!";
else GioHang_Notifi.Text = "Xoá hàng không thành công :(";

//Reload lại trang để thấy dữ liệu thay đổi


DocDL();
}
}
}
GIOHANG.designer .cs
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace HAOLONG_BANHOA
{

public partial class GioHang


{

/// <summary>
/// dl_GioHang control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.GridView dl_GioHang;

/// <summary>
/// GioHang_Notifi control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Label GioHang_Notifi;
}
}

You might also like