Php 当相同的项目添加到购物车时,如何在会话中更新产品数量?

Php 当相同的项目添加到购物车时,如何在会话中更新产品数量?,php,session,cart,shopping-cart,Php,Session,Cart,Shopping Cart,我正在使用会话创建购物车,但我不知道在购物车会话中添加相同项目时如何更新产品数量 WhatsApp\u add\u购物车功能,我在其中创建会话 从隐藏字段获取数据 WhatsApp_Cart_页面,其中显示每个循环使用的所有会话值 公共功能WhatsApp\u购物车按钮(){ $whatsapp_name=''; $whatsapp_价格=“”; $whatsapp_数量=''; $总价=''; $Whatsapp_id=''; 如果(isset($\u POST['WhatsApp\u Car

我正在使用会话创建购物车,但我不知道在购物车会话中添加相同项目时如何更新产品数量

  • WhatsApp\u add\u购物车功能,我在其中创建会话
  • 从隐藏字段获取数据
  • WhatsApp_Cart_页面,其中显示每个循环使用的所有会话值
  • 公共功能WhatsApp\u购物车按钮(){
    $whatsapp_name='';
    $whatsapp_价格=“”;
    $whatsapp_数量='';
    $总价='';
    $Whatsapp_id='';
    如果(isset($\u POST['WhatsApp\u Cart\u btn'])){
    如果(设置($POST['whatsapp\u cart\u nonce\u field'])和&wp\u验证(清理文本\u field(wp\u unslash($POST['whatsapp\u cart\u nonce\u field'),'whatsapp\u cart\u field')){
    回声';
    }
    如果(isset($\u POST['product\u name'])){
    $whatsapp\u names=sanitize\u text\u字段(wp\u unslash($\u POST['product\u name']);
    }
    如果(isset($_POST['product_price'])){
    $whatsapp_price=sanitize_text_字段(wp_unslash($_POST['product_price'));
    }
    如果(isset($_POST['quantity'])){
    $whatsapp_数量=清理文本_字段(wp_反斜杠($_POST['quantity']);
    }
    如果(isset($_POST['product_id'])){
    $Whatsapp\u id=sanitize\u text\u字段(wp\u unslash($\u POST['product\u id']);
    }
    $product\U info=数组($Whatsapp\U id、$Whatsapp\U名称、$Whatsapp\U价格、$Whatsapp\U数量);
    $\会话['WhatsApp\u购物车][]=$product\u信息;
    }
    }
    公共函数Whatsapp_cart_函数(){
    全球$产品;
    如果($product->is_类型('simple')){
    $product_id=$product->get_id();
    $product_name=$product->get_title();
    //$p_Desp=$product->get_description();。
    $final_price=$product->get_price();
    $button\u cart=get\u选项(清理文本字段('WhattsApp\u BtnTxt\u cart');
    ?>
    
    您可以使用产品id作为会话数组中的密钥,以便轻松地在购物车中找到产品。使用密钥,您可以检查产品是否已在购物车中。但是,您可以更好地将购物车存储在数据库中,并在cookie中为用户提供一个uniuqe和随机生成的购物车id。这样,您就可以更好地了解人们添加到购物车中的内容只要存在cookie,就可以保存购物车和用户购物车谢谢你的建议。但是我解决了它与产品id匹配的问题。请参阅答案我希望在有人检查时,你可以使用数据库中的数据重新计算总价。你可以在发布的会话中保存价格,以便访问者可以轻松地操纵该值。
    public function WhatsApp_Cart_button() {
            $whatsapp_names    = '';
            $whatsapp_price    = '';
            $whatsapp_quantity = '';
            $total_price       = '';
            $Whatsapp_id='';
            if ( isset( $_POST['WhatsApp_Cart_btn'] ) ) {
    
                if ( isset( $_POST['whatsapp_cart_nonce_field'] ) && wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['whatsapp_cart_nonce_field'] ) ), 'whatsapp_cart_field' ) ) {
    
                    echo '';
                }
    
                if ( isset( $_POST['product_name'] ) ) {
    
                        $whatsapp_names = sanitize_text_field( wp_unslash( $_POST ['product_name'] ) );
                }
                if ( isset( $_POST ['product_price'] ) ) {
    
                        $whatsapp_price = sanitize_text_field( wp_unslash( $_POST ['product_price'] ) );
                }
    
                if ( isset( $_POST ['quantity'] ) ) {
                    $whatsapp_quantity = sanitize_text_field( wp_unslash( $_POST ['quantity'] ) );
                }
                    if ( isset( $_POST ['product_id'] ) ) {
                    $Whatsapp_id = sanitize_text_field( wp_unslash( $_POST ['product_id'] ) );
                }
                $product_info = array( $Whatsapp_id,$whatsapp_names, $whatsapp_price, $whatsapp_quantity);
    
                $_SESSION['WhatsApp_cart'][] = $product_info;
    
            }
        }
    
        public function Whatsapp_cart_function() {
    
            global $product;
            if( $product->is_type( 'simple' ) ){
            $product_id   = $product->get_id();
            $product_name = $product->get_title();
    
                    // $p_Desp =$product->get_description();.
            $final_price = $product->get_price();
            $button_cart = get_option( sanitize_text_field( 'WhattsApp_BtnTxt_cart' ) );
            ?>
    <form method="post" action="" enctype="multipart/form-data">
    <input type="hidden" name="product_id" value="<?php echo esc_html( $product_id ); ?>">
    <input type="hidden" name="product_name" value="<?php echo esc_html( $product_name ); ?>">
    <input type="hidden" name="product_price" value="<?php echo esc_html( $final_price ); ?>">
    <?PHP
    
      if ( ! empty( $_SESSION['WhatsApp_cart'] ) ) {
                foreach ( $_SESSION['WhatsApp_cart'] as $key => $values ) {
       p_id=$values[0];
        if ( isset( $_GET['product_id'] ) ) {
      if($p_id==$_GET['product_id']){
    
      $_SESSION["WhatsApp_cart"][$key][$values[3]] + $_POST["quantity"];
        ?>                                                              
    <input type="hidden" name="quantity" value="1" min="1" max="10" step="1" />
    
    <?PHP
          } 
         ?>
    
            <?PHP
            } 
      ?>
      <?php
      } 
      ?>
    
         <input type="submit" name="WhatsApp_Cart_btn" style="background:#25d366; color: white;" value=" 
               <? 
           PHP 
              echo esc_html( $button_cart ); ?>" id="demo" onclick="Add_items();" />
    
            <?php wp_nonce_field( 'whatsapp_cart_field', 'whatsapp_cart_nonce_field' ); ?>
              </form>
    
                public function WhatsApp_cart_page() {
    
                if ( isset( $_GET['index_to_remove'] ) ) {
                    unset( $_SESSION['WhatsApp_cart'][$_GET['index_to_remove']]);
                    wc_add_notice('Item removed from cart successfully' , 'success');
                }
            ?>
    <table class="" cellspacing="0">
        <thead>
            <tr>
                <th class="product_id"><?php esc_html_e( 'Remove product', 'Woo-WhatsApp' ); ?></th>
                <th class="product-name"><?php esc_html_e( 'Product', 'Woo-WhatsApp' ); ?></th>
                <th class="product-price"><?php esc_html_e( 'Price', 'Woo-WhatsApp' ); ?></th>
                <th class="product-quantity"><?php esc_html_e( 'Quantity', 'Woo-WhatsApp' ); ?></th>
                <th class="Total-price"><?php esc_html_e( 'Total', 'Woo-WhatsApp' ); ?></th>
            </tr>
        </thead>
        <?php
            global $wp;
            if ( ! empty( $_SESSION['WhatsApp_cart'] ) ) {
                foreach ( $_SESSION['WhatsApp_cart'] as $key => $values ) {
                    print_r( $_SESSION['WhatsApp_cart']);
                        $current_url    = home_url( $wp->request ); 
                        $remove_url     = $current_url . '?index_to_remove=' . $key;
                    ?>
                    <tr>
                        <th ><form action="" method="post"><a href="<?php echo esc_url($remove_url); ?> " name="index_to_remove" >X</a></form>
                        </th>
                        <?php echo '<th>' . esc_html( $values[1] ) . '</th>'; ?>
                        <?php echo '<th>' . esc_html( $values[2] ) . '</th>'; ?>
                        <th><input type="number" name="quantity" value="<?php echo $values[3]?>" min="0" max="10" step="1"> </th>
                    </tr>
                    
        <?php }
        ?>
                    </table>
    
     <?php } ?>
    
    $flag = false;
                if ( ! empty( $_SESSION['WhatsApp_cart'] ) ) {
                    foreach ( $_SESSION['WhatsApp_cart'] as $key => $values ) {
                        $p_id     = $values[0];
                        $quantity = $values[3];
                        if ( $p_id == $whatsapp_id ) {
                            $flag                               = true;
                            $whatsapp_upquantity                = $whatsapp_quantity + $quantity;
                            $total_uprice                       = $whatsapp_upquantity * $whatsapp_price;
                            $product_info                       = array( $whatsapp_id, $whatsapp_names, $whatsapp_price, $whatsapp_upquantity, $total_uprice, $whatsapp_desp );
                             $_SESSION['WhatsApp_cart'][ $key ] = $product_info;
                        }