簡單的結賬功能(可用於各種結賬)


只要消費就要進行結賬,自己寫的結賬功能。

這個也是要連接數據進行修改的,比如購買了東西,寫入了數據庫,結賬結束后,自然要把數據庫進行清空,將結賬的錢寫入數據庫,進行保存。

和上一個隨筆相連,同樣做一個菜單的結賬功能吧。

我是用了兩張表進行存數據,一張是桌子信息的表,另一張就是點餐后的點餐表,到結賬時,對點餐表進行總和金額,寫入桌子表,同時,點餐表中關於這張桌子點的餐也就清除。

一、數據庫

情況桌子的信息表:                                                                   每張桌子的點餐情況(canpin是一張所有菜品的表,這里是它的代號):

            

二、結賬頁面的布局還有添加結賬功能

1、結賬頁面的布局很簡單(注意:要將用到的bootstrap提前引入)

注意:這里是關於每張桌子的,所以有暫存桌號,這個可以用session,因為是只寫結賬功能,這個提一下

(1)可以加一個標題:結賬

<h1>結賬</h1>

(2)接下來就是遍歷數據庫了,遍歷一下這張桌子的點餐情況(前面我已經提到了session暫存桌號code)

可以用一張表顯示點餐信息

<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)遍歷數據庫

先要是桌子的遍歷

<?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)
	{
         //輸出桌號信息 echo "<div>{$v[1]}桌</div><input type='button' value='{$v[1]}' hidden='hidden' id='zhuo' />"; } ?>

然后就是每張桌子的消費結果詳情表(要寫在表格的標簽中)

<?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)就是顯示下總價格

價格:單價*數量(在表中單價和數量都是有的,直接遍歷相乘就可以啦)

<?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					
	}
      //輸出這個總價格(樣式是單選按鈕) echo "總消費:<input type='radio' value='{$sum}' id='zj' name='yi' class='jie' />{$sum}"; ?>

(2)有時是不是也會打折什么的?

先寫出打折的兩個選項

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

寫出一個打折后,讓價格顯示出來的地方

 <div id="zhehou">
                   
</div>

接下來就是利用ajax方法來進行計算打折后的價格,並且顯示

$("#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的值寫入折后價格顯示的地方
		
})

看下這個功能的結果

三、既然這個功能實現了,是不是要寫入數據庫了呢?

這樣可以添加一個確定按鈕,給這個按鈕寫入事件

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

這個按鈕起了個名字,接下來就是添加單擊事件

$("#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; ?>";  //刷新頁面
								
		}
	});
})

保存的處理頁面

<?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)點擊確定按鈕后

頁面已經刷新,沒有了這一桌的點的菜

數據庫兩張表的也發生了改變

 

到此結賬功能就結束了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM