looping through multiple arrays and inserting into SQL
I have a form that once submitted some of its result are stored in arrays, example:
(The form has multiple lines with the same input names)
<select name="product[]">
once submitted goes into $_GET['product']
if I do:
// Product ID's
foreach($_GET['product'] as $name => $prodvalue) {
print "$name : $prodvalue<br>";
}
the following is returned:
0 : 9
1 : 10
2 : 11
3 : 12
As well as the Product ID's I have 2 other form input structured the same way, so my question is how do I loop through each of the $_GET's ($_GET['product']
, $_GET['linequantity']
and $_GET['lineprice']
) to add each of them to multiple SQL table rows? Also there will be other records that need to be entered, but, these will be constant, so for instance, if 3 rows are to be added then the other records will be the same for each of the 3 rows.
Please help me, I'm goin' nuts!
B.
EDIT:
The table is called: order_lines
Value => Field
$_GET['product'] => product_id
$_GET['linequantity'] => unit_price
$_GET['lineprice'] => qty
$unh =开发者_开发百科> unh
There are more, but, i can work it out from there.
If the keys of all form field arrays are equal then you can use the name of one to reference the other:
$values = array();
foreach ($_GET['product'] as $name => $value) {
$values[] = array($value, $_GET['linequantity'][$name], $_GET['lineprice'][$name]);
}
This creates an array in which each element is an array with related fields:
Assuming you have the same number of items in each collection, I would go with something like this:
$staticValue1 = $_GET['value1'];
$staticValue2 = $_GET['value2'];
foreach($_GET['product'] as $name => $prodvalue) {
$name = my_escape($name);
$prodvalue = my_escape($prodvalue);
$linequantity = my_escape($_GET['linequantity'][$name]);
$lineprice = my_escape($_GET['lineprice'][$name]);
if (checkFormat($linequantity, $lineprince, $prodvalue, $name, $staticValue1, $staticValue2) {
$query = "INSERT INTO <table> (qty, unit_price, product, name, static_value_1, static_value_2) VALUES ".
"(".$linequantity.", '".$lineprice."', '".$prodvalue."', '".$name."', '".$staticValue1."', '".$staticValue2."')";
$result = mysql_query($query);
}
}
function my_escape($input) {
//filter chars that will cause problems in the database
// then return the filtered values; depends on db
// usually this means encoding quotes, at the very least
return str_replace("'","/'",$input);
}
function checkFormat($linequantity, $lineprince, $prodvalue, $name, $staticValue1, $staticValue2) {
//use a series of comparisons to return true or false
// based on whether or not ALL inputs match the expected range of values
if (!(is_numeric($linequantity)) return false;
... //<-- more comparisons
return true; // <-- reaching this means it did not fail on any checks
}
精彩评论