Обновите количество с помощью ajax только первое количество работает - PullRequest
0 голосов
/ 30 ноября 2018

Единственное первое количество обновляется, когда я нажимаю на вторую кнопку обновления, оно также дает тот же update_id, что и первая кнопка обновления, но при проверке у него другой идентификатор.Я немного знаю об Ajax, пожалуйста, предложите простой способ сделать это.

cart-pic

cart.php

thisесли это корзина, я отправляю запрос на actions.php, он приносит данные из actions.php, данные поступают, но работает только первое количество, корзина обновляется, база данных обновляется, но только первое, которое не выбрано, показывает вторую кнопку обновленияТот же идентификатор обновления, что и у первой кнопки. Думаю, в этом есть небольшая проблема.

  <!-- Shoping Cart -->
        <div id="products">

        <div class="m-l-25 m-r--38 m-lr-0-xl" id="cart_msg">
        <!--Cart Message--> 
        </div>

        </div>

<script type="text/javascript">

        $(document).ready(function(){
$('.overlay').show();
    $.ajax({
        url : "actions.php",
        method : "POST",
        data : {checkOutDetails:1},
        success : function(data){
            $('.overlay').hide();
            $("#products").html(data);

        }
    })

    // =================================================

    $("body").delegate(".update","click",function(event){
        var update = $(this).parent().parent().parent();
        var update_id = update.find(".update").attr("update_id");
        var qty = update.find(".qty").val();
        $.ajax({
            url :   "actions.php",
            method  :   "POST",
            data    :   {updateCartItem:1,update_id:update_id,qty:qty},

            success :   function(data){
                $("#cart_msg").html(data);


        }
    })
    })


    })

</script>

actions.php

<?php
    include 'include/db.php';
    include 'cssFiles.php';

    function getRealIpAddr()

    {
        if ( !empty( $_SERVER['HTTP_CLIENT_IP'] ) )
        {
            $ip = $_SERVER['HTTP_CLIENT_IP'];
        }
        elseif( !empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) )
        //to check ip passed from proxy
        {
            $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
        }
        else
        {
            $ip = $_SERVER['REMOTE_ADDR'];
        }
        return $ip;
    }

    if (isset($_POST["checkOutDetails"])) {

        echo'<form class="bg0 p-t-75 p-b-85" >
        <div class="container">
        <div class="row">
        <div class="col-lg-10 col-xl-7 m-lr-auto m-b-50">
        <div class="m-l-25 m-r--38 m-lr-0-xl">

        <div class="wrap-table-shopping-cart">

        <table class="table-shopping-cart" >
        <tr class="table_head">
                <th class="column-1">Product</th>
                <th class="column-2"></th>
                <th class="column-3">Price</th>
                <th class="column-4">Quantity</th>
                <th class="column-5">Total</th>
                <th colspan="2"  style="text-align: center;" class="column-6">Action</th>

                </tr>
                ';

        $ip_add= getRealIpAddr();

        $total=0;

        $ip_add_query="select * from cart where ip_add='$ip_add'";
        $result=mysqli_query(
            $conn,$ip_add_query);
        $temp="";

        while ($ip_rows=mysqli_fetch_array($result)) {

            $pro_id=$ip_rows['id'];
            $qty=$ip_rows['qty'];
            $get_id_query="select * from product where id='$pro_id'";
            $run_query=mysqli_query(
                $conn,$get_id_query);

            while ($p_info=mysqli_fetch_array($run_query)) {

                $pro_price=array($p_info['price']);
                $p_info['name'];
                $p_info['img1'];
                $p_info['price'];
                $p_id=$p_info['id'];

                $sum_price=array_sum($pro_price);

                $total +=$sum_price;


                echo'

                <tr class="table_row">
                <td class="column-1">
                <input type="hidden" name="product_id[]" value="'.$p_id.'"/>
                <input type="hidden" name="" value="'.$pro_id.'"/>
                <div class="how-itemcart1">
                <img src="admin/img/'. $p_info['img1'].'" alt="IMG">
                </div>
                </td>
                <td class="column-2">'. $p_info['name'].'</td>
                <td class="column-3">"$"'.$p_info['price'].'</td>
                <td class="column-4">
                <div class="wrap-num-product flex-w m-l-auto m-r-0">
                <div class="btn-num-product-down cl8 hov-btn3 trans-04 flex-c-m">
                <i class="fs-16 zmdi zmdi-minus"></i>
                </div>

                <input class="mtext-104 cl3 txt-center num-product qty" type="number"  value="'.$qty.'">

                <div class="btn-num-product-up cl8 hov-btn3 trans-04 flex-c-m">
                <i class="fs-16 zmdi zmdi-plus"></i>
                </div>
                </div>
                </td>
                <td class="column-5">$ 36.00</td>
                <td class="column-6">
                <a href="#" update_id="'.$pro_id.'" class="btn btn-primary btn-sm update">Update</a>

                </td>

                </tr>';     
            }}

            echo'</table>
            </div>

            <div class="flex-w flex-sb-m bor15 p-t-18 p-b-15 p-lr-40 p-lr-15-sm">
            <div class="flex-w flex-m m-r-20 m-tb-5">
            <input class="stext-104 cl2 plh4 size-117 bor13 p-lr-20 m-r-10 m-tb-5" type="text" name="coupon" placeholder="Coupon Code">

            <div class="flex-c-m stext-101 cl2 size-118 bg8 bor13 hov-btn3 p-lr-15 trans-04 pointer m-tb-5">
            Apply coupon
            </div>
            </div>

            <!-- <button class="flex-c-m stext-101 cl2 size-119 bg8 bor13 hov-btn3 p-lr-15 trans-04 pointer m-tb-10" type="submit" name="submit">
            Update Cart
            </button> -->
            </div>
            </div>
            </div>

            <div class="col-sm-10 col-lg-7 col-xl-5 m-lr-auto m-b-50">
            <div class="bor10 p-lr-40 p-t-30 p-b-40 m-l-63 m-r-40 m-lr-0-xl p-lr-15-sm">
            <h4 class="mtext-109 cl2 p-b-30">
            Cart Totals
            </h4>

            <div class="flex-w flex-t bor12 p-b-13">
            <div class="size-208">
            <span class="stext-110 cl2">
            Subtotal: 
            </span>
            </div>

            <div class="size-209">
            <span class="mtext-110 cl2">
            $79.65
            </span>
            </div>
            </div>

            <div class="flex-w flex-t bor12 p-t-15 p-b-30">
            <div class="size-208 w-full-ssm">
            <span class="stext-110 cl2">
            Shipping:
            </span>
            </div>

            <div class="size-209 p-r-18 p-r-0-sm w-full-ssm">
            <p class="stext-111 cl6 p-t-2">
            There are no shipping methods available. Please double check your address, or contact us if you need any help.
            </p>

            <div class="p-t-15">
            <span class="stext-112 cl8">
            Calculate Shipping
            </span>

            <div class="rs1-select2 rs2-select2 bor8 bg0 m-b-12 m-t-9">
            <select class="js-select2" name="time">
            <option>Select a country...</option>
            <option>USA</option>
            <option>UK</option>
            </select>
            <div class="dropDownSelect2"></div>
            </div>

            <div class="bor8 bg0 m-b-12">
            <input class="stext-111 cl8 plh3 size-111 p-lr-15" type="text" name="state" placeholder="State /  country">
            </div>

            <div class="bor8 bg0 m-b-22">
            <input class="stext-111 cl8 plh3 size-111 p-lr-15" type="text" name="postcode" placeholder="Postcode / Zip">
            </div>

            <div class="flex-w">
            <div class="flex-c-m stext-101 cl2 size-115 bg8 bor13 hov-btn3 p-lr-15 trans-04 pointer">
            Update Totals
            </div>
            </div>

            </div>
            </div>
            </div>

            <div class="flex-w flex-t p-t-27 p-b-33">
            <div class="size-208">
            <span class="mtext-101 cl2">
            Total: 
            </span>
            </div>

            <div class="size-209 p-t-1">
            <span class="mtext-110 cl2">
                "$".'.$total.'
        </span>
    </div>
    </div>

    <button class="flex-c-m stext-101 cl0 size-116 bg3 bor14 hov-btn3 p-lr-15 trans-04 pointer">
        Proceed to Checkout
    </button>
    </div>
    </div>
    </div>
    </div>
    </form>';


    }


    if (isset($_POST["updateCartItem"])) {

    $ip_add= getRealIpAddr();
    $update_id = $_POST["update_id"];
    $qty = $_POST["qty"];

    $sql = "UPDATE cart SET qty='$qty' WHERE id='$update_id' AND ip_add = '$ip_add'";

    if(mysqli_query($conn,$sql)){
    echo "<div class='alert alert-info'>
        <a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>
        <b>Product is updated</b>
    </div>";
    exit();
    }
    }

    ?>

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

cart.php

    <input class="mtext-104 cl3 txt-center num-product qty" type="number" id="qty'.$pro_id.'"  value="'.$qty.'">

    <a href="#" onclick="test('.$pro_id.')" class="btn btn-primary btn-sm update">Update</a>

<script type="text/javascript">

    function test(data){
         var temp="#qty"+data;
        var Qty=$(temp).val();

        $.ajax({
            url :   "actions.php",
            method  :   "POST",
            data    :   {update:1,qty:Qty,update_id:data},

            success :   function(data){


            }
        })

    }

</script>

actions.php

if (isset($_POST["update"])) {  
$ip_add= getRealIpAddr();
$update_id = $_POST["update_id"];
$qty = $_POST["qty"];

$sql = "UPDATE cart SET qty='$qty' WHERE id='$update_id' AND ip_add = '$ip_add'";

if(mysqli_query($conn,$sql)){
echo "<div class='alert alert-info'>
    <a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>
    <b>Product is updated</b>
</div>";
}
}
0 голосов
/ 30 ноября 2018

var update = $ (this) .parent (). Parent (). Parent ();

Похоже, вы поднимаетесь здесь на один уровень выше?Родителем ссылки обновления является td, родительским элементом которого является tr, родительским элементом которого является полный table.

Так что update.find(".update").attr(...) будет работать только на первом элементе .updateон находит во всей таблице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...