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

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>
    <?php
        include '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>
    <?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 array
            if($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">
        <?php
        if(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>
    <?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 array
            if($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>
    <?php
    function 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 connection
            if (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 array

            var_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 connection
        if (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="data:image/jpeg;base64,'.$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>
            <?php
            echo "</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 connection
        if (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="data:image/jpeg;base64,'.$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>
<?php

            echo "</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>
    <?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 array
            if($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>
            <?php
                    echo "</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>
                <?php
                echo "".$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>
    <?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 array
            if($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>

    <?php
    if(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

<?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 array
            if($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 array
            if($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="data:image/jpeg;base64,'.$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="data:image/jpeg;base64,'.$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>
    <?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 array
            if($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>
    <?php
    if($_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>
    <?php
            echo "<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>
    <?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 array
            if($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 array
            if($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 = "[email protected]";  //你的邮箱  
$mail->Password = "sandy.126";  //你的密码  
$mail->Subject = "Product information updating"; //邮件标题  

$mail->From = "[email protected]";  //发件人地址(也就是你的邮箱)  
$mail->FromName = "ninny";   //发件人姓名  

$address = "[email protected]";//收件人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>
    <?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 array
            if($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>
<?php
    if(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 connection
        if (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="data:image/jpeg;base64,'.$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)当某种产品卖出后,会从数据库中将该产品的库存减去订单中相应的数量。

猜你喜欢

转载自blog.csdn.net/youngcarpenter/article/details/85443477