PHP操作實現一個多功能購物網站

来源:http://www.cnblogs.com/jly144000/archive/2017/09/12/7512277.html
-Advertisement-
Play Games

PHP操作實現一個多功能購物網站 一、需要實現的頁面: Index.aspx:瀏覽商品頁面,顯示商品列表,用戶可以點擊“加入購物車“。 ViewCart.aspx:查看購物車頁面,顯示已購買的商品信息,可以點擊“刪除“和“提交添加訂單購買”商品 ViewAccount.aspx:查看個人賬戶餘額 L ...


PHP操作實現一個多功能購物網站

一、需要實現的頁面:

Index.aspx:瀏覽商品頁面,顯示商品列表,用戶可以點擊“加入購物車“。

ViewCart.aspx:查看購物車頁面,顯示已購買的商品信息,可以點擊“刪除“和“提交添加訂單購買”商品

ViewAccount.aspx:查看個人賬戶餘額

Login.aspx:登錄頁面

二、實現功能:

1.顯示商品列表

2.實現購買功能,購買的時候動態顯示購物車中的商品數量和商品總價格

3.點擊查看購物車後,顯示已購買的商品。註意“購買數量”列,如果對一種商品點擊購買多次,其“購買數量”不斷增加。

4.刪除購物車中已購買的商品。
如果某商品的“購買數量”為1時,則點擊“刪除”時,直接從購物車中刪除該商品;
如果商品的“購買數量”大於1時,點擊一次“刪除”時,把其購買數量減1。直到該商品購買數量為1時,再點擊刪除時,刪除該商品

5.在查看完購物車後還可以點擊“瀏覽商品”繼續購買。併在上面顯示已購買的商品數量和總價格。

6.在“查看購物車“後,可以提交訂單。
  但在提交訂單時,須完成以下功能:

(a)  檢查用戶是否已登錄,未登錄則轉到Login.aspx頁面

(b)檢查用戶賬戶餘額是否能夠滿足本次夠買

(c)檢查庫存數量是否滿足本次夠買

(d)如果以上條件都滿足則

 i.從用戶賬戶中扣除本次購買的總價格

 ii.從商品庫存中扣除本次每種商品的購買數量

 iii.向訂單表和訂單內容表中加入本次購買的商品信息

7.點擊查看賬戶,可以查看該用戶的賬戶餘額

操作代碼如下:

1.首先先做一個登錄頁面:loginpage.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="bootstrap/js/jquery-1.11.2.min.js"></script>
        <script src="bootstrap/js/bootstrap.min.js"></script>
        <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css"/>
    </head>
    <style>
        .title{
            margin-left: 750px;
            margin-top: 150px;
        }
        .quanju{
            margin-left: 650px;
            margin-top: -460px;
        }
        .name,.pwd{
            max-width: 120px;
        }
        .yangshi1{
            margin-top: 200px;
        }
        .header{
            width: 100%;
            height: 80px;
            background: #e0e0e0;
        }
        .ps{
            margin-left: 100px;
            margin-top: -100px;
        }
    </style>
    <body>
        <form class="form-horizontal" role="form" action="dengluchuli.php" method="post">
    <div class="header">
        <img src="img/logo.png" width="200" height="50" style="margin-top: 10px; margin-left: 100px;" />
        <div style="height: 50px; width: 300px; color: green;float: right; font-size: 50px; margin-right: 350px">果&nbsp;蔬&nbsp;網</div>
    </div>
    <h3 class="title">用戶登錄</h3>    
    <img src="./img/果蔬專場.jpg" width="500" height="400" class="ps" />
    <div class="quanju">
            <div class="form-group yangshi1">
                <label for="firstname" class="col-sm-2 control-label">用戶名:</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control name" name="uid" placeholder="請輸入用戶名">
                </div>
            </div>
            <div class="form-group yangshi2">
                <label for="lastname" class="col-sm-2 control-label">密碼:</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control pwd" name="pwd" placeholder="請輸入密碼">
                </div>
            </div>
            <div class="form-group">
                <div class="col-sm-offset-2 col-sm-10">
                    <div class="checkbox">
                        <label>
                        <input type="checkbox">
                        保存密碼 </label>
                        <label>
                        <input type="checkbox">
                        下次自動登錄 </label>
                    </div>
                </div>
            </div>
            <div class="form-group">
                <div class="col-sm-offset-2 col-sm-10">
                    <button type="submit" class="btn btn-warning" value="登錄" onclick="return login()" >
                    登錄
                    </button>
                    
                </div>
            </div>
        </div>    
    </form>
    </body>
    <script>
        function login(){
            var uid = document.getElementsByTagName("input")[0].value;
            if(uid==""){
                alert("請輸入用戶名!");
                return false;
            }
            var pwd = document.getElementsByTagName("input")[1].value;
            if(pwd==""){
                alert("請輸入密碼!");
                return false;
            }
        }        
    </script>
</html>

效果如圖:

2.在做一個登錄的處理頁面:dengluchuli.php

 <?php
session_start();
$uid = $_POST["uid"];
$pwd = $_POST["pwd"];
require_once "./DBDA.class.php";
$db = new DBDA();
$sql = "select * from login where username='{$uid}'";
$arr = $db->query($sql,0);
if($arr[0][2]==$pwd && !empty($pwd)){
    $_SESSION["uid"]=$uid;
    header("location:shopping_list.php");
}else{
    echo "登陸失敗!";
}

 這樣就可以和資料庫聯繫了,這個是資料庫的登錄帳號和密碼,驗證帳號,密碼,然後跳到主頁:shopping_list.php

 

3.現在做主頁的頁面:shopping_list.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="bootstrap/js/jquery-1.11.2.min.js"></script>
        <script src="bootstrap/js/bootstrap.min.js"></script>
        <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css"/>
    </head>
    <body>
        <h2 style="margin-left: 550px; margin-top: 80px;">水果列表</h2>
    <?php
    session_start();

//1.找出購物車中多少種商品和總價
    $uid = $_SESSION["uid"];
    if(empty($_SESSION["uid"])){
        header("location:loginpage.php");
        exit;
    }
    require_once "./DBDA.class.php";
    $db = new DBDA();
    //如果購物車有商品,取出值
    if(!empty($_SESSION["gwd"])){
        $arr = $_SESSION["gwd"];
        $sum = 0;
        $numbers = count($arr);
        foreach($arr as $k=>$v){
            //$v[0];//水果名稱
            //$v[1];//購買數量
            $sql = "select * from fruit where ids='{$v[0]}'";
            $attr = $db->query($sql,0);
            $dj = $attr[0][2];  //單價
            $sum = $sum+$dj*$v[1];   //總價=單價*數量
        }                                        
    }        
        echo @"<div style='margin-left: 250px'>購物車中商品總數為{$numbers}個,商品總價為:{$sum}元</div>";                    
    ?>    
            <a href="loginpage.php" style="float: right; margin-top: -25px; margin-right: 330px; color: blueviolet; font-size: 20px;">
            登錄
            </a>
        <table class="table table-bordered" style="max-width: 800px; margin-left: 250px;">
            <thead>
                <tr>
                    <th>代號</th>
                    <th>名稱</th>
                    <th>價格</th>
                    <th>產地</th>
                    <th>庫存</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody>
                <?php
                $sql = "select * from fruit";
                $arr = $db->query($sql,0);
                foreach($arr as $v){
                    echo "<tr>
                    <td>{$v[0]}</td>
                    <td>{$v[1]}</td>
                    <td>{$v[2]}</td>
                    <td>{$v[3]}</td>
                    <td>{$v[4]}</td>
                    <td><a href='shoppingchuli.php?ids={$v[0]}'>加入購物車</a></td>
                </tr>";
                }
                ?>                                
            </tbody>
        </table>
    <a href="add_list.php" style="margin-left: 250px;">查看購物車</a>
    </body>
</html>

 4.然後做主頁的處理頁面:shoppingchuli.php

<?php
session_start();
//取到傳過來的主鍵值,並且添加到購物車的SESSION裡面
$ids = $_GET["ids"];

//如果是第一次添加購物車,造一個二維數組存到SESSION裡面
//如果不是第一次添加,有兩種情況
//1.如果該商品購物車裡面不存在,造一個一維數組扔到二維裡面
//2.如果該商品在購物車存在,讓數量加1

if(empty($_SESSION["gwd"])){
    //如果是第一次添加購物車,造一個二維數組存到SESSION裡面
    $arr = array(    array($ids,1));
    $_SESSION["gwd"]=$arr;
}else{
    
    $arr=$_SESSION["gwd"];
    if(deep_in_array($ids,$arr)){
        //如果該商品在購物車存在,讓數量加1
        foreach($arr as $k=>$v){
            if($v[0]==$ids){
                $arr[$k][1]++;                
            }
        }
        $_SESSION["gwd"]=$arr;        
    }else{
        //如果該商品購物車裡面不存在,造一個一維數組扔到二維裡面
        $arr=$_SESSION["gwd"];    
        $attr=array($ids,1);
        $arr[]=$attr;
        $_SESSION["gwd"]=$arr;
    }
}
header("location:shopping_list.php");

function deep_in_array($value, $array) {   
    foreach($array as $item) {   
        if(!is_array($item)) {   
            if ($item == $value) {  
                return true;  
            } else {  
                continue;   
            }  
        }   
            
        if(in_array($value, $item)) {  
            return true;      
        } else if(deep_in_array($value, $item)) {  
            return true;      
        }  
    }   
    return false;   
}

效果如圖:

5.然後再做查看購物車頁面,能看到購物車中的商品和單價和總價:gouwuche.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="bootstrap/js/jquery-1.11.2.min.js"></script>
        <script src="bootstrap/js/bootstrap.min.js"></script>
        <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css"/>
    </head>
    <?php
    session_start();
    $uid = $_SESSION["uid"];
    if(empty($_SESSION["uid"])){
        header("location:loginpage.php");
        exit;
    }    
    ?>
    <body>
        <h2 style="margin-left: 550px; margin-top: 100px;">購物車清單</h2>        
        <table class="table table-bordered" style="max-width: 800px; margin-left: 250px;">
            <thead>
                <tr>
                    <th>代號</th>
                    <th>名稱</th>
                    <th>價格</th>
                    <th>產地</th>
                    <th>購買數量</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody>
                <?php            
                require_once "./DBDA.class.php";
                $db = new DBDA();
                
                if(!empty($_SESSION["gwd"])){
                    $arr = $_SESSION["gwd"];
                    $sum = 0;    
                    $numbers = count($arr);                    
                    foreach($arr as $k=>$v){
                    //$v[0];$v[1];
                    $sql = "select * from fruit where ids='{$v[0]}'";
                    $a = $db->query($sql,0);
                    //var_dump($v[1]);
                    echo "<tr>
                    <td>{$v[0]}</td>
                    <td>{$a[0][1]}</td>
                    <td>{$a[0][2]}</td>
                    <td>{$a[0][3]}</td>
                    <td>{$v[1]}</td>
                    <td><a href='goodsdel.php?zj={$k}'>刪除</a></td>                            
                </tr>";
                    $dj = $a[0][2];
                    $sum = $sum+$dj*$v[1];    
                }
            }
                //echo "<div style='margin-left: 250px;'>購物車中商品總數為{$numbers}個,商品總價為:{$sum}元</div>";                                
                ?>                                
            </tbody>                                                
        </table>
        <a href="submit_order.php?ids={$v[0]}" style="margin-left: 250px;">提交訂單</a>                
    </body>
</html>
效果如圖:

6.再做刪除的處理頁面goodsdel.php

<?php
session_start();
$zj = $_GET["zj"];
//如果該水果數量大於1,減1
//如果該水果數量等於1 移除
$arr = $_SESSION["gwd"];
if($arr[$zj][1]>1){
    $arr[$zj][1]=$arr[$zj][1]-1;
}else{
    unset($arr[$zj]);    //清除數組
    $arr=array_values($arr);    //重新索引數組
}
$_SESSION["gwd"] = $arr;
header("location:add_list.php");

7..然後做提交頁面 :tijiao.php

<?php
session_start();
$ids = $_GET["ids"];
//查看餘額
$uid = $_SESSION["uid"];
require_once "./DBDA.class.php";
$db = new DBDA();
$sql = "select account from login where username='{$uid}'";
$arr = $db->query($sql,0);
$aye = $arr[0][0];//餘額
//var_dump($aye);
if(!empty($_SESSION["gwd"])){
    $arr = $_SESSION["gwd"];
    $sum = 0;
    //$numbers = count($arr);
    foreach($arr as $v){
        $sql = "select * from fruit where ids='{$v[0]}'";
        $price = $db->query($sql,0);
        $dj = $price[0][2];
        $sum = $sum+$dj*$v[1];
    }    
}else{
    echo "您還未購買商品!";
    //header("shopping_list.php");
    exit;
}
//判斷餘額是否滿足購買
if($aye>=$sum){
    //判斷庫存
    foreach($arr as $v){
        $skc = "select name,numbers from fruit where ids='{$v[0]}'";
        $akc = $db->query($sql,0);
        var_dump($akc);
        $kc = $akc[0][4];//庫存
        //var_dump($kc);
        
        if($kc<$v[1]){
            echo "庫存不足!";
            exit;
        }
    }
    //提交訂單
    //賬戶扣除餘額
    $skye = "update login set account=account-{$sum} where username='{$uid}'";
    $zhye = $db->query($skye);
    
    //扣除庫存
    foreach($arr as $v){
    $skckc = "update fruit set numbers=numbers-{$v[1]} where ids='{$v[0]}'";
    $sykc = $db->query($skckc);
    }
    //添加訂單
    $ddh = date("Y-m-d H:i:s");
    $time = time();
    $stjd = "insert into orders values('{$time}','{$uid}','{$ddh}')";
    $wcdh = $db->query($stjd);
    //添加訂單詳情
    foreach($arr as $v){
        $ddxq = "insert into orderdetails values('','{$ddh}','{$v[0]}','{$v[1]}')";
        $axq = $db->query($ddxq);
    }    
}else{
    echo "餘額不足,請充值!";
    exit;
}
header("location:shopping_list.php");

用戶賬戶餘額已經減少:

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、hibernate5 配置JAR包如下: antlr-2.7.7 c3p0-0.9.5.2 classmate-1.3.0 dom4j-1.6.1 hibernate-c3p0-5.2.10.Final hibernate-commons-annotations-5.0.1.Final hibe ...
  • 不知道朋友在哪裡看到的問題,qq來問我,題目是:在不修改主方法的前提下使用一個方法交換兩個int的值,方法如下: swap可以隨意修改,但是主方法不能動。 看題目想也沒想直接寫了一個方法,寫完運行結果還是沒變,代碼如下: 1 public static void swap(int a,int b){ ...
  • 學習一門開發語言首先當然是要熟悉它的語法了,Python的語法還算是比較簡單的,這裡從基礎的開始瞭解一下。 標識符1.第一個字元必須是字母表中字母或下劃線’_’。2.標識符的其他的部分有字母、數字和下劃線組成。3.標識符對大小寫敏感。 保留字保留字就是關鍵字,不能用它們做任何標識符。Python里通 ...
  • Python開發環境配置好了,但發現自帶的代碼編輯器貌似用著有點不大習慣啊,所以咱們就找一個“好用的”代碼編輯器吧,網上搜了一下資料,Python常用的編輯器有如下一些: 1. Sublime Text2. Vim3. PyScripter4. PyCharm5. Eclipse with PyDe ...
  • 這次的學習以一個簡單的Student Demo為示例。 1、代碼: 主程式類DemoApplication.java。 1 package com.julion.demo; 2 3 import org.springframework.boot.SpringApplication; 4 import ...
  • NumPy : Numerical Python,是高性能科學計算和數據分析的基礎包。 部分功能: 大部分數據分析應用關註的功能: ...
  • 描述寫一個程式,找出給出素數範圍內的所有孿生素數的組數。一般來說,孿生素數就是指兩個素數距離為2,近的不能再近的相鄰素數。有些童鞋一看到題就開始寫程式,不仔細看題,咱們為了遏制一下讀題不認真仔細的童鞋,規定,兩個素數相鄰為1的也成為孿生素數。輸入第一行給出N(0 using namespace st... ...
  • 選擇排序是一種非常簡單的排序演算法,從字面意思我們就可以知道,選擇就是從未排序好的序列中選擇出最小(最大)的元素,然後與第 i 趟排序的第 i-1(數組中下標從 0 開始) 個位置的元素進行交換,第 i 個元素之前的序列就是已經排序好的序列。整個排序過程只需要遍歷 n-1 趟便可排好,最後一個元素自動 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...