zoukankan      html  css  js  c++  java
  • 结算

    只要消费就要进行结账,自己写的结账功能。

    这个也是要连接数据进行修改的,比如购买了东西,写入了数据库,结账结束后,自然要把数据库进行清空,将结账的钱写入数据库,进行保存。

    和上一个随笔相连,同样做一个菜单的结账功能吧。

    我是用了两张表进行存数据,一张是桌子信息的表,另一张就是点餐后的点餐表,到结账时,对点餐表进行总和金额,写入桌子表,同时,点餐表中关于这张桌子点的餐也就清除。

    一、数据库

    情况桌子的信息表:                                                                   每张桌子的点餐情况(canpin是一张所有菜品的表,这里是它的代号):

                

    二、结账页面的布局还有添加结账功能

    1、结账页面的布局很简单(注意:要将用到的bootstrap提前引入)

    注意:这里是关于每张桌子的,所以有暂存桌号,这个可以用session,因为是只写结账功能,这个提一下

    (1)可以加一个标题:结账

    1
    <h1>结账</h1>

    (2)接下来就是遍历数据库了,遍历一下这张桌子的点餐情况(前面我已经提到了session暂存桌号code)

    可以用一张表显示点餐信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <table width="80%" height="100%" cellpadding="0" cellspacing="0" border="1">
        <tr>
             <td>餐品</td>
         <td>单价</td>
         <td>数量</td>
         <td>服务员</td>
         <td>时间</td>
        </tr>
        <!-- 这里是每一列的详细信息,遍历数据库-->             
    </table>   

    (2.1)遍历数据库

    先要是桌子的遍历

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
        session_start();  //开启session
            $code $_GET["code"];  //session的值
                  
            include("DBDA.class.php");  //调用封装好的数据库
        $db new DBDA();  //造新对象
                 
        $sql " select * from diancan where code={$code}";  //查询一下桌号的那张表的code和session值一样的所有信息
        $attr $db->Query($sql);  //执行一下语句
            foreach($attr as $v)
        {<br>         //输出桌号信息
            echo "<div>{$v[1]}桌</div><input type='button' value='{$v[1]}' hidden='hidden' id='zhuo' />";
         }
    ?>     

    然后就是每张桌子的消费结果详情表(要写在表格的标签中)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php 
           $sql =" select * from yidiancan where code='$v[1]'";  //查找点餐详情表中的code和上面遍历出来的桌号相等
           $attr $db->Query($sql);  //执行查询语句
         foreach$attr as $v)
        {
          $cha="select name from caidan where code='{$v[2]}'";  //查找菜单的那个code的名字
          $cp=$db->Query($cha);
          echo  "<tr><td>{$cp[0][0]}</td><td>{$v[3]}</td><td>{$v[4]}</td><td>{$v[5]}</td><td>{$v[6]}</td></tr>";
        }
     ?>

    看下遍历的结果

    2、布局结束后,就是结算的功能部分了

    (1)就是显示下总价格

    价格:单价*数量(在表中单价和数量都是有的,直接遍历相乘就可以啦)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php 
        $sql =" select * from yidiancan where code='$v[1]'";  //遍历点餐信息
        $attr $db->Query($sql); //执行语句
        $sum=0;  //先给sum赋值为0
        foreach$attr as $v)
        {
          $cha="select name from caidan where code='{$v[2]}'";  //查找菜单的名字
          $cp=$db->Query($cha);  //执行语句
          $sum=$sum+$v[3]*$v[4];  //数量和单价的那一列相乘,并且把值赋给sum                  
        }<br>      //输出这个总价格(样式是单选按钮)
        echo  "总消费:<input type='radio' value='{$sum}' id='zj' name='yi' class='jie' />{$sum}";              
    ?>

    (2)有时是不是也会打折什么的?

    先写出打折的两个选项

    1
    2
    3
    4
    5
    <h1 style=" color:#F00">折扣</h1>
    <div id="zhekou"  style=" float:left; 150px ">
      <input type='radio' value='0.95' name='zhi' class='ck' />九五折
      <input type='radio' value='0.8' name='zhi' class='ck' />八折
    </div>

    写出一个打折后,让价格显示出来的地方

    1
    2
    3
    <div id="zhehou">
                        
    </div>

    接下来就是利用ajax方法来进行计算打折后的价格,并且显示

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $("#zhekou").click(function(){
        var zj = $("#zj").val();  //找到总价的单选按钮的值
        var ck = $(".ck");  //找到打折的单选 
        var str = "";
        for(var i=0;i<ck.length;i++)
        {
            if(ck.eq(i).prop("checked")) //单选按钮的选中状态
            
                 var num = ck.eq(i).val()*zj; //这个就是总价*折扣选中的单选按钮的值
                str+="打折后收账:<input type='radio' value='"+ck.eq(i).val()*zj+"' name='yi' class='jie' />"+num.toFixed(1);
            }
        }          
        $("#zhehou").html(str);  //将str的值写入折后价格显示的地方
             
    })

    看下这个功能的结果

    三、既然这个功能实现了,是不是要写入数据库了呢?

    这样可以添加一个确定按钮,给这个按钮写入事件

    1
    <input type="button" value="确定" id="save"/> 

    这个按钮起了个名字,接下来就是添加单击事件

    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
    $("#save").click(function(){
        var zhuo = $("#zhuo").val();  //找到桌的值
        var jie = $(".jie"); //找到jie单选按钮的
        var str = "";
        for(var i=0;i<jie.length;i++)
        {
            if(jie.eq(i).prop("checked"))  //判断单选钮是否选中
            {
                str = str+jie.eq(i).val()+"|";
            }
        }
        str = str.substr(0,str.length-1);  //截取子串
        $.ajax({
            url:"savee.php"//保存的处理页面
            data:{zhuo:zhuo,jie:str},  //将值传过去
            type:"POST",  //传输的方式
            dataType:"TEXT",
            success: function(data){
                if(data.trim()=="OK")
                {
                                         
                    alert("结算成功!");
                                         
                }
                window.location.href="jie11.php?code=<?php echo $code; ?>";  //刷新页面
                                     
            }
        });
    })

    保存的处理页面

    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
    <?php
    session_start();
     
    include("DBDA.class.php");  //调用的封装类
    $db new DBDA();  //造新对象
     
    //传过来的用户和选项的
    $zhuo $_POST["zhuo"];
    $jie $_POST["jie"];
    $time date("Y-m-d H:i:s");
     
    $su "update diancan set money=money+'{$jie}' where name='{$zhuo}'";  //修改表中的money值,并且每次添加新值是相加而不是重新写入
    $db->Query($su,0);  //执行语句
     
    $attr explode("|",$jie); 
     
    foreach($attr as $v)
    {
        $sql1 "update diancan set time='{$time}' where name='{$zhuo}'";  //修改时间,写入当前时间
        $db->Query($sql1,0);  //执行语句
        $sql "update diancan set isok='0' where name='{$zhuo}'";  //修改状态
        $db->Query($sql,0);  //执行语句
        $sq2 "delete from yidiancan where code='{$zhuo}'"//结账结束后,点餐内容删除
        $db->Query($sq2,0);
        echo "OK";
    }

    下面看下结果

    (1)这是页面的内容,还有打折后的价格

    (2)看下数据库,点餐表的桌的信息

    已点餐的表

    (3)点击确定按钮后

    页面已经刷新,没有了这一桌的点的菜

    数据库两张表的也发生了改变

    到此结账功能就结束了

  • 相关阅读:
    Oracle SQL语句大全—查看表空间
    Class to disable copy and assign constructor
    在moss上自己总结了点小经验。。高手可以飘过 转贴
    在MOSS中直接嵌入ASP.NET Page zt
    Project Web Access 2007自定义FORM验证登录实现 zt
    SharePoint Portal Server 2003 中的单一登录 zt
    vs2008 开发 MOSS 顺序工作流
    VS2008开发MOSS工作流几个需要注意的地方
    向MOSS页面中添加服务器端代码的另外一种方式 zt
    状态机工作流的 SpecialPermissions
  • 原文地址:https://www.cnblogs.com/gyzown/p/7210823.html
Copyright © 2011-2022 走看看