>백엔드 개발 >PHP 문제 >PHP 장바구니 기능을 구현하는 방법

PHP 장바구니 기능을 구현하는 방법

藏色散人
藏色散人원래의
2020-09-01 10:00:474220검색

PHP 장바구니 기능 구현 방법: 먼저 웹사이트에 로그인하여 제품을 검색한 다음 지정된 제품을 구매한 다음 장바구니 페이지에 들어가 제품 수를 변경하고, 제품을 삭제하고, 쇼핑을 취소할 수 있습니다. 장바구니, 계속 쇼핑 등 마지막으로 주문 생성, 주문 제출 및 기타 작업을 수행할 수 있습니다.

PHP 장바구니 기능을 구현하는 방법

추천: "PHP 비디오 튜토리얼"

PHP에서 구현된 장바구니 코드와 아이디어를 소개합니다. 기능은 완전하며 특정 참조 값을 갖습니다.

여기에서는 쇼핑 제품 추가부터 구매까지 간단한 PHP 장바구니 코드를 제공합니다. 이 기능은 쇼핑몰 개발에 없어서는 안될 기능입니다.

구체적인 분석은 다음과 같습니다.

1. 장바구니에 담긴 상품에 대한 작업은 일반적으로 다음과 같습니다.

상품 추가, 상품 삭제, 주문 제출

2. 방법은 다음과 같습니다.

배열에 세션을 저장하고 배열의 각 레코드 세트는 제품에 대한 정보(번호, 가격 등)입니다. 장바구니를 해결하는 방법은 세션을 사용하여 2차원 배열을 기록하는 것입니다

.

1차원은 각 제품을 나타내며, 2차원에는 제품 ID, 제품 수량 등이 포함됩니다. 어쨌든 2차원적으로 원하는 만큼 제품 속성을 추가할 수 있습니다.

4. 장바구니 운영 과정:

먼저 웹사이트에 로그인하여 제품을 검색한 다음, 지정된 제품을 구매하고 제품 수량을 변경할 수 있는 장바구니 페이지로 들어갑니다. , 제품 삭제, 장바구니 지우기, 쇼핑 계속 등 마지막으로 주문 생성, 주문 제출 및 기타 작업.

자세한 내용은 강력한 댓글을 참조하세요.

로그인을 먼저 하세요.

<body>
<h1>登入页面</h1>
<form action="dengrucl.php" method="post">
    <p>帐号:<input type="text" name="zhang"/></p>
    <p>密码:<input type="text" name="mi"/></p>
    <input type="submit" value="登入"/>
</form>

</body>复制代码

로그인 처리: PHP 장바구니 기능을 구현하는 방법

<?php
session_start();
include ("db.class.php");$db = new db();$zhang = $_POST["zhang"];$mi = $_POST["mi"];$sql = "select mi from yonghu WHERE zhang = &#39;{$zhang}&#39;";$arr = $db->Query($sql);if(!empty($zhang)&&!empty($mi)&&$mi = $arr){    $_SESSION["zhang"] = $zhang;
    header("location:zym.php");
}else{    echo "登入失败";
}

?>复制代码

아주 간단한 로그인입니다.

로그인 후 바로 메인 페이지:

<body>
<h1>长腿璇购物商城</h1>
<table border="1" cellpadding="0" cellspacing="0" width="100%" >
    <tr>
        <td>代号</td>
        <td>水果名称</td>
        <td>水果价格</td>
        <td>水果产地</td>
        <td>水果库存</td>
        <td>操作</td>
    </tr>复制代码
 <?php
    session_start();$_SESSION["zhang"] = "xiaoming";//不做登入的情况下,直接存sessiion
    include ("db.class.php");    $db = new db();    $sql = "select * from sgbiao";    $arr = $db->Query($sql);
    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=&#39;zymcl.php?ids={$v[0]}&#39;>加入购物车</a>
</td>
    </tr>";
    }

    ?>
    <?php
    //这里显示的是 购物车有多少产品,和产品的总价格    $ann=array();    if(!empty($_SESSION["gwc"]))
    {        $ann=$_SESSION["gwc"];

    }    $zhonglei = count($ann);    $aa=0;
    foreach($ann as $k)
    {        $k[0];//水果代号        $k[1];//水果数量        $sql1="select jiage from sgbiao where ids=&#39;{$k[0]}&#39;";        $danjia=$db->Query($sql1);

        foreach($danjia as $n)
        {            $aa=$aa + $n[0]*$k[1];
        }


    }    echo"数量:{$zhonglei}<br/>
价格:<mark>{$aa}元";
    ?>
复制代码
复制代码
</table>

<a href="tijiao.php">查看账户</a>
<a href="ckgwc.php">查看购物车</a>

</body>复制代码

사진:

장바구니에 추가를 클릭하면: PHP 장바구니 기능을 구현하는 방법

위의 수량과 가격이 변경되어 장바구니에 추가되었음을 나타냅니다. PHP 장바구니 기능을 구현하는 방법

방법을 살펴보겠습니다. 처리됩니다(강력한 주석):

<?php
session_start();
//$ids = $_GET["ids"];if(empty($_SESSION["gwc"]))
{
    //如果点击的购物车是空的(第一次添加)

    //如果购物车里是空的,造二维数组,    $arr = array(
        array($ids,1)
        //一维数组,取ids,第一次点击增加一个
    );    $_SESSION["gwc"]=$arr;
    //扔到session里面
}else
    //这里不是第一次点击
{
    //先判断购物车里是否已经有了该商品,用$ids
    $arr = $_SESSION["gwc"];
    //把购物车的状态取出来    $chuxian = false;
//定义一个变量;用来表示是否出现,默认是未出现
    foreach ($arr as $v) {
        //便利他
        //如果这里面有这件商品        if ($v[0] == $ids) //如果取过来的$v[0](商品的代号)等于$ids那么就证明购物车中已经有了这一件商品
        {            $chuxian = true;
            //如果出现,直接把chuxian改成true

        }
    }    if($chuxian)
    {
        //购物车中有此商品        for($i=0;$i<count($arr);$i++)
        {            if($arr[$i][0] == $ids)
            {
                //把点到的商品编号加1                $arr[$i][1] += 1;
            }
        }        $_SESSION["gwc"] = $arr;

    }        else
            {
                //这里就只剩下:购物车里有东西,但是并没有这件商品                $asg = array($ids,1);
                //设一个小数组                $arr[] = $asg;                $_SESSION["gwc"]=$arr;
            }

}
header("location:zym.php")


?>复制代码
다음으로 장바구니 페이지를 만듭니다.
<body>
<h1>查看购物车</h1>
<table width="100%" border="1"cellspacing="0" cellpadding="0">
    <tr>
        <td>商品名称</td>
        <td>商品单价</td>
        <td>商品数量</td>
        <td>操作</td>
    </tr>复制代码
 <?php
    session_start();    if(!empty($_SESSION["gwc"]))
    {        $arr = array();        $arr = $_SESSION["gwc"];
        //造数组
    }
    include (&#39;db.class.php&#39;);    $db = new db();
    foreach ($arr as $v)
    {
        global $db;        $sql = "select * from sgbiao WHERE ids = &#39;{$v[0]}&#39;";        $att = $db->query($sql);
        foreach ($att as $a)
        {            echo "<tr>
        <td>{$a[1]}</td>
        <td>{$a[2]}</td>
        <td>{$v[1]}</td>
        <td><a href=&#39;shanchu.php?ids={$a[0]}&#39;>删除</a> </td>
    </tr> ";
//            蔬果的名称
//            单价
//            取int数量
//        这个地方也可以加索引shanchu.php?sy={$v}
        }
    }
    ?>
</table>

<a href="tijiao.php">提交订单</a>
</body>复制代码

위 그림:

큰 사과의 개수가 4개임을 알 수 있습니다. 삭제를 클릭하면 조건이 큰 사과 사과가 있고 숫자가 1보다 크다면 삭제를 클릭하여 숫자를 하나씩 줄이세요. PHP 장바구니 기능을 구현하는 방법

백포도의 개수는 1이고 삭제를 클릭하면 숫자가 다음보다 크지 않다는 조건이 있습니다. 하나, 배열에서 제거되도록

와서 삭제 페이지를 확인하세요. 바:

<?php
session_start();$ids = $_GET["ids"];$arr = $_SESSION["gwc"];
//var_dump($arr);
//取索引2(数量)
foreach ($arr as $key=>$v)
{    if($v[0]==$ids)
    {        if($v[1]>1){
            //要删除的数据           $arr[$key][1]-=1;
        }        else{
            //数量为1的情况下,移除该数组            unset($arr[$key]);
        }
    }

}$_SESSION["gwc"] = $arr;
//记得扔到session里面
header("location:ckgwc.php");
//删除完跳转回去复制代码

높은 에너지! !

주문 제출 페이지에는 처리 페이지가 하나만 있습니다. 필요한 경우 링크를 직접 입력할 수 있습니다.

<?php
session_start();
include ("db.class.php");$db = new db();

//判断用余额是否满足$zhang = $_SESSION["zhang"];
//获取到用户名$sye = "select zhanghu from yonghu WHERE zhang = &#39;{$zhang}&#39;";$ye = $db->query($sye);$ye[0][0];//这是余额$ann=array();if(!empty($_SESSION["gwc"]))
{    $ann=$_SESSION["gwc"];

}$zhonglei = count($ann);$aa=0;//总价格
foreach($ann as $k)
{    $k[0];//水果代号    $k[1];//水果数量    $sql1="select jiage from sgbiao where ids=&#39;{$k[0]}&#39;";    $danjia=$db->Query($sql1);

    foreach($danjia as $n)
    {        $aa=$aa + $n[0]*$k[1];
    }


}
//判断余额是否满足if($ye[0][0]>=$aa)
{
    //钱够,判断库存

    foreach($ann as $v)
    {        $skc = "select sgname,kucun from sgbiao WHERE ids=&#39;{$v[0]}&#39;";
        //水果代号$v[0]        $akc = $db->query($skc);        $akc[0][1];//库存
        //比较是否满足库存        if($akc[0][1]<$v[1])
        {            echo "{$akc[0][0]}库存不足";
            //退出            exit;
        }

    }
//提交订单:
//i.    从用户账户中扣除本次购买的总价格
//ii.    从商品库存中扣除本次每种商品的购买数量
//iii.    向订单表和订单内容表中加入本次购买的商品信息
    //扣除账户余额$skcye = "update yonghu set zhanghu = zhanghu-{$aa} WHERE zhang = &#39;{$zhang}&#39;";    $db->query($skcye,0);
    //扣除库存
    foreach($ann as $v)
    {        $skckc = "update sgbiao set kucun = kucun-{$v[1]} WHERE ids=&#39;{$v[0]}&#39;";
        //水果代号$v[0]        $db->query($skckc,0);
    }
    //添加订单信息
    //取当前时间    $time = time();
    //自动生成订单号    $ddh = date("YmdHis");    $sdd = "insert into dingdan VALUES (&#39;{$ddh}&#39;,&#39;$zhang&#39;,&#39;$time&#39;)";    $db->query($sdd,0);
    //添加订单内容
    foreach ($ann as $v)
    {        $sddxq = "insert into ddneirong VALUES (&#39;&#39;,&#39;$ddh&#39;,&#39;{$v[0]}&#39;,&#39;{$v[1]}&#39;)";        $db->query($sddxq,0);
    }


}else{    echo "钱不够";    exit;
}复制代码

이렇게 하면 장바구니의 대부분의 기능이 구현되었습니다. 주문 제출 클릭 후 살펴보겠습니다. 효과:

1. 과일 재고 감소:

2. 주문 추가:

PHP 장바구니 기능을 구현하는 방법

3. 구매자 계정 잔액 공제:

PHP 장바구니 기능을 구현하는 방법

위 내용은 PHP 장바구니 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.