PHP购物网站(含购物车、全部源码、数据库设计表及其源码)

news/2024/5/19 7:59:43/文章来源:https://blog.csdn.net/youngcarpenter/article/details/85443477

PHP购物网站(含购物车、全部源码、数据库设计表及其源码)

2018年04月24日 15:50:45 ninnyyan 阅读数:2465

 版权声明: https://blog.csdn.net/ninnyyan/article/details/80064446

这是我在研究生期间,老师要求做的一个类似原始淘宝网的购物网站, 
因为不会PHP,为了写这个作业而新学的。 
做这个网站用了两周时间,在此把这个小项目做一个总结。

这个小项目做的时间非常赶,一共两周,实际有效时间只有10天,中间还在忙其他的事。所以有很多不足之处。 
有些代码原本可以写的更精简,合并在一起。 
连接数据库和其他的一些执行sql语句的操作,可以封装在单独的文件里面调用,这里也都比较简单的哪里用到就在哪里处理了。 
数据库的链接方式用了两种,没有统一。

还是有很多值得改进的地方。

功能:

DONE. 用户权限管理。包括管理员和普通用户。管理员有所有权限,包括更新网站状态 
登录的其他值为用户名和密码,用户名和密码正确,跳转到下一页。 
ADMIN具有添加,删除,更新等权限。用户只能查看手机,只能添加到购物车中的手机等。

DONE.新用户:此模块适用于没有帐户的用户。这里用户可以创建一个帐户来登录。账户的创建是通过填写注册表单和用户的详细信息,如姓名,电话,电子邮件等来完成的。

DONE.产品管理和展示:该模块展示手机产品信息,如产品编号,项目,名称,类别,产品图像,说明,功能和产品限制等。所有这些都将输入到数据库,因此可以在网站上找到。

DONE.搜索:该模块可帮助客户根据自己的预算或兴趣来放松搜索。搜索可以在不同的类别上完成,如品牌,型号名称,型号,颜色或价格等。

DONE:交易:在此模块中,购物车的管理已完成。此模块购物者可以选择任意数量的物品(手机,配件)并将它们添加到购物车,在从购物车购买物品后,所有要购买的物品都可以再次查看。如果他以后不喜欢,购物者也可以从购物车中取出。购物者还可以逐一检查购物车中保存的产品。由于产品从购物车中检出,总价格将相加。

DONE:装运:在这个模块中,购物者可以选择合适的装运选项。购物者可以使用不同服务提供商提供的各种运送选项。

DONE:付款:该模块描述了客户完成的付款。购物者可以选择不同的支付方式,并根据所选的支付方式的要求提供机密的支付信息。付款信息还可能包括购买型号,数量和供应商名称等信息。

DONE:报告:在此模块中,将生成所有报告。无论何时出售物品或客户订购产品,都应立即通过电子邮件向其供应商发送警报,以便他可以尽快装运该物品。该模块有3个子模块;股票报告,订单报告和交付报告。

  • 股票报告将生成可用产品数量和产品状态的报告。
  • 订单报告将列出订购的产品清单以及购买该产品的客户详细信息,这些信息未送达。
  • 交付报告将生成已售出产品清单及其交付状态。

1.数据库表设计

下面是对数据库设计的一个说明,交作业用的。

*Design ideas of relational schema: 
Since the website will not be too complex, so I just design basic fields of the whole website logic. As for the tables “order_info” and “orderDetailRecord_info”, I separate order information into two tables to solve the problem that one order may have two types of products. Plus, the “p_image_url” field in the table “product_info”, will be used for analyzing url of images of products. Plus plus: actually an order may conclude many products, every products may choose different delivery method, but here we simplify it and assume that an order only have one delivery method.*

另外需要说明的是, 
delivery_info表和payment_info表中分别加入了一个random字段,是因为在写php处理的过程中,产生了相应的需要,具体处理请看代码。

下面是具体的表名和字段: 
mysql1 
mysql2 
mysql3

附上刚开始创建数据表的mysql代码,后期自此基础上有一些修改

`admin_info(admin_id,admin_name,admin_pwd)`
CREATE TABLE IF NOT EXISTS admin_info(admin_id int(10) NOT NULL AUTO_INCREMENT,admin_name varchar(50) NOT NULL,admin_pwd varchar(50) NOT NULL,PRIMARY KEY(admin_id)
);`user_info(u_id,u_name,u_pwd,u_phone,u_email)`
CREATE TABLE IF NOT EXISTS user_info(u_id int(10) NOT NULL AUTO_INCREMENT,u_name varchar(50) NOT NULL,u_pwd varchar(50) NOT NULL,u_phone int(50) NOT NULL,u_email varchar(50) NOT NULL,PRIMARY KEY(u_id)
);`product_info(p_id, p_name,p_brand, p_type,p_price,p_inventory,p_descr,p_color,p_image_url)`
CREATE TABLE IF NOT EXISTS product_info(p_id int(10) NOT NULL AUTO_INCREMENT,p_name varchar(50) NOT NULL,p_brand varchar(50) NOT NULL,p_type int(50) NOT NULL,p_price varchar(50) NOT NULL,p_inventory varchar(50) NOT NULL,p_descr varchar(100) NOT NULL,p_color varchar(50) NOT NULL,p_image_url varchar(200) NOT NULL,PRIMARY KEY(p_id)
);`payment_info(pay_id,pay_user,receive_user,pay_account,receive_account,pay_status)`
CREATE TABLE IF NOT EXISTS payment_info(pay_id int(10) NOT NULL AUTO_INCREMENT,pay_user varchar(50) NOT NULL,receive_user varchar(50) NOT NULL,pay_account int(50) NOT NULL,receive_account int(50) NOT NULL,pay_status boolean NOT NULL,PRIMARY KEY(pay_id)
);`delivery_info(d_id,d_company,d_init_add,d_trgt_add,d_price)`
CREATE TABLE IF NOT EXISTS delivery_info(d_id int(10) NOT NULL AUTO_INCREMENT,d_company varchar(50) NOT NULL,d_init_add varchar(50) NOT NULL,d_trgt_add varchar(50) NOT NULL,d_price varchar(50) NOT NULL,PRIMARY KEY(d_id)
);`order_info(o_id,u_id,d_id,o_date,pay_id)`
CREATE TABLE IF NOT EXISTS order_info(o_id int(10) NOT NULL AUTO_INCREMENT,u_id int NOT NULL,d_id int NOT NULL,o_date int(50) NOT NULL,pay_id int NOT NULL,PRIMARY KEY(o_id),FOREIGN KEY (u_id) REFERENCES user_info(u_id),FOREIGN KEY (d_id) REFERENCES delivery_info(d_id),FOREIGN KEY (pay_id) REFERENCES payment_info(pay_id)
);`orderDetailRecord_info(r_id,o_id,p_id,p_num)`
CREATE TABLE IF NOT EXISTS orderDetailRecord_info(r_id int(10) NOT NULL AUTO_INCREMENT,o_id int NOT NULL,p_id int NOT NULL,p_num int(50) NOT NULL,PRIMARY KEY(r_id),FOREIGN KEY (o_id) REFERENCES order_info(o_id),FOREIGN KEY (p_id) REFERENCES product_info(p_id)
);`stock_info(s_id,p_id,p_inventory)`
CREATE TABLE IF NOT EXISTS stock_info(s_id int(10) NOT NULL AUTO_INCREMENT,p_id int(10),p_inventory int(50),PRIMARY KEY(s_id),FOREIGN KEY(p_id) REFERENCES product_info(p_id)
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95

下面是以上功能的代码以及一些相关的解释: 
最简单的主界面: 
index.html 
//只放了一个注册一个登录的链接

<html>
<head>
<meta charset="utf-8">
<title>Phones on saling</title>
</head> 
<h1>Phones on saling!</h1><a href="chooseCharactor.html" target="_blank">Sign in the website.</a><br><br><a href="login.php" target="_blank">Login into the website.</a>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

1.注册功能:

首先要选择角色类型:(这个功能是刚开始练习做的,其实应该把角色选择和注册功能都放在一个页面里,现在分为了三个,分别是选择,管理员注册和用户注册,比较麻烦。后来时间紧,就没有再改了,实际可以合并为一个。)

chooseCharacter.html

<html>
<head><meta charset="utf-8"><title>Sign in to phone website</title>
</head> <h1>Choose your charactor</h1>Please choose which kind of charactor you want to sign in?<form action="chooseCharactor.php" method="get"><select name="q"><option value="">Choose charactor</option><option value="admin">Admin</option><option value="user">User</option></select><br><input type="submit" value="Submit"></form>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

chooseCharacter.php 
//选择相应的角色后,会跳转到不同角色的注册界面

<!DOCTYPE html>
<html>
<head><title>Choose charactor</title>
</head>
<body><?php$q = isset($_GET['q'])? htmlspecialchars($_GET['q']) : '';if($q == "") {echo "You must choose a charactor!";}else if($q != ""){if($q =='admin') {header('Location: adminSign.html');} else if($q =='user') {header('Location: sign.html');}}?>
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

1)管理员注册: 
adminSign.html 
//管理员注册的界面。管理员注册需要拿到内部的Invitation number(邀请码),注册方可进行。如果已经注册,可以点击下方的login链接,直接登录,将跳转到login.php界面。

<html>
<head><meta charset="utf-8"><title>Sign in to phone website as admin user</title>
</head> <h1>Sign in</h1><form action="adminSign.php" method="post">User name:<input type="text" name="username"><br>User password:<input type="password" name="psw"><br>Confirm user password:<input type="password" name="cofpsw"><br>Invitation number:<input type="text" name="invtnum"><br><input type="submit" name="submit"></form>If you have already signed in, please click here to login.<br><a href="login.html" target="_blank">Login into the website.</a>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

adminSign.php 
//处理管理员注册请求

<!DOCTYPE html>
<html>
<head><title>Sign in the phone web as admin user, success!</title>
</head>
<body><?phpinclude 'executeSql.php';$userName = $_POST["username"];$pwd = $_POST["psw"];$cofPsw = $_POST["cofpsw"];$invtNum = $_POST["invtnum"];if($userName == ""||$pwd == ""||$cofPsw == ""|| $invtNum == ""){echo "None of the value can be empty!";}else if($pwd != $cofPsw){echo "The password entered for two time is not same!";}else if($invtNum != "SN90IE58KP"){echo "The invitation number is wrong!"; }else{echo "All values are right, your have sucessfully sign in as admin user!";$sql = "INSERT INTO admin_info (admin_name,admin_pwd) VALUES('" . $userName . "','" . $pwd . "');";//$sql = "INSERT INTO admin_info (admin_name,admin_pwd) VALUES('superadmin','admin123');";//echo $sql;executeSql($sql);}?>
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

2)用户注册 
sign.html 
//用户注册界面

<html>
<head>
<meta charset="utf-8">
<title>Sign in to phone website</title>
</head> 
<h1>Sign in</h1>
<form action="sign.php" method="post">User name:<input type="text" name="username"><br>User password:<input type="password" name="psw"><br>Confirm user password:<input type="password" name="cofpsw"><br>Phone:<input type="text" name="phone"><br>Email:<input type="email" name="email"><br><input type="submit" name="submit">
</form>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

sign.php 
//处理用户注册请求,收集基本信息并加入到数据库。如果存在数据缺失,则不能注册,对两次输入的密码做了基本的检测,并检测邮箱格式的正确性。 
//注册后会跳转到login.php界面,但是因为普通用户注册后,会自动为当前用户登录,并在当前的cookie中存储用户登录的状态,因此不需要再登录一次,可以直接由网页链接跳转到手机购买界面。

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>Sign in sucess!</title><style>.button {background-color: #4CAF50;border: none;color: white;padding: 15px 32px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;margin: 4px 2px;cursor: pointer;}.table{border-style:solid;border-color:#98bf21;align-self: center;align-items: center;}/*.divcss5-right{width:320px; height:120px;border:1px solid #F00;float:right} */.divcss5-right{float:right;} /* css注释:对divcss5-right设置float:right即可让对象靠右浮动 */</style>
</head>
<body><?phpfunction executeSql($sql){$flag = false;$feedback = array();if($sql == ""){echo "Error! Sql content is empty!";}else{$servername = "localhost";$username = "root";$password = "";$dbname = "hw";$conn = mysqli_connect($servername, $username, $password, $dbname);if (mysqli_connect_errno()){echo "Failed to connect to MySQL: " . mysqli_connect_error();}$query_result=mysqli_query($conn,$sql);//query_result is a PHP arrayif($query_result){$flag = true;$feedback = $query_result;//$num_rows=mysqli_num_rows($query_result);}return array($flag,$feedback);}}$userName = $_POST["username"];$pwd = $_POST["psw"];$cofPsw = $_POST["cofpsw"];$phone = $_POST["phone"];$email = $_POST["email"];if($userName == "" || $pwd == "" || $cofPsw == "" || $phone == "" || $email == ""){echo "None of the value can be empty!";}else if($pwd != $cofPsw){echo "The password entered for two time is not same!";}else if ($pwd == $cofPsw){$sql = "INSERT INTO user_info (u_name,u_pwd,u_phone,u_email) VALUES('" .$userName ."','" . $pwd ."','" . $phone . "','" . $email . "');";$result = executeSql($sql);if($result){$select_sql = "SELECT u_id FROM user_info WHERE u_name = '".$userName."';";$result = executeSql($select_sql);if($result[0]){setcookie('login_status',true);while($row = mysqli_fetch_assoc($result[1])){$u_id=$row["u_id"];setcookie('u_id',$u_id);}header("location:login.php");}}}?>
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89

2.登录功能:

login.php 
//用户登录的界面,可以选择管理员用户登录和普通用户登录。 
作为管理员用户登录后,跳转到产品管理界面。作为普通用户登录后,跳转到网站主页,即手机购买界面。

<html>
<head>
<meta charset="utf-8">
<title>Login in to phone website</title>
<style>.button {background-color: #4CAF50;border: none;color: white;padding: 15px 32px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;margin: 4px 2px;cursor: pointer;align-self:right;float: left;}.body{font-family:Arial,Helvetica,sans-serif;font-size:20px;}</style>
<h2>User Login</h2>
</head><body class = "body"><?phpif(isset($_COOKIE['login_status'])){echo "Login already.";?><br><br><a href='showPhones.php'>Click here to buy phones.</a><?php}else{?><form action="process_login.php" method="post"><select name="character"><option value="">Choose your character</option><option value="admin">admin</option><option value="user">user</option></select><br>User name:<input type="text" name="username"><br>User password:<input type="password" name="psw"><br><input type="submit" class = "button" name="submit" value="Choose"></form><?php}?></body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

process_login.php处理登录请求

<!DOCTYPE html>
<html>
<body><?phpfunction executeSql($sql){$flag = false;$feedback = array();if($sql == ""){echo "Error! Sql content is empty!";}else{$servername = "localhost";$username = "root";$password = "";$dbname = "hw";$conn = mysqli_connect($servername, $username, $password, $dbname);if (mysqli_connect_errno()){echo "Failed to connect to MySQL: " . mysqli_connect_error();}$query_result=mysqli_query($conn,$sql);//query_result is a PHP arrayif($query_result){$flag = true;$feedback = $query_result;//$num_rows=mysqli_num_rows($query_result);}return array($flag,$feedback);}}$userName = $_POST["username"];$pwd = $_POST["psw"];if(isset($_POST["submit"])){$selected_Charactor = $_POST["character"];   }else{echo "You have choose the wrong charactor!";echo "<br>";}if($userName == ""||$pwd == ""){echo "None of the value can be empty!";echo "<br>";}//declare the sql var and decides the value//$sql;if($selected_Charactor == "admin"){$sql = "SELECT admin_id FROM admin_info WHERE admin_name = '" . $userName . "' and admin_pwd = '". $pwd ." ' ;" ;$result = executeSql($sql);if ($result[0]) {header('Location: p_manage.php');} else {echo "Error! Something wrong in your username or password!";echo "<br>";}}else if($selected_Charactor == "user"){$sql = "SELECT u_id FROM user_info WHERE u_name = '" . $userName ."' and u_pwd = '".$pwd."' ;" ;$result = executeSql($sql);if($result[0]){setcookie('login_status',true);while ($row = mysqli_fetch_assoc($result[1])){$u_id=$row["u_id"];setcookie('u_id',$u_id);}header('Location: showPhones.php');}else{echo "Error! Something wrong in your username or password!";echo "<br>";}}?>
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79

3.手机产品管理(管理员):

1)增加新的手机: 
add_product.html 
//增加新的手机库存

<html>
<head><title>Add new product</title><style>.button {background-color: #4CAF50;border: none;color: white;padding: 15px 32px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;margin: 4px 2px;cursor: pointer;align-self:right;float: right;}.table{border-style:solid;border-color:#98bf21;align-self: center;align-items: center;width: "12%";height: "20%";}</style>
</head>
<h1 align="center">Hello admin user, you can add a new product into database!</h1>
<body><form action="add_product.php" method="post"><table align="center" class = "table" border="1"><th>Product Name</th><th>Product Brand</th><th>Product Type</th><th>Product Price</th><th>Product Inventory</th><th>Product Description</th><th>Product Color</th><th>Product Url</th><tr><td><input type="text" name="name"></td><td><input type="text" name="brand"></td><td><input type="text" name="type"></td><td><input type="text" name="price"></td><td><input type="text" name="inventory"></td><td><input type="text" name="descr"></td><td><input type="text" name="color"></td><td><input type="text" name="url"></td></tr></table><input type="submit" class = "button" name="submit" value="Submit"></form>
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

add_product.php 
//处理增加请求

<!DOCTYPE html>
<html>
<head><title>Add new product</title>
</head>
<body><?phpfunction executeSql($sql){$flag = false;if($sql == ""){echo "Error! Sql content is empty!";echo "<br>";}else{$servername = "localhost";$username = "root";$password = "";$dbname = "hw";// 创建连接$conn = new mysqli($servername, $username, $password, $dbname);// 检测连接if ($conn->connect_error) {die("Fail to connect!: " . $conn->connect_error);}//执行sql语句if ($conn->query($sql) === TRUE) {$flag = TRUE;} else {echo "Error: " . $sql . "<br>" . $conn->error;}$conn->close();return $flag;}}$p_name=$_POST["name"];$p_brand=$_POST["brand"];$p_type=$_POST["type"];$p_price=$_POST["price"];$p_inventory=$_POST["inventory"];$p_descr=$_POST["descr"];$p_color=$_POST["color"];$p_image_url=$_POST["url"];if($p_name ==""||$p_brand ==""||$p_type ==""||$p_price ==""||$p_inventory ==""||$p_descr ==""||$p_color ==""){echo "You can not provide empty values!";}else{$sql = "INSERT INTO product_info(p_name,p_brand,p_type,p_price,p_descr,p_color,p_image_url) VALUES ('".$p_name."','".$p_brand."','".$p_type."','".$p_price."','".$p_descr."','".$p_color."','".$p_image_url."');";$result = executeSql($sql);if($result){$servername = "localhost";$username = "root";$password = "";$dbname = "hw";// 创建连接$conn = mysqli_connect($servername, $username, $password, $dbname);// Check connectionif (mysqli_connect_errno()){echo "Failed to connect to MySQL: " . mysqli_connect_error();}$select_sql = "SELECT * FROM product_info WHERE p_name = '".$p_name."';";$result=mysqli_query($conn,$select_sql);//result is a PHP arrayvar_dump($result);$num_rows=mysqli_num_rows($result);//echo $num_rows;mysqli_close($conn);while ($row = mysqli_fetch_assoc($result)){$p_id=$row["p_id"];$insert_sql = "INSERT INTO stock_info(p_id,p_inventory) VALUES (".$p_id.",".$p_inventory.");";$feedback = executeSql($insert_sql);if($feedback){header("location:p_manage.php");}}}
}?>
<br>
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92

2)管理员管理手机(查看,删除,etc) 
p_manage.php

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>Read product information from database</title><style>.button {background-color: #4CAF50;border: none;color: white;padding: 15px 32px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;margin: 4px 2px;cursor: pointer;align-self:right;float: right;}.table{border-style:solid;border-color:#98bf21;align-self: center;align-items: center;width: "10%";}a:link {color:#000000;}      /* 未访问链接*/a:visited {color:#4CAF50;}  /* 已访问链接 */a:hover {color:#4CAF50;}  /* 鼠标移动到链接上 */a:active {color:#0000FF;}  /* 鼠标点击时 */</style>
</head><h1 align="center">Welcome! Admin user. This is the page of Product Management.</h1><script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script><script>function newPage(){window.location.assign("add_product.html")}function deleteProduct(p_id){$.ajax({type: "POST",url: "deleteProduct.php",data: "pid="+p_id,success: function(msg){window.location.reload();}});}</script>
<body><table border="1" align="center" class = "table"><tr><th align="center" width="10%">Product ID</th><th align="center" width="10%">Product Name</th><th align="center" width="10%">Product Brand</th><th align="center" width="10%">Product Type</th><th align="center" width="10%">Product Price</th><th align="center" width="10%">Product Inventory</th><th align="center" width="10%">Product Description</th><th align="center" width="10%">Product Color</th><th align="center" width="10%">Product Image</th><th align="center" width="10%">Delete Product</th></tr><?php$servername = "localhost";$username = "root";$password = "";$dbname = "hw";// 创建连接$conn = mysqli_connect($servername, $username, $password, $dbname);// Check connectionif (mysqli_connect_errno()){echo "Failed to connect to MySQL: " . mysqli_connect_error();}$sql = "SELECT * FROM product_info;";$result=mysqli_query($conn,$sql);//result is a PHP array$num_rows=mysqli_num_rows($result);//echo $num_rows;$i=0;while ($row = mysqli_fetch_assoc($result)){$p_id=$row["p_id"];$p_name=$row["p_name"];$p_brand=$row["p_brand"];$p_type=$row["p_type"];$p_price=$row["p_price"];$p_inventory=0;$select_sql = "SELECT p_inventory FROM stock_info WHERE p_id = ".$p_id.";";$select_result=mysqli_query($conn,$select_sql);$select_num_rows=mysqli_num_rows($result);if($select_num_rows){while($select_rows = mysqli_fetch_assoc($select_result)){$p_inventory=$select_rows["p_inventory"];}}else{echo "not fetch";}$p_descr=$row["p_descr"];$p_color=$row["p_color"];$p_image_url = $row["p_image_url"];echo "<tr>";echo "<td align='center'>".$p_id."</td>";echo "<td align='center'>".$p_name."</td>";echo "<td align='center'>".$p_brand."</td>";echo "<td align='center'>".$p_type."</td>";echo "<td align='center'>".$p_price."</td>";echo "<td align='center'>".$p_inventory."</td>";echo "<td align='center'>".$p_descr."</td>";echo "<td align='center'>".$p_color."</td>";//$image = 'https://cdn2.gsmarena.com/vv/pics/apple/apple-iphone-x-new-1.jpg';$imageData = base64_encode(file_get_contents($p_image_url));//var_dump($imageData);//echo '<div class="img">';echo '<td align="center"><img src="https://img-blog.csdnimg.cn/2022010613215767422.jpeg'.$imageData.'" alt="Forest" width="120" height="120"></td>';//echo '</div>';//echo "<td><input type='button' value='Delete' onclick='deleteProduct(".$p_id.")'></td>";?><td align="center"><a href='deleteProduct.php?goods_id=<?php echo $p_id; ?>'>Delete</a></td><?phpecho "</tr>";$i++;}mysqli_close($conn);?></table><br><br><div class="divcss5-right"><input type="button" class = "button" value="Add new product" onclick="newPage()"></div>
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143

界面如图所示(缩小版的界面) 
这里写图片描述

4.用户购买手机

手机展示界面,并可实现增加产品到购物车,没有实现批量添加,每点击一次手机产品对应的添加按钮,则购物车中增加一条该产品的记录。 
添加后会在购物车功能模块处理,如果已经添加够了,也可以直接点击页面最下方的链接,查看购物车。

showPhones.php 
//代码和p_manage.php类似,有些功能类似或重合

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>Product information</title><style>.button {background-color: #4CAF50;border: none;color: white;padding: 15px 32px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;margin: 4px 2px;cursor: pointer;align-self:right;float: right;}.table{border-style:solid;border-color:#98bf21;align-self: center;align-items: center;width: "10%";}.body{font-family:Arial,Helvetica,sans-serif;font-size:20px;}a:link {color:#000000;}      /* 未访问链接*/a:visited {color:#4CAF50;}  /* 已访问链接 */a:hover {color:#4CAF50;}  /* 鼠标移动到链接上 */a:active {color:#0000FF;}  /* 鼠标点击时 */</style>
</head><h2 align='center'>Welcome! You can buy your own phone here.</h2>
<body class="body"><table border="1" class="table"  align='center'><tr><th align='center' width="10%">Product Name</th><th align='center' width="10%">Product Brand</th><th align='center' width="10%">Product Type</th><th align='center' width="10%">Product Price</th><th align='center' width="10%">Product Inventory</th><th align='center' width="10%">Product Description</th><th align='center' width="10%">Product Color</th><th align='center' width="10%">Product Image</th><th align='center' width="10%">Add to Cart</th></tr><?php$servername = "localhost";$username = "root";$password = "";$dbname = "hw";// 创建连接$conn = mysqli_connect($servername, $username, $password, $dbname);// Check connectionif (mysqli_connect_errno()){echo "Failed to connect to MySQL: " . mysqli_connect_error();}$sql = "SELECT * FROM product_info;";$result=mysqli_query($conn,$sql);//result is a PHP array$num_rows=mysqli_num_rows($result);//echo $num_rows;$i=0;while ($row = mysqli_fetch_assoc($result)){$p_id=$row["p_id"];$p_name=$row["p_name"];$p_brand=$row["p_brand"];$p_type=$row["p_type"];$p_price=$row["p_price"];$p_inventory=0;$select_sql = "SELECT p_inventory FROM stock_info WHERE p_id = ".$p_id.";";$select_result=mysqli_query($conn,$select_sql);$select_num_rows=mysqli_num_rows($result);if($select_num_rows){while($select_rows = mysqli_fetch_assoc($select_result)){$p_inventory=$select_rows["p_inventory"];}}else{echo "not fetch";}$p_descr=$row["p_descr"];$p_color=$row["p_color"];$p_image_url = $row["p_image_url"];echo "<tr>";echo "<td align='center'>".$p_name."</td>";echo "<td align='center'>".$p_brand."</td>";echo "<td align='center'>".$p_type."</td>";echo "<td align='center'>".$p_price."</td>";echo "<td align='center'>".$p_inventory."</td>";echo "<td align='center'>".$p_descr."</td>";echo "<td align='center'>".$p_color."</td>";//$image = 'https://cdn2.gsmarena.com/vv/pics/apple/apple-iphone-x-new-1.jpg';$imageData = base64_encode(file_get_contents($p_image_url));//var_dump($imageData);echo '<td align="center"><img src="https://img-blog.csdnimg.cn/2022010613215767422.jpeg'.$imageData.'"></td>';
?><td><a  align='center' href='process_shopCart.php?goods_id=<?php echo $p_id; ?>&goods_name=<?php echo $p_name; ?>'>addCart</a></td>
<?phpecho "</tr>";$i++;}mysqli_close($conn);
?></table><br><br><a  align='right' href='view_shopCart.php'>Enough adding, click here to shopcart.</a><br><br><br>
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125

5.购物车

1)process_shopCart.php//处理添加请求

<!DOCTYPE html>
<html>
<head><title>All fees of shipment.</title>
</head>
<body><?phpfunction executeSql($sql){$flag = false;$feedback = array();if($sql == ""){echo "Error! Sql content is empty!";}else{$servername = "localhost";$username = "root";$password = "";$dbname = "hw";$conn = mysqli_connect($servername, $username, $password, $dbname);if (mysqli_connect_errno()){echo "Failed to connect to MySQL: " . mysqli_connect_error();}$query_result=mysqli_query($conn,$sql);//query_result is a PHP arrayif($query_result){$flag = true;$feedback = $query_result;//$num_rows=mysqli_num_rows($query_result);}return array($flag,$feedback);}}$unitPrice  = 0.0;if(isset($_POST["submit"])){$orignLocation = $_POST["orgn_location"];$targetLocation = $_POST["trgt_location"];$company = $_POST["company"];if($company == "shun_feng"){$unitPrice = 80.0;setcookie("shipment_way",$company);}if($company == "zhong_tong"){$unitPrice = 40.0;setcookie("shipment_way",$company);}if($company == "yuan_tong"){$unitPrice = 50.0;setcookie("shipment_way",$company);}if($company == "yun_da"){$unitPrice = 39.8;setcookie("shipment_way",$company);}if($company == "shen_tong"){$unitPrice = 57.6;setcookie("shipment_way",$company);}$totalItem = $_COOKIE['total_item'];$shipmentPrice = $unitPrice * $totalItem;$numbers = range (1,1000000); //shuffle 将数组顺序随即打乱 shuffle ($numbers); //array_slice 取该数组中的某一段 $num=1; $result = array_slice($numbers,0,$num); $d_random = $result[0];$sql = "INSERT INTO delivery_info (d_company, d_init_add, d_trgt_add, d_price, d_random)VALUES ('".$company."', '".$orignLocation."', '".$targetLocation."',".$shipmentPrice.",".$d_random.");";$result = executeSql($sql);if($result[0]){setcookie('shipment_price',$shipmentPrice);$select_sql = "SELECT d_id FROM delivery_info WHERE d_random = ".$d_random.";";$select_result = executeSql($select_sql);if($select_result[0]){while ($row = mysqli_fetch_assoc($select_result[1])){//var_dump($row);$d_id=$row["d_id"];setcookie('d_id',$d_id);setcookie('shipment_status',true);}}}}header("location:payInfo.php");?>
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81

2)view_shopCart.php//查看购物车

<?php
session_start();
?>
<html>
<head><meta charset="utf-8"><title>Shop cart</title>
</head>
<h1>View your shop cart here.</h1>
<body><table border="1"><tr><th>Product Name</th><th>Product Brand</th><th>Product Price</th><th>Product Description</th><th>Product Color</th><th>Counts</th><th>Delete from Cart</th></tr><?php$totalPrice = 0;$totalItem = 0;$p_info = 0;if(isset($_SESSION['shop-cart'])){foreach ($_SESSION['shop-cart'] as $item){$p_id = $item[0];$p_name = $item[1];$goods_num = $item[2];$p_info = $p_info.$p_id.",".$goods_num."/";$servername = "localhost";$username = "root";$password = "";$dbname = "hw";$conn = mysqli_connect($servername, $username, $password, $dbname);if (mysqli_connect_errno()){echo "Failed to connect to MySQL: " . mysqli_connect_error();}$sql = "SELECT * FROM product_info WHERE p_id =".$p_id.";";$result=mysqli_query($conn,$sql);//result is a PHP array$num_rows=mysqli_num_rows($result);//echo $num_rows;mysqli_close($conn);while ($row = mysqli_fetch_assoc($result)){$p_brand=$row["p_brand"];$p_type=$row["p_type"];$p_price=$row["p_price"];//$p_inventory=$row["p_inventory"];$p_descr=$row["p_descr"];$p_color=$row["p_color"];echo "<tr>";echo "<td>".$p_name."</td>";echo "<td>".$p_brand."</td>";echo "<td>".$p_price."HKD</td>";echo "<td>".$p_descr."</td>";echo "<td>".$p_color."</td>";echo "<td>".$goods_num."</td>";?><td><a href='delCart.php?goods_id=<?php echo $p_id; ?>'>Delete</a></td><?phpecho "</tr>";$singlePrice = $p_price * $goods_num;$totalPrice = $totalPrice + $singlePrice;$totalItem = $totalItem + $goods_num;setcookie("total_item",$totalItem);setcookie("phones_price",$totalPrice);}}//echo $p_info;setcookie('p_info',$p_info);?><tr><td></td><td></td><td></td><td></td><td></td><td><a href='clearCart.php?goods_id=<?php echo $p_id; ?>'>Clear cart</a></td><td><?phpecho "".$totalItem."   Items. ";echo "Totol prize: ".$totalPrice." HKD";?></td></tr></table><br><a href='shipment.php'>Shipment</a><br><?php
}else{echo "The shop cart is empty!";?><br><br><a href='showPhones.php'>Back to add goods</a><?php
}
?></body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115

购物车如下图: 
购物车界面

购物车中会展示所有产品的信息,并计算他们的总价格。

3)delCart.php 
//如果用户在查看购物车时点击删除某项产品,将该产品从购物车中全部删除

<?php
session_start();//$p_name = $_GET["goods_name"];
$p_id = $_GET["goods_id"];
$goods_num = 1;function id_inarray($findID, $cart_array)
{$flag = false;$counter = 0;foreach ($cart_array as $itemList) {if (strcmp($itemList[0], $findID) == 0) {$flag = true;break;}$counter++;}return array($flag, $counter);
}$result = id_inarray($p_id,$_SESSION['shop-cart']);if($result[0]){//如果存在该项,从session中删除if(isset($result[1])){unset($_SESSION['shop-cart'][$result[1]]);$_SESSION['shop-cart'] = array_values($_SESSION['shop-cart']);}
}else{echo "Cannot delete non-existent items!";
}header("location:view_shopCart.php");
?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

4)clearCart.php 
//如果用户在查看购物车时,点击了清空购物车,将当前购物车中内容全部清空

<?php
session_start();
$p_id = $_GET["goods_id"];
echo $p_id;if(isset($_SESSION['shop-cart'])){echo "destroy session";echo "<br>";echo "<br>";$result = session_destroy();
}else{echo "There is no goods in shop cart!";
}echo "<br>";
echo $result;
echo "<br>";
echo "<br>";
var_dump($_SESSION);
header("location:view_shopCart.php");
?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

6.物流

点击购物车中的’shipment’,选择装运物流信息。 
shipment.php

<html>
<head><meta charset="utf-8"><title>Shipment</title>
</head>
<?php
if(isset($_COOKIE['shipment_status'])){
?>
<h1>You have already fill the shipment information</h1>
<body><a href='payInfo.php'>Click here to pay</a></body>
<?php
}
else{
?>
<h1>Choose your shipment way</h1>
<body><form action="process_shipment.php" method="post"><table><th>Delivery Company</th><th>Orign Location</th><th>Target Location</th><tr><td><select name="company"><option value="">Choose Company</option><option value="shun_feng">Shun Feng</option><option value="zhong_tong">Zhong Tong</option><option value="yuan_tong">Yuan Tong</option><option value="yun_da">Yun Da</option><option value="shen_tong">Shen Tong</option></select><br></td><td><input type="text" name="orgn_location"></td><td><input type="text" name="trgt_location"></td></tr></table><input type="submit" name="submit" value="Submit"></form>
</body>
<?php
}
?>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

process_shipment.php 
//处理物流信息请求

<!DOCTYPE html>
<html>
<head><title>All fees of shipment.</title>
</head>
<body><?phpfunction executeSql($sql){$flag = false;$feedback = array();if($sql == ""){echo "Error! Sql content is empty!";}else{$servername = "localhost";$username = "root";$password = "";$dbname = "hw";$conn = mysqli_connect($servername, $username, $password, $dbname);if (mysqli_connect_errno()){echo "Failed to connect to MySQL: " . mysqli_connect_error();}$query_result=mysqli_query($conn,$sql);//query_result is a PHP arrayif($query_result){$flag = true;$feedback = $query_result;//$num_rows=mysqli_num_rows($query_result);}return array($flag,$feedback);}}$unitPrice  = 0.0;if(isset($_POST["submit"])){$orignLocation = $_POST["orgn_location"];$targetLocation = $_POST["trgt_location"];$company = $_POST["company"];if($company == "shun_feng"){$unitPrice = 80.0;setcookie("shipment_way",$company);}if($company == "zhong_tong"){$unitPrice = 40.0;setcookie("shipment_way",$company);}if($company == "yuan_tong"){$unitPrice = 50.0;setcookie("shipment_way",$company);}if($company == "yun_da"){$unitPrice = 39.8;setcookie("shipment_way",$company);}if($company == "shen_tong"){$unitPrice = 57.6;setcookie("shipment_way",$company);}$totalItem = $_COOKIE['total_item'];$shipmentPrice = $unitPrice * $totalItem;$numbers = range (1,1000000); //shuffle 将数组顺序随即打乱 shuffle ($numbers); //array_slice 取该数组中的某一段 $num=1; $result = array_slice($numbers,0,$num); $d_random = $result[0];$sql = "INSERT INTO delivery_info (d_company, d_init_add, d_trgt_add, d_price, d_random)VALUES ('".$company."', '".$orignLocation."', '".$targetLocation."',".$shipmentPrice.",".$d_random.");";$result = executeSql($sql);if($result[0]){setcookie('shipment_price',$shipmentPrice);$select_sql = "SELECT d_id FROM delivery_info WHERE d_random = ".$d_random.";";$select_result = executeSql($select_sql);if($select_result[0]){while ($row = mysqli_fetch_assoc($select_result[1])){//var_dump($row);$d_id=$row["d_id"];setcookie('d_id',$d_id);setcookie('shipment_status',true);}}}}header("location:payInfo.php");?>
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81

物流选择界面如图: 
这里写图片描述

7.支付

1)payInfo.php 
//计算商品和物流的总价格并展示,让用户选择支付方式。如果已经选择了支付方式(检查cookie中的值),提升已经选择,并且给出跳转动支付页面的链接。否则让用户选择支付方式,提供了四种,微信,支付宝,信用卡和中国银联,默认选项为支付宝

<html>
<head><meta charset="utf-8"><title>Shop cart</title>
</head>
<h1>Total money here, please fill your payment information.</h1>
<body><?phpif(isset($_COOKIE['pay_way'])){echo "You have fill the payment information.";?><br><a href='pay_money.php'>Click here to continue</a><?php}else{?><table border="1"><tr><th>Total Item</th><th>Phones Price</th><th>Shipment Way</th><th>Shipment Price</th><th>Total Price</th></tr><?php$total_item = $_COOKIE['total_item'];$shipment_price = $_COOKIE['shipment_price'];$shipment_way = $_COOKIE['shipment_way'];$phonesPrice = $_COOKIE['phones_price'];$totalPrice = $shipment_price + $phonesPrice;echo "<tr>";echo "<td>".$total_item."</td>";echo "<td>".$phonesPrice."</td>";echo "<td>".$shipment_way."</td>";echo "<td>".$shipment_price."</td>";echo "<td>".$totalPrice."</td>";echo "</tr>";?></table><br><form action="payway.php" method="post"><input type="radio" name="payway" value="Alipay" checked="">Alipay<input type="radio" name="payway" value="WeChatPay">WeChatPay<input type="radio" name="payway" value="Credit">Credit card<input type="radio" name="payway" value="UnionPay">UnionPay<br><table border = '1'><tr><th>Pay user</th><th>Pay account</th><th>Receive user</th><th>Receive account</th></tr><tr><th><input type="text" name="payuser"></th><th><input type="text" name="payaccount"></th><th><input type="text" name="receiveuser"></th><th><input type="text" name="receiveaccount"></th></tr></table>        <input type="submit" value="Submit"></form>
<?php
}
?></body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70

界面如图: 
这里写图片描述

2)pay_way.php 
//将用户支付信息填入数据库表中,并跳转到pay_money.php

<?phpfunction executeSql($sql){$flag = false;$feedback = array();if($sql == ""){echo "Error! Sql content is empty!";}else{$servername = "localhost";$username = "root";$password = "";$dbname = "hw";$conn = mysqli_connect($servername, $username, $password, $dbname);if (mysqli_connect_errno()){echo "Failed to connect to MySQL: " . mysqli_connect_error();}$query_result=mysqli_query($conn,$sql);//query_result is a PHP arrayif($query_result){$flag = true;$feedback = $query_result;//$num_rows=mysqli_num_rows($query_result);}return array($flag,$feedback);}}$payWay = $_POST['payway'];$payUser = $_POST['payuser'];$payAccount = $_POST['payaccount'];$receiveUser = $_POST['receiveuser'];$receiveAccount = $_POST['receiveaccount'];$payStatus = false;$numbers = range (1,1000000); shuffle ($numbers); $num=1; $result = array_slice($numbers,0,$num); $pay_random = $result[0];if($payUser == "" ||$payAccount == "" || $receiveUser == "" || $receiveAccount == ""){echo "You must fill the blanks.";}else{$sql = "INSERT INTO payment_info (pay_user, receive_user, pay_account, receive_account,pay_way,pay_status,pay_random)VALUES ('".$payUser."', '".$receiveUser."', ".$payAccount.",".$receiveAccount.",'".$payWay."','".$payStatus."',".$pay_random.");";$result = executeSql($sql);if($result[0]){$select_sql = "SELECT pay_id FROM payment_info WHERE pay_random = ".$pay_random.";";$select_result = executeSql($select_sql);if($select_result[0]){while ($row = mysqli_fetch_assoc($select_result[1])){$pay_id=$row["pay_id"];setcookie('pay_id',$pay_id);}}setcookie('pay_way',$payWay);}header("location:pay_money.php");}
?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64

3)pay_money.php 
//根据payInfo.php中选择的支付方式,打开相应的界面,让用户登录并付钱。 
然后将订单信息全部丢给process_order.php处理 
//这里有一点需要特别说明的是,因为这是一个练习,数据都是虚拟的,所以无法从支付宝或者微信,银联等获知用户支付已经支付成功,所以这里将是否已经支付的判定设置为,只要用户填写了付款信息,并点击付款,打开了支付页面,这里就在cookie中设置为已支付状态

<?php
function executeSql($sql){$flag = false;$feedback = array();if($sql == ""){echo "Error! Sql content is empty!";}else{$servername = "localhost";$username = "root";$password = "";$dbname = "hw";$conn = mysqli_connect($servername, $username, $password, $dbname);if (mysqli_connect_errno()){echo "Failed to connect to MySQL: " . mysqli_connect_error();}$query_result=mysqli_query($conn,$sql);//query_result is a PHP arrayif($query_result){$flag = true;$feedback = $query_result;//$num_rows=mysqli_num_rows($query_result);}return array($flag,$feedback);}}if(isset($_COOKIE['pay_way'])){$payWay = $_COOKIE['pay_way'];
}else{echo "Error!";
}if($payWay == "Alipay"){echo "<script>window.open('https://auth.alipay.com/login/index.htm?goto=https%3A%2F%2Fmy.alipay.com%2Fportal%2Fi.htm')</script>";//$image_url = "https://www.hkelectric.com/zh/CustomerServices/PublishingImages/Alipay_Download_QR.jpg";//$imageData = base64_encode(file_get_contents($image_url));//echo '<img src="https://img-blog.csdnimg.cn/2022010613215767422.jpeg'.$imageData.'">';
}else if($payWay == "WeChatPay"){//$image_url = "https://3.bp.blogspot.com/-ymZs4Aij_f8/WnXUq9v5Z9I/AAAAAAAAFeA/Zrnru65sDLEgGbVbJ_KevD9_izoL3YO5wCLcBGAs/s1600/wechat.jpg";//$imageData = base64_encode(file_get_contents($image_url));//var_dump($imageData);//echo '<img src="https://img-blog.csdnimg.cn/2022010613215767422.jpeg'.$imageData.'">';echo "<script>window.open('https://pay.weixin.qq.com/index.php/public/wechatpay')</script>";
}else if($payWay == "Credit"){echo "<script>window.open('https://bank.hangseng.com/1/2/chi/e-services/personal-ebanking/hk-personal-ebanking')</script>";
}else if($payWay == "UnionPay"){echo "<script>window.open('https://cn.unionpay.com/front.do')</script>";
}setcookie('pay_status',true);$sql = "UPDATE payment_info SET pay_status=1 WHERE pay_id = ".$_COOKIE['pay_id'].";";
$result = executeSql($sql);
if($result[0]){echo "<br>";echo "<br>";echo "<a href='process_order.php'>Click here to see order information.</a>";
}else{echo "You have to pay first!";
}?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65

8.查看交易信息并导出报告

1)process_order.php 
//将订单的信息填入到数据库表中

<!DOCTYPE html>
<html>
<head><title>Order information</title>
</head>
<body><?phpfunction executeSql($sql){$flag = false;$feedback = array();if($sql == ""){echo "Error! Sql content is empty!";}else{$servername = "localhost";$username = "root";$password = "";$dbname = "hw";$conn = mysqli_connect($servername, $username, $password, $dbname);if (mysqli_connect_errno()){echo "Failed to connect to MySQL: " . mysqli_connect_error();}$query_result=mysqli_query($conn,$sql);//query_result is a PHP arrayif($query_result){$flag = true;$feedback = $query_result;//$num_rows=mysqli_num_rows($query_result);}return array($flag,$feedback);}}function infoSplit($p_info){$result = array();$single_info = explode("/", $p_info);foreach($single_info as $val){$single_result = array();$details = explode(",",$val);foreach ($details as $value){array_push($single_result, $value);   }array_push($result, $single_result);}array_pop($result);return $result;}$u_id = $_COOKIE['u_id'];$d_id = $_COOKIE['d_id'];$pay_id = $_COOKIE['pay_id'];$p_info = $_COOKIE['p_info'];echo $p_info;$o_date = date("Y-m-d H:i:s");$o_id = 0;//echo gettype($o_date);$sql = "INSERT INTO order_info (u_id,d_id,o_date,pay_id) VALUES(".$u_id.",".$d_id.",'".$o_date."',".$pay_id.");";$insert_result = executeSql($sql);if($insert_result[0]){$select_sql = "SELECT o_id FROM order_info WHERE pay_id = ".$pay_id.";";$select_result = executeSql($select_sql);if($select_result[0]){while($row = mysqli_fetch_assoc($select_result[1])){$o_id=$row["o_id"];setcookie('o_id',$o_id);}}}$split_result = infoSplit($p_info);//var_dump($split_result);for($i = 0; $i < count($split_result);$i++){$p_id = $split_result[$i][0];$p_num = $split_result[$i][1];$p_inventory = 0;$insert_order_sql = "INSERT INTO orderDetailRecord_info (o_id,p_id,p_num) VALUES(".$o_id.",".$p_id.",".$p_num.");";$insert_order_result = executeSql($insert_order_sql);if($insert_order_result[0]){//select product num from stock_info and update$select_stock_num_sql = "SELECT p_inventory FROM stock_info WHERE p_id = ".$p_id.";";$select_stock_num_result = executeSql($select_stock_num_sql);if($select_stock_num_result[0]){while($row = mysqli_fetch_assoc($select_stock_num_result[1])){$p_inventory = $row['p_inventory'];}}//update p_inventory$p_inventory = $p_inventory - $p_num;$update_sql = "UPDATE stock_info SET p_inventory = '".$p_inventory."' WHERE p_id = '".$p_id."';";$update_result = executeSql($update_sql);if($update_result[0]){header('location:view_order.php');}}}?></body></html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102

2)view_order.php 
//查看订单信息,并给出生成报告的链接

<!DOCTYPE html>
<html>
<head><title>Order Information</title>
</head>
<body><?phpif($_COOKIE['pay_status']){$o_id = $_COOKIE['o_id'];$u_id = $_COOKIE['u_id'];$tracking_num = $_COOKIE['d_id'];$pay_id = $_COOKIE['pay_id'];$total_item = $_COOKIE['total_item'];$phones_price = $_COOKIE['phones_price'];$shipment_price = $_COOKIE['shipment_price'];$total_price = $phones_price + $shipment_price;$pay_status = $_COOKIE['pay_status'];?><table border="1"><caption><h2>Order information</h2></caption><tr><th>Order id</th><th>User</th><th>Tracking Number</th><th>Product Price</th><th>Delivery Price</th><th>Total Items</th><th>Total Price</th><th>Payment ID</th><th>Pay Status</th></tr><?phpecho "<tr>";echo "<td>".$o_id."</td>";echo "<td>".$u_id."</td>";echo "<td>".$tracking_num."</td>";echo "<td>".$phones_price."HKD</td>";echo "<td>".$shipment_price."HKD</td>";echo "<td>".$total_item."</td>";echo "<td>".$total_price."HKD</td>";echo "<td>".$pay_id."</td>";if($pay_status){echo "<td>Paid</td>";}else{echo "<td>Not Paid</td>";}echo "</tr>";echo "</table>";echo "<br>";echo "<a href='eStockReport.php'>Export Product Report</a>";echo "<br>";echo "<br>";echo "<a href='eOrderReport.php'>Export Order Report</a>";echo "<br>";echo "<br>";echo "<a href='eDeliveryReport.php'>Export Delivery Report</a>";}else{header('location:payInfo.php');}?></body></html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63

9.导出报告

1)eOrderReport.php 
//导出订单报告

<!DOCTYPE html>
<html>
<head><title>Export Report</title>
</head>
<body><?phpfunction executeSql($sql){$flag = false;$feedback = array();if($sql == ""){echo "Error! Sql content is empty!";}else{$servername = "localhost";$username = "root";$password = "";$dbname = "hw";$conn = mysqli_connect($servername, $username, $password, $dbname);if (mysqli_connect_errno()){echo "Failed to connect to MySQL: " . mysqli_connect_error();}$query_result=mysqli_query($conn,$sql);//query_result is a PHP arrayif($query_result){$flag = true;$feedback = $query_result;//$num_rows=mysqli_num_rows($query_result);}return array($flag,$feedback);mysqli_close($conn);}}$myfile = fopen("OrderReport.txt", "w")or die("Unable to open file!");$file_stream = null;$sql = "SELECT * FROM order_info;";$result = executeSql($sql);if($result[0]){$i=0;while ($row = mysqli_fetch_assoc($result[1])){$o_id=$row["o_id"];$u_id=$row["u_id"];$d_id=$row["d_id"];$o_date=$row["o_date"];$pay_id=$row["pay_id"];$file_stream = $file_stream."Order ID: ".$o_id."\n";$file_stream = $file_stream."User ID: ".$u_id."\n";$file_stream = $file_stream."Delivery ID: ".$d_id."\n";$file_stream = $file_stream."Order Date: ".$o_date."\n";$file_stream = $file_stream."Payment ID: ".$pay_id."\n";$select_sql = "SELECT * FROM orderDetailRecord_info WHERE o_id = ".$o_id.";";$select_result=executeSql($select_sql);if($select_result[0]){$j = 0;while($select_rows = mysqli_fetch_assoc($select_result[1])){$r_id=$select_rows["r_id"];$p_id=$select_rows["p_id"];$p_num=$select_rows["p_num"];$file_stream = $file_stream."Product ID: ".$p_id."   \t";$file_stream = $file_stream."Product Number: ".$p_num."\n";$j++;}}else{echo "not fetch";}$i++;$file_stream = $file_stream."\n\n\n";}}//向文件中写入字符串fwrite($myfile, $file_stream);//关闭文件句柄fclose($myfile);header('location:view_order.php');?>
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89

2)eStockReport.php 
//导出库存报告

<!DOCTYPE html>
<html>
<head><title>Export Report</title>
</head>
<body><?php$file_stream = null;function executeSql($sql){$flag = false;$feedback = array();if($sql == ""){echo "Error! Sql content is empty!";}else{$servername = "localhost";$username = "root";$password = "";$dbname = "hw";$conn = mysqli_connect($servername, $username, $password, $dbname);if (mysqli_connect_errno()){echo "Failed to connect to MySQL: " . mysqli_connect_error();}$query_result=mysqli_query($conn,$sql);//query_result is a PHP arrayif($query_result){$flag = true;$feedback = $query_result;//$num_rows=mysqli_num_rows($query_result);}return array($flag,$feedback);mysqli_close($conn);}}$myfile = fopen("StockReport.txt", "w")or die("Unable to open file!");$sql = "SELECT * FROM product_info;";$result = executeSql($sql);if($result[0]){$i=0;while ($row = mysqli_fetch_assoc($result[1])){$p_id=$row["p_id"];$p_name=$row["p_name"];$p_brand=$row["p_brand"];$p_type=$row["p_type"];$p_price=$row["p_price"];$p_inventory=0;$select_sql = "SELECT p_inventory FROM stock_info WHERE p_id = ".$p_id.";";$select_result=executeSql($select_sql);if($select_result[0]){while($select_rows = mysqli_fetch_assoc($select_result[1])){$p_inventory=$select_rows["p_inventory"];}}else{echo "not fetch";}$p_descr=$row["p_descr"];$p_color=$row["p_color"];$p_image_url = $row["p_image_url"];//$imageData = base64_encode(file_get_contents($p_image_url));$file_stream = $file_stream."Product ID: ".$p_id."\n";$file_stream = $file_stream."Product Name: ".$p_name."\n";$file_stream = $file_stream."Product Brand: ".$p_brand."\n";$file_stream = $file_stream."Product Type: ".$p_type."\n";$file_stream = $file_stream."Product Price: ".$p_price."\n";$file_stream = $file_stream."Product Inventory: ".$p_inventory."\n";$file_stream = $file_stream."Product Description: ".$p_descr."\n";$file_stream = $file_stream."Product Color: ".$p_color."\n";$file_stream = $file_stream."Product Image URL: ".$p_image_url."\n\n\n";$i++;}}//向文件中写入字符串fwrite($myfile, $file_stream);//关闭文件句柄fclose($myfile);function php_sendmail($stream){require('class.phpmailer.php');  //$mail->Host = "ssl://smtp.gmail.com"; 
$mail = new PHPMailer(); //实例化  $mail->IsSMTP(); // 启用SMTP  //$mail->Host = "smtp.163.com"; //SMTP服务器 163邮箱例子  
$mail->Host = "smtp.126.com"; //SMTP服务器 126邮箱例子  
//$mail->Host = "smtp.qq.com"; //SMTP服务器 qq邮箱例子  $mail->Port = 25;  //邮件发送端口  
$mail->SMTPAuth   = true;  //启用SMTP认证  $mail->CharSet  = "UTF-8"; //字符集  
$mail->Encoding = "base64"; //编码方式  $mail->Username = "ninnyyan@126.com";  //你的邮箱  
$mail->Password = "sandy.126";  //你的密码  
$mail->Subject = "Product information updating"; //邮件标题  $mail->From = "ninnyyan@126.com";  //发件人地址(也就是你的邮箱)  
$mail->FromName = "ninny";   //发件人姓名  $address = "714921503@qq.com";//收件人email  
$mail->AddAddress($address, "feng");    //添加收件人1(地址,昵称)    //$mail->AddAttachment('xx.xls','我的附件.xls'); // 添加附件,并指定名称  $mail->IsHTML(true); //支持html格式内容  
//$mail->AddEmbeddedImage("logo.jpg", "my-attach", "logo.jpg"); //设置邮件中的图片  
$mail->Body = $file_stream; //邮件主体内容  //发送
if(!$mail->Send()){ echo "Fialed to send " . $mail->ErrorInfo;  
} else {  echo "Successfully send the email!";  
}  
}php_sendmail($file_stream);
header('location:view_order.php');
?>
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135

3)eDeliveryReport.php 
//导出物流报告

<!DOCTYPE html>
<html>
<head><title>Export Report</title>
</head>
<body><?phpfunction executeSql($sql){$flag = false;$feedback = array();if($sql == ""){echo "Error! Sql content is empty!";}else{$servername = "localhost";$username = "root";$password = "";$dbname = "hw";$conn = mysqli_connect($servername, $username, $password, $dbname);if (mysqli_connect_errno()){echo "Failed to connect to MySQL: " . mysqli_connect_error();}$query_result=mysqli_query($conn,$sql);//query_result is a PHP arrayif($query_result){$flag = true;$feedback = $query_result;//$num_rows=mysqli_num_rows($query_result);}return array($flag,$feedback);mysqli_close($conn);}}$myfile = fopen("DeliveryReport.txt", "w")or die("Unable to open file!");$file_stream = null;$sql = "SELECT * FROM delivery_info;";$result = executeSql($sql);if($result[0]){$i=0;while ($row = mysqli_fetch_assoc($result[1])){$d_id=$row["d_id"];$d_company=$row["d_company"];$d_init_add=$row["d_init_add"];$d_trgt_add=$row["d_trgt_add"];$d_price=$row["d_price"];$file_stream = $file_stream."Delivery ID: ".$d_id."\n";$file_stream = $file_stream."Delivery Company: ".$d_company."\n";$file_stream = $file_stream."Delivery Initial Address: ".$d_init_add."\n";$file_stream = $file_stream."Delivery Target Address: ".$d_trgt_add."\n";$file_stream = $file_stream."Delivery Price: ".$d_price."\n\n\n";$i++;}}//向文件中写入字符串fwrite($myfile, $file_stream);//关闭文件句柄fclose($myfile);header('location:view_order.php');?>
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70

10.搜索功能

做了一个分类搜索的功能,用的就是数据库的模糊查询,很简单 
1)search.html 
//页面

<html>
<head>
<meta charset="utf-8">
<title>Search phones</title>
</head> 
<h1>Search what you want</h1><form action="search.php" method="post"><select name="select_condition"><option value="">Choose a condition</option><option value="brand">Brand</option><option value="name">Product Name</option><option value="type">Type</option><option value="color">Color</option><option value="price">Price</option></select><br><br>Enter your condition here:<br><input type="text" name="value"><br><br>If you choose price, please enter the price range here:<br>Low range:<input type="text" name="low_range"><br>High range:<input type="text" name="high_range"><br><input type="submit" name="submit" value="Submit"></form>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

2)search.php 
//处理查询请求

<!DOCTYPE html>
<html>
<body>
<?phpif(isset($_POST["submit"])){$selected_Condition = $_POST["select_condition"];}else{echo "No condition selected!";echo "<br>";}if($selected_Condition == "brand"){$value = $_POST["value"];if($value ==""){echo "The value can't be empty!";echo "<br>";}else{$sql = "SELECT * FROM product_info WHERE p_brand LIKE '%".$value."%';";showResult($sql);}}else if($selected_Condition == "name"){$value = $_POST["value"];if($value ==""){echo "The value can't be empty!";echo "<br>";}else{$sql = "SELECT * FROM product_info WHERE p_name LIKE '%".$value."%';";showResult($sql);}}else if($selected_Condition == "type"){$value = $_POST["value"];if($value ==""){echo "The value can't be empty!";echo "<br>";}else{$sql = "SELECT * FROM product_info WHERE p_type LIKE '%".$value."%';";showResult($sql);}}else if($selected_Condition == "color"){$value = $_POST["value"];if($value ==""){echo "The value can't be empty!";echo "<br>";}else{$sql = "SELECT * FROM product_info WHERE p_color LIKE '%".$value."%';";showResult($sql);}}else if($selected_Condition == "price"){$low_range = $_POST["low_range"];$high_range = $_POST["high_range"];if($low_range ==""||$high_range == ""){echo "The range can't be empty!";echo "<br>";}else{$sql = "SELECT * FROM product_info WHERE p_price BETWEEN ".$low_range." AND ".$high_range.";";showResult($sql);}}function showResult($sql){$servername = "localhost";$username = "root";$password = "";$dbname = "hw";$conn = mysqli_connect($servername, $username, $password, $dbname);// Check connectionif (mysqli_connect_errno()){echo "Failed to connect to MySQL: " . mysqli_connect_error();}$result=mysqli_query($conn,$sql);//result is a PHP array$num_rows=mysqli_num_rows($result);mysqli_close($conn);if($num_rows == 0){echo "There is no meeted results.";}else{echo '<table border="1">';echo "<tr>";echo "<th>Product Name</th>";echo "<th>Product Brand</th>";echo "<th>Product Type</th>";echo "<th>Product Price</th>";echo "<th>Product Description</th>";echo "<th>Product Color</th>";echo "<th>Product Image</th>";echo "</tr>";$i=0;while ($row = mysqli_fetch_assoc($result)){$p_name=$row["p_name"];$p_brand=$row["p_brand"];$p_type=$row["p_type"];$p_price=$row["p_price"];$p_descr=$row["p_descr"];$p_color=$row["p_color"];$p_image_url = $row["p_image_url"];echo "<tr>";echo "<td>".$p_name."</td>";echo "<td>".$p_brand."</td>";echo "<td>".$p_type."</td>";echo "<td>".$p_price."</td>";echo "<td>".$p_descr."</td>";echo "<td>".$p_color."</td>";$imageData = base64_encode(file_get_contents($p_image_url));echo '<td><img src="https://img-blog.csdnimg.cn/2022010613215767422.jpeg'.$imageData.'"></td>';echo "</tr>";$i++;}echo "</table>";}}?></body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130

特别说明:

1)购物车用session实现 
2)其他各种用户登录状态,产品id等信息,均存储在cookie数组中 
3)当某种产品卖出后,会从数据库中将该产品的库存减去订单中相应的数量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_895592.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高级Java开发人员经常访问的网站

这是高级Java开发人员最常访问的几个网站。质量是优秀网站的关键因素&#xff0c;这此网站都有较高的质量内容。下面逐一介绍&#xff1a; 1. Stackoverflow Stackoverflow.com可能是编程世界中最受欢迎的网站。 有数百万个好问题和答案。 学习API或编程语言通常依赖于代码…

Github网站css加载不出来的处理方法

转载链接&#xff1a;https://www.cnblogs.com/liuleilei/p/6436093.html 今天打开github的时候发现&#xff0c;github页面的css样式加载不出来。。网速正常的时候也是这样&#xff0c;怎么办呢&#xff1f; 场景重现&#xff1a; 网站响应缓慢&#xff08;网络良好的情况下…

推荐一个良心网站

MSDN&#xff0c;我告诉你 https://msdn.itellyou.cn/ 本站仅为个人性质的原版软件信息收录站点&#xff0c;包含windows各类操作系统、开发人员工具、企业解决方案、工具和资源、应用程序、设计人员工具等

2018ACM ICPC Asia Regional-Seoul L题 Working Plan(贪心)

题面&#xff1a; 题意&#xff1a;一共有m个工人&#xff0c;第i个工人一共工作wi天&#xff0c;一共有n天&#xff0c;第i天共有di个人工作&#xff0c;且每个人只要开始工作就必须连续工作w天&#xff0c;每次工作结束&#xff0c;至少休息h天才开始下一次工作&#xff0c;现…

uniGUI - v1.90.0.1506-SEO-国内最新版

产品亮点&#xff1a; 基于业界最先进的脚本库Sencha Ext JS。 包括Sencha Ext JS的OEM许可证。 创建状态Web应用程序的独特平台。 完整的IDE支持&#xff0c;用于创建项目&#xff0c;设计表单&#xff0c;框架和处理数据模块。 脚本客户端jVA脚本事件的高级支持。 库核心经…

EurekaLog 7.5.1.0 Enterprise for Delphi 10.3 fixed- SEO-开发小女

适用于Delphi 10.3的EurekaLog 7.5.1.0 Enterprise完整版本FiXED EurekaLog是新的Delphi和C Builder异常跟踪工具&#xff0c;它使您的应用程序&#xff08;GUI&#xff0c;控制台&#xff0c;Web等&#xff09;能够捕获所有异常&#xff0c;内存泄漏并检测无限循环和死锁。它…

Cosmos DB学习 - 在门户网站创建Azure Function(Node.js)连接 Cosmos DB查询数据

Cosmos DB学习 1、什么是结构化数据、非结构化数据与半结构化数据2、什么是关系型数据库&#xff0c;什么是非关系型数据库Nosql3、MongoDB4、在Azure中使用MongoDB的途径5、Azure 的 Cosmos DB概述6、在门户网站创建Node.js Function连接CosmosDB 1、什么是结构化数据、非结构…

JAVA SSM实现国际化 中英双语网站

一、思路 前段时间做了一个双语网站&#xff0c;记录一下自己实现国际化的方式。 实现国际化有两种方法。 1、第一种调用必应、百度、微软等翻译接口实时翻译。 优点&#xff1a;对于开发者来说非常省时省力&#xff0c;在前端直接调用接口翻译&#xff0c;使用js保存cooki…

浅谈大型网站动态应用系统架构

动态应用&#xff0c;是相对于网站静态内容而言&#xff0c;是指以c/c、php、Java、perl、.net等服务器端语言开发的网络应用软件&#xff0c;比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。 大型动态应用系统…

sql server数据库《音乐网站》项目歌曲管理模块

1.sql server数据库《音乐网站》项目歌曲管理模块 你&#xff08;1&#xff09;任务描述 《歌曲管理》模块的E-R图如图2.50.1 所示&#xff0c;逻辑数据模型如图2.50.2 所示&#xff0c;物理数据模型如图2.50.3所示&#xff0c;数据表字段名定义见表2.50.1。请按以下设计完成数…

ASP.NET网站开发——LINQ TO SQL 动态数据支持

ASP.NET 3.5 Extensions CTP 包含了一个新特性是 ASP.NET Dynamic Data Support&#xff08;动态数据支持&#xff09;&#xff0c;它允许开发人员不用编写一行代码就能快速地建造使用LINQ to SQL对象模型的数据驱动网站。 下面就来简单介绍一下创建步骤&#xff1a; 1.创建AS…

ASP.NET网站开发——用户控件与HttpHandler

一丶用户控件 定义&#xff1a;用户控件可用来实现页面中可重用的代码&#xff0c;是可以一次编写就多处方便使用的功能块。它们是ASP.NET控件封装最简单的形式。由于它们最简单&#xff0c;因此创建和使用它们也最简单。用户控件实际上是把已有的服务器控件组合到一个空间容器…

ASP.NET网站开发——LINQ TO SQL 查询数据库数据(八大子句)

LINQ查询字句概述 1.查询&#xff08;Query&#xff09;是一组指令&#xff0c;这些指令可以从一个或多个给定的数据源中检索数据&#xff0c;并指定检索结果的数据类型和表现形式。 2.查询表达式是一种用查询语法表示的表达式&#xff0c;由一组用类似于SQL的生明性语法编写的…

ASP.NET网站开发——成员资格(安全模式)

安全的必要性 构造特殊的链接地址&#xff0c;导致文件内的数据泄露 数据库泄露 安全防范的首要范畴&#xff1a;所有的HTTP访问都要经过IIS&#xff0c;所以限制IIS的安全性是关键 asp.net的安全模式 简介&#xff1a;根据所请求的资源类型&#xff0c;IIS能够自己处理请求&…

ASP.NET网站开发——LINQ TO SQL类

LINQ TO SQL是LINQ中最重要的一个组件&#xff0c;为NET. Framework3.5所支持&#xff0c;它可以为关系数据库提供一个对象模型&#xff0c;并在该对象模型基础上实现对数据的查询丶添加丶修改丶删除等功能&#xff0c;即LINQ TO SQL提供了用于将关系数据作为对象管理的运行时…

React + Vite 实现一个音乐网站(项目搭建篇)

最近找工作屡屡碰壁&#xff0c;突然不想努力了… 最初想搭建一个个人博客&#xff0c;技术栈确定为React TS Vite&#xff0c;一方面是为了学习新知识&#xff0c;一方面是实在闲着。但是由于之前做过个人博客所有觉得个人博客可能没啥意思。主要是设计也是一大麻烦&#x…

React + Vite 实现一个音乐网站(menu篇)

众所周知&#xff0c;每个网站都有菜单… 1.建立component文件夹 内部创建menu文件夹&#xff0c;文件夹内创建index.jsx和index.scss 目录结构如下 2.代码的编写 1.解决思路&#xff1a;首先我们肯定是要搭建页面的&#xff0c;我将meun分为两部分一步份为logo&#xff0…

React + Vite 实现一个音乐网站(动画篇)

为了让网站能够炫酷一点&#xff0c;必然的动画是不可或缺的 现在实现一个类似canvas流动背景的功能&#xff0c;最初设计是遍历多个小球在页面上&#xff0c;然后小球在dom节点内移动变换。后决定加入小球一起变换&#xff0c;让小球跟随大球移动&#xff0c;同时小球也能有自…

React + Vite 实现一个音乐网站(aplayer音乐播放器 )

众所周知&#xff0c;音乐网站需要能播放音乐 1.页面搭建 我们需要搭建这样一个部分 那么秉承一分为二的原则&#xff0c;左边音乐列表&#xff0c;右边显示cd图片。理所应当我们得让cd运动起来。 components里面建立文件夹Music&#xff0c;文件夹内新建index.jsx和index.scs…