好的,所以我想说,如果之前有人问过,我很抱歉。我似乎无法在问题部分找到它,而且我花了几个小时寻找我需要的东西。
所以开始吧。我从数据库中的表中提取数据行 - >产品。然后将它们添加到购物车。我知道如何在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();
}
}
?>
答案 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
})
});