使用Ajax更新页面上的项目到数据库

时间:2014-12-19 05:17:46

标签: javascript php jquery mysql ajax

好的,所以我想说,如果之前有人问过,我很抱歉。我似乎无法在问题部分找到它,而且我花了几个小时寻找我需要的东西。

所以开始吧。我从数据库中的表中提取数据行 - >产品。然后将它们添加到购物车。我知道如何在PHP中执行此操作,但我是JavaScript和Ajax的新手。我确实有我的代码工作,我可以提交一个表单添加到数据库,但它不适用于第一个之后的任何表单。

我也会包含我的所有代码,但我需要帮助找出如何将每个项目添加到购物车中。从逻辑上讲,这对我来说似乎很简单,但我无法弄清楚这样做的正确方法并感谢任何帮助!

以下是显示数据库产品的页面的代码。

//*script*//
    <script type="text/javascript">
            $(document).ready(function() {


                $("#FormSubmitAddToCart").click(function (e) {
                        e.preventDefault();
                        if($("#qtyArea").val()==='0')
                        {
                            alert("Please enter a quantity!");
                            return false;
                        }

                        $("#FormSubmitAddToCart").hide(); //hide submit button
                        $("#LoadingImage").show(); //show loading image

                        var id = 'id='+ $("#idArea").val();
                        var qty = 'qty='+ $("#qtyArea").val(); 
                        var myData = id+'&'+qty;
                        //alert(myData);
                        jQuery.ajax({
                        type: "POST", // HTTP method POST or GET
                        url: "response.php", //Where to make Ajax calls
                        dataType:"text", // Data type, HTML, json etc.
                        data:myData, //Form variables
                        success:function(response){
                            $("#responds").append(response);
                            $("#idArea").val(''); //empty text field on successful
                            $("#qtyArea").val(''); //empty text field on successful
                            $("#FormSubmitAddToCart").show(); //show submit button
                            $("#LoadingImage").hide(); //hide loading image

                        },
                        error:function (xhr, ajaxOptions, thrownError){
                            $("#FormSubmitAddToCart").show(); //show submit button
                            $("#LoadingImage").hide(); //hide loading image
                            alert(thrownError);
                        }
                        });
                });
    </script>

//*selects products from database*//
<?php
include_once("config.php");

$results = $mysqli->query("SELECT * FROM products");
while($row = $results->fetch_assoc()) {
    echo '<li id="item_'.$row["id"].'">
            <div class="del_wrapper">
                '.$row["name"].' - $'.$row["price"].'
                <input type="hidden" id="idArea" value="'.$row["id"].'">
                <input type="number" id="qtyArea" value="0">
                <button id="FormSubmitAddToCart">Add to Cart</button>
            </div>
        </li><br />';
}

?>

我的回复页面正在运行,并将第一个表单数据发布到购物车表。

我知道我需要某种循环或方式来识别使用按钮提交的表单,但不知道如何执行此操作。有什么建议?只是为了让你知道,在我开始工作之后,我确实保护了我的东西。谢谢! :d


************************在这些线路之下工作的固定代码**************** **********


以下是适用于我的完整更新。

脚本代码

<script type="text/javascript">
        $(document).ready(function(){
            $('[id^=FormSubmitAddToCart]').click(function(){
            // now this is your product id, and now you should
                var p_id= $(this).attr('id').replace('FormSubmitAddToCart-', '');

            // this is  your quantity
                var p_qty = $('#qtyArea-'+p_id).val();

            // + now you know the product id and quantity, so you should handle the rest

                var myData = 'id='+p_id+'&qty='+p_qty;

                alert(myData);
            //  throw new Error("Something went badly wrong!");

                jQuery.ajax({
                type: "POST", // HTTP method POST or GET
                url: "response.php", //Where to make Ajax calls
                dataType:"text", // Data type, HTML, json etc.
                data:myData, //Form variables
                success:function(response){
                    $("#responds").append(response);
                    $("#idArea").val(''); //empty text field on successful
                    $("#qtyArea").val(''); //empty text field on successful
                    $("#FormSubmitAddToCart").show(); //show submit button
                    $("#LoadingImage").hide(); //hide loading image

                },
                error:function (xhr, ajaxOptions, thrownError){
                    $("#FormSubmitAddToCart").show(); //show submit button
                    $("#LoadingImage").hide(); //hide loading image
                    alert(thrownError);
                }
                });

            })
        });
    </script>

提交表格代码:

<?php
    include_once("config.php");

    $results = $mysqli->query("SELECT * FROM products");
    while($row = $results->fetch_assoc()) {
        echo '<li id="item_'.$row["id"].'">
                <div class="del_wrapper">
                    '.$row["name"].' - $'.$row["price"].'

                    <input type="hidden" id="idArea-'.$row["id"].'" value="'.$row["id"].'"/>
                    <input type="number" id="qtyArea-'.$row["id"].'" value="0">
                    <button id="FormSubmitAddToCart-'.$row["id"].'">Add to Cart</button>
                </div>
            </li><br />';
    }

?>

response.php page

<?php
//include db configuration file
include_once("config.php");

if(isset($_POST["qty"]) && ($_POST["qty"] != 0) ) {
    //check $_POST["content_txt"] is not empty

    //sanitize post value, PHP filter FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH Strip tags, encode special characters.
    $MID = "43";
    $ID = $_POST["id"];
    $QTY = $_POST["qty"];

    echo $ID.$QTY;

    // Insert sanitize string in record
    //$insert_row = $mysqli->query("INSERT INTO add_delete_record(content,qty) VALUES('".$contentToSave.",".$QTY."')");

    $insert_row = $mysqli->prepare('INSERT INTO orders(members_id, product_id, quantity) VALUES (?,?,?)');
    $insert_row->bind_param('iii', $MID, $ID, $QTY);
    $insert_row->execute();
    $insert_row->close();

    if($insert_row)
    {
         //Record was successfully inserted, respond result back to index page
          $my_id = $mysqli->insert_id; //Get ID of last inserted row from MySQL
          echo '<li id="item_'.$my_id.'">';
          echo '<div class="del_wrapper"><a href="#" class="del_button" id="del-'.$my_id.'">';
          echo '<img src="images/icon_del.gif" border="0" />';
          echo '</a></div>';
          echo $ID.'-'.$QTY.'</li>';
          $mysqli->close(); //close db connection

    }else{

        //header('HTTP/1.1 500 '.mysql_error()); //display sql errors.. must not output sql errors in live mode.
        header('HTTP/1.1 500 Looks like mysql error, could not insert record!');
        exit();
    }

}
?>

1 个答案:

答案 0 :(得分:0)

你的HTML应该是这样的。
            

            <input type="hidden" id="idArea-'.$row["id"].'" value="'.$row["id"].'">
                            <input type="number" id="qtyArea-'.$row["id"].'" value="0">

                            // + javascript

                            $(document).ready(function(){
                                $('[id^=FormSubmitAddToCart]').click(function(){
                                // now this is your product id, and now you should
                                    var p_id= $(this).attr('id').replace('FormSubmitAddToCart-', '');

                               // this is  your quantity
                                    var p_qty = $('#qtyArea-'+p_id).val();

                                    // + now you know the product id and quantity, so you should handle the rest

                                })
                            });
相关问题