gpt4 book ai didi

php - 在 PHP 中循环名称属性 [] 以从 JSON 插入数据库

转载 作者:行者123 更新时间:2023-11-29 22:28:02 25 4
gpt4 key购买 nike

我想我终于到达了我正在创建的发票创建工具的最后一点,所以所有内容都是从 JSON aJAX 传递的,这一切都很好地传递给 PHP 函数,但是我注意到我确信循环正常工作对于发票项目。

您将看到我需要循环添加到invoice_items 表的多个产品。

invoice_product[] 等......在下面的结果中 - 它实际上没有添加任何内容并返回 JSON 错误(PHP 代码的底部),所以不确定是否是因为这个。

传递数据的示例:

action  create_invoice
customer_address_1 5 Some Road
customer_address_1_ship 5 Some Road
customer_address_2 Epping
customer_address_2_ship Epping
customer_county Essex
customer_county_ship Essex
customer_email james@ambientlounge.com
customer_name James Brandon
customer_name_ship James Brandon
customer_phone 0748646013845
customer_postcode CM16 8DD
customer_postcode_ship CM16 8DD
customer_town Epping
customer_town_ship Epping
invoice_date 14/05/2015
invoice_discount 130.50
invoice_due_date 20/05/2015
invoice_id AMBMN0001
invoice_product[] Versa Table - Wildberry
invoice_product[] Versa Table - Aubergine
invoice_product[] Versa Table - Tundra Spring
invoice_product_discount[] 10%
invoice_product_discount[]
invoice_product_discount[] 70.50
invoice_product_price[] 200
invoice_product_price[] 200
invoice_product_price[] 200
invoice_product_qty[] 3
invoice_product_qty[] 2
invoice_product_qty[] 1
invoice_product_sub[] 540.00
invoice_product_sub[] 400.00
invoice_product_sub[] 129.50
invoice_shipping 23
invoice_subtotal 1069.50
invoice_total 1092.50
invoice_vat 213.90

PHP

// Create invoice
if ($action == 'create_invoice'){

// invoice customer information
// billing
$customer_name = $_POST['customer_name']; // customer name
$customer_email = $_POST['customer_email']; // customer email
$customer_address_1 = $_POST['customer_address_1']; // customer address
$customer_address_2 = $_POST['customer_address_2']; // customer address
$customer_town = $_POST['customer_town']; // customer town
$customer_county = $_POST['customer_county']; // customer county
$customer_postcode = $_POST['customer_postcode']; // customer postcode
$customer_phone = $_POST['customer_phone']; // customer phone number

//shipping
$customer_name_ship = $_POST['customer_name_ship']; // customer name (shipping)
$customer_address_1_ship = $_POST['customer_address_1_ship']; // customer address (shipping)
$customer_address_2_ship = $_POST['customer_address_2_ship']; // customer address (shipping)
$customer_town_ship = $_POST['customer_town_ship']; // customer town (shipping)
$customer_county_ship = $_POST['customer_county_ship']; // customer county (shipping)
$customer_postcode_ship = $_POST['customer_postcode_ship']; // customer postcode (shipping)

// invoice product items
foreach($_POST['invoice_product'] as $key => $value) {
$item_product = $value;
// $item_description = $_POST['invoice_product_desc'][$key];
$item_qty = $_POST['invoice_product_qty'][$key];
$item_price = $_POST['invoice_product_price'][$key];
$item_discount = $_POST['invoice_product_discount'][$key];
$item_subtotal = $_POST['invoice_product_sub'][$key];
}

// invoice details
$invoice = $_POST['invoice_id']; // invoice number
$invoice_date = $_POST['invoice_date']; // invoice date
$invoice_due_date = $_POST['invoice_due_date']; // invoice due date
$invoice_subtotal = $_POST['invoice_subtotal']; // invoice sub-total
$invoice_shipping = $_POST['invoice_shipping']; // invoice shipping amount
$invoice_discount = $_POST['invoice_discount']; // invoice discount
$invoice_vat = $_POST['invoice_vat']; // invoice vat
$invoice_total = $_POST['invoice_total']; // invoice total

// insert invoice into database
$query = "INSERT INTO invoices SET
invoice = '".$invoice."',
date = '".$invoice_date."',
due_date = '".$invoice_due_date."',
subtotal = '".$invoice_subtotal."',
shipping = '".$invoice_shipping."',
discount = '".$invoice_discount."',
vat = '".$invoice_vat."',
total = '".$invoice_total."';
";

// insert invoice items into database
$query .= "INSERT INTO invoice_items SET
invoice = '".$invoice."',
product = '".$item_product."',
qty = '".$item_qty."',
price = '".$item_price."',
discount = '".$item_discount."',
subtotal = '".$item_subtotal."';
";

// insert customer details into database
$query .= "INSERT INTO customers SET
name = '".$customer_name."',
email = '".$customer_email."',
address_1 = '".$customer_address_1."',
address_2 = '".$customer_address_2."',
town = '".$customer_town."',
county = '".$customer_county."',
postcode = '".$customer_postcode."',
phone = '".$customer_phone."',

name_ship = '".$customer_name_ship."',
address_1_ship = '".$customer_address_1_ship."',
address_2_ship = '".$customer_address_2_ship."',
town_ship = '".$customer_town_ship."',
county_ship = '".$customer_county_ship."',
postcode_ship = '".$customer_postcode_ship."';
";

header('Content-Type: application/json');

// execute the query
if($mysqli -> query($query)){
//if saving success
echo json_encode(array(
'status' => 'Success',
'message' => 'Invoice has been create successfully!'
));
} else {
// if unable to create invoice
echo json_encode(array(
'status' => 'Error',
'message' => 'There has been an error, please try again.<pre>'.$query.'</pre>'
));
}

//close database connection
$mysqli->close();

}

最佳答案

你的循环应该是这样的:

... define fixed/unchanging values...
foreach(...) {
... define changing values ...
execute query
}

照原样,您的 foreach 循环将遍历所有数据值,覆盖您在上一次迭代中保存的数据值。然后,当您运行 INSERT 查询时,您只需插入最后一组数据。

在循环内运行查询将允许您保存每“行”值。

关于php - 在 PHP 中循环名称属性 [] 以从 JSON 插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30083586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com