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购物车按钮(){
$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;
}