美文网首页
前后台小程序

前后台小程序

作者: bo_bo_bo_la | 来源:发表于2017-11-25 15:10 被阅读18次

1. 前台添加菜单

<!--增加菜单前台页面-->
        <form name="menu" enctype="multipart/form-data" action="php/menu/addmenu.php" method="post">
            菜名: <input type="text" name="menuname" id="menuname" value="" /><br>
            价格: <input type="text" name="price" id="" value="" /><br>
            图片: <input type="file" name="pic" id="pic" value="" /><br>
            <input type="submit" name="submit" value="添加菜单"/>
        </form>

2. �后台接受请求,接受数据并创建menu数据库,将上传的数据存储到menu数据库

<?php
    //判断用户有没有输入
    if(!empty($_POST['submit'])) {
        //判定有没有上传图片
        if(!empty($_FILES['pic'])) {
            //后台需要检查上传类型(放置直接上传PHP文件)
            if($_FILES['pic']['type'] == "image/jpeg" || $_FILES['pic']['type'] == "image/png") {
                $path = "../../uploads/";
                $result = move_uploaded_file($_FILES['pic']['tmp_name'],$path.$_FILES['pic']['name']);
            }
            //比如要求增加菜单时一定要上传图片
            if($result) {
                $menuname = htmlspecialchars($_POST['menuname']);
                $price = floatval($_POST['price']); //转成浮点数
                $pic = $_FILES['pic']['name'];
                include "../common/mysql.php";
                $fields = array(
                    'name' => $menuname,
                    'price' => $price,
                    'picture' => $pic
                );
                insert($link, $fields, "menu");
                mysqli_close($link);
            }
        }
    }
?>
image.png

3. �前台发送数据,向后台请求刚才上传的数据,然后将获取到的数据遍历形成菜单界面

//使用Ajax获得菜单数据
var xhr = new XMLHttpRequest();
xhr.onload = function() {
    var menu = JSON.parse(this.responseText);
    createMenu(menu);
}
xhr.open("get","php/menu/listmenu.php");
xhr.send();
function createMenu(data) {
    line = "";
    for(i in data) {
        line += "<li><input type=\"checkbox\" name=\"menu_id[]\" value=\""+data[i].id+"\" /> <img width='50px' src=\"uploads/"+data[i].picture+"\"> <span id=\""+data[i].id+"\" >"+data[i].name+"</span><span id=\""+data[i].id+"\" >"+data[i].price+"</span>元 订购份数: <input type=\"text\" name=\"num_"+data[i].id+"\"/></li>"
        document.getElementById("menuUl").innerHTML = line;
    }
}

4. ��后台接受请求,打开menu数据库,将数据返回给前段

<?php
    //mysql.php  数据库操作函数库文件
    include "../common/mysql.php";
    $data = getAll($link, "*", "menu", "1=1");
    echo json_encode($data);
?>
image.png

5. ���前台注册界面

<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
    <body>
        <div id="nav"></div>
        <form action="php/member/register.php" method="post" name="form1">
            密  码: <input type="password" name="member_password" /> <br>
            确认密码: <input type="password" name="member_password_confirm" /> <br>
            用户姓名: <input type="text" name="member_name"/> <br>
            用户电话: <input type="text" name="member_mobile"/> <br>
            用户地址: <input type="text" name="member_address"/> <br>
            <input type="hidden" name="member" value="1" />
            <input type="button" name="btn" value="立即注册"/>
        </form>
    </body>
    <script type="text/javascript">
        $("#nav").load("tpl/nav.html");
        document.form1.btn.onclick = checkdata;
        var isOk = true;
        function checkdata() {
            if(document.form1.member_password.value != document.form1.member_password_confirm.value){
                alert("两次密码输入不一致");
                return false;
            }
                document.form1.submit();
        }
        function checkuser(value) {
            var xhr = new XMLHttpRequest();
            xhr.onload = function() {
                if(this.responseText == "fail") {
                    document.form1.btn.disabled = true;
                    document.form1.member_username.className = "error";
                }else {
                    document.form1.btn.disabled = false;
                    document.form1.member_username.className = "";
                }
            }
            var formData = new FormData();
            formData.append("member_username",value)
            xhr.open("POST","php/member/checkuser.php");
            xhr.send(formData);
        }
    </script>

6. ��注册用户的时候检测该用户名是否已经被注册,如果没被注册,可以注册

<?php
    //验证用户名的合法性
    if(!empty($_POST['member_username'])) {
        include "../common/mysql.php";
        $username = htmlspecialchars($_POST['member_username']);
        //查询该用户名是否已经存在
        $member = getOne($link,"*","member","member_username='".$username."'");
        //如果查询结果为空 表示没有相同的用户注册
        if(empty($member)) {
            echo "ok";
        }else {
            echo "fail";
        }
    }
?>

7. ��将可以注册的用户名即其他信息,插入到member数据表里面

<?php
    //会员注册
    if(!empty($_POST['member'])) {
        //引入数据库函数库
        include "../common/mysql.php";
        foreach($_POST as $key => $val) {
            $_POST[$key] = htmlspecialchars($val);
        }
        $member = array(
            'member_name' => $_POST['member_name'],
            'member_mobile' => $_POST['member_mobile'],
            'member_address' => $_POST['member_address'],
            'member_username' => $_POST['member_username'],
            'member_password' => sha1($_POST['member_password'])
        );
        insert($link, $member, 'member');
    }
?>
会员界面

8. �会员登录页面,将前台输入的用户名和密码传送到后台

<body>
        <div id="nav"></div><br>
        <!--登陆页面-->
        <form action="php/member/login.php" name="form1" method="post">
            用户名: <input type="text" name="username" /><br>
            密 码: <input type="password" name="password" /><br>
            <input type="submit" name="btn" value="立即登录"/>
        </form>
    </body>
    <script type="text/javascript">
        $("#nav").load("tpl/nav.html");
    </script>

9. �将前台输入的信息进行核实,如果信息不符合留在本页,如果符合,跳转到首页。并以此在member表中查找该会员信息,将会员用户名,名称,电话存储到Session里面,备用

<?php
    session_start();
    if(!empty($_POST['username']) && !empty($_POST['password'])) {
        include "../common/mysql.php";
        //对提交的数据进行预处理
        $username = htmlspecialchars($_POST['username']);
        $password = sha1($_POST['password']);
        $member = getOne($link,"*","member","member_username='".$username."' and member_password='".$password."'");
        if(!empty($member['member_username'])) {
            $_SESSION['member']['username'] = $member['member_username'];
            $_SESSION['member']['name'] = $member['member_name'];
            $_SESSION['member']['mobile'] = $member['member_mobile'];
            header("Location: /php/db/index.html");
        }else {
            header("Location: /php/db/login.html");
        }
    }
?>

10. ��判断用户是否登录,如果登录成功返回上述存储在Session里面的数据

<?php
    session_start();
    if(!empty($_SESSION['member'])) {
        //将用户登录信息输出到前台
        echo json_encode($_SESSION['member']);
    }else {
        //nologin  表示用户尚未登录
        echo json_encode(array("no login"));
    }
?>

11. �前台想后台发送请求,如果用户登录,界面显示 欢迎"+data.name+"来到商城 <a href=''>用户中心

<script type="text/javascript">
            $('#nav').load("tpl/nav.html");
            $.get("php/member/member_status.php",{},function(data) {
                console.log(data);
                if(typeof(data.name) != "undefined") {
                    $('#member_status').html("欢迎"+data.name+"来到商城 <a href=''>用户中心</a>");
                }
            },"json");
        </script>

12. �前台将选中的菜品和分数传送到后台

    var xhr = new XMLHttpRequest();
    xhr.onload = function() {
        document.getElementById("tips").innerHTML = this.responseText;
    }
    var formData = new FormData();
    formData.append("menu",JSON.stringify(userSelected));
    xhr.open("POST","php/orders/dingdan.php");
    xhr.send(formData);

13. �后台接受数据,遍历数组,将数据插入到listorder表中

<?php
    session_start();
    //将用户订餐数据记录到数据库
    //接受提交的订单数据
    if(!empty($_POST['menu'])) {
        include "../common/mysql.php";
        //$_POST['menu']是前台传来的JSON串
        //json_decode 将JSON字符串转变成数组
        $menu = json_decode($_POST['menu'],true);
        print_r($menu);
        //用户选择的checkbox - menu_id
        foreach($menu as $key => $val) {
            $menu_id = $val['menu_id'];
            //订购的份数 num_id
            $amount = intval($val['amount']);
            echo "订单的菜单id=".$menu_id."<br>";
            echo "订单的份数amount=".$amount."<br><br>"; 
            $row = getOne($link, "name,price","menu","id=".$menu_id);
            $fields = array(
                "menu_name" => $row['name'],
                "menu_price" => $row['price'],
                'amount' => $amount,
                'createDate' => date("Y-m-d H:i:s"),
                'name' => $_SESSION['member']['name'],
                'number' => $_SESSION['member']['mobile']
            );
            insert($link, $fields, 'orderlist');    
        }
    }
?>
image.png image.png

相关文章

网友评论

      本文标题:前后台小程序

      本文链接:https://www.haomeiwen.com/subject/rsptbxtx.html