如何在一次点击提交中更新基于会话的所有输入表单数据?

时间:2012-01-12 14:43:29

标签: php jquery ajax

我有这个购物车页面,其中显示产品+价格和数量 现在我的问题是,一旦我输入不同数量的数量并点击更新按钮,我就不知道如何更新物品总数和价格

这是我的功能,它根据$ _SESSION数据“列出”产品

public function getCartListings(){
 if (is_array($_SESSION['cart'])){
    foreach($_SESSION['cart'] as $id => $qty){
      $query = "SELECT * FROM gg_t_wsproducts WHERE ProductID = $id";
      $result = mysql_query($query);
      if (!$result){
        echo "Couldn't execute query: ".mysql_error();
        exit;
      }
      $product = $this->getProduct($id);

        echo '<div class="cart-content">
                <table width="100%" cellpadding="0" cellspacing="0" border="0">
                    <tbody>
                        <tr>
                            <td width="20%" align="center" style="vertical-align:top !important;">
                                <img src="images/shopping-cart/thumb-image.png" />
                            </td>
                            <td width="80%" style="vertical-align:top !important;">
                                <table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-bottom:2px solid #c6c6c6; padding-bottom:10px">
                                    <tbody>
                                        <tr>
                                            <td width="60%"><b style="font-size:18px">'.$product["ProductName"].'</b></td>
                                            <td width="20%">Qty &nbsp;&nbsp;<input id="proditem"  name="'.$id.'" type="text" style="width:20px; margin:0 0 0 4px;" value="'.$qty.'"></td>
                                            <td width="20%"><span style="font-size:24px; font-weight:bold;">$'.number_format($product['ProductOverridePrice'],2).'</span></td>
                                        </tr>
                                    </tbody>
                                </table>
                                <table width="100%" cellpadding="0" cellspacing="0" border="0">
                                    <tbody>
                                        <tr>
                                            <td width="50%" valign="bottom" align="left"><br>
                                                <span style="font-size:18px; font-weight:bold;">$'.number_format($product['ProductOverridePrice'],2).'</span><br>
                                                <img src="images/shopping-cart/star.png" />&nbsp;&nbsp;<img src="images/shopping-cart/star.png" />&nbsp;&nbsp;<img src="images/shopping-cart/star.png" />&nbsp;&nbsp;<img src="images/shopping-cart/star.png" />&nbsp;&nbsp;<img src="images/shopping-cart/star.png" /><br>
                                                <span style="font-size:12px; color:#828282;">14 reviews</span>
                                            </td>
                                            <td width="50%" valign="bottom" align="right">
                                                <a class="removefromcart" name="'.$id.'" id="'.$qty.'" href="#"><img src="images/shopping-cart/remove-item-btn.png" border="0" /></a>
                                            </td>
                                        </tr>
                                    </tbody>
                                </table>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </div>';

    }//end foreach
  }

}

如上所示,这些项目来自foreach循环

这是显示实际项目的前端代码

    <div id="catalog-wrapper">
        <form action="#" method="POST" id="updatecart">
        <h1 class="cart-header">ITEMS IN YOUR CART <span style="float:right"><a href="#"><input type="image" name="updatecart" src="images/shopping-cart/update-cart-btn.png" border="0" /></a>&nbsp;&nbsp;<a href="catalog.php"><img style="float:right;" src="images/shopping-cart/continue-shopping-btn.png" border="0" /></a></span></h1>
        <?php $myCart->getCartListings(); ?>
        </form>
    </div>

现在,这里是“无用的”jquery代码

   $('input[name="updatecart"]').click(function(){
      var pid = $('input#proditem').attr('id');
      var qty2 = $('input[type="text"]').each(function(idx,elem){
       });
      $.ajax({
        type: "POST",
        url: "classes/ajax.cartupdate.php",
        data: "pid="+pid+"&qty2="+qty2,
        success: function(data){
          alert(data);
          location.reload();
        }
      });
      return false;
   });

ajax PHP代码应该是这样的......但我仍然遇到上述代码的问题......不确定该怎么做

if ($qty2){
  $cart->updateCart($qty2);
  $_SESSION['total_items'] = $cart->totalItems($_SESSION['cart']);
  $_SESSION['total_price'] = $cart->totalPrice($_SESSION['cart']);
  echo "cartUpdated!";
}

1 个答案:

答案 0 :(得分:0)

为什么要获得多个变量?只需获取一个数组并使用PHP在服务器端进行爆炸。我的意思是,创建一个javascript数组并在其中包含每个输入值,然后将其发送到PHP。但是在你的代码中会有两个数组,没问题。它希望如此:

pid="1,2,3,4,5,6,7"+&qtty="0,1,1,0,1,1,0"

使用PHP获取此值并将其分解为“,”并使用for循环执行任何操作。顺便说一句,如果您在发送后重新加载页面,那么为什么要使用ajax方法?