根据选定的复选框和数量向数据库添加行 - PHP

时间:2015-01-26 16:33:13

标签: php mysql checkbox

我的脚本从db表中选择一个项目列表,并将它们与一个复选框一起显示。如果选中该复选框并提交表单,则该项目会添加到' stock'表

我必须进行调整,以便用户可以选择复选框并选择数量。但是,我没有使用'数量'作为要插入行的值。相反,如果用户为库存项目选择3的数量' Apple',我希望将3行Apple添加到数据库中。我当前的HTML脚本(包含在while循环中):

<label><input type="checkbox" value="<?php echo $show3['Part_Type']; ?>,<?php echo $show3['Sub_Type']; ?>" class="cbgroup1" name="cbg1[]" />
<?php echo $show3['Sub_Type']; ?><input type="number" size="2" value="1" name="qty_<?php echo $show3['Sub_Type']; ?>"></label>

发布到db的脚本:

foreach ($_POST['cbg1'] as $stock) {
  $lst = explode(",", $stock); 
  //I do this because I send two values through the checkbox separated by a comma

  $query = ("INSERT INTO stock SET Item_Specifics_Type='$lst[0]',
  Item_Specifics_SubType='$lst[1]',
  colour = '$colour',
  additional='$additional',
  stock_item = '$Make $ModelName $lst[1]'
  ");
  $result = mysql_query($query) or die(mysql_error());
}

在回答后编辑脚本:

foreach ($_POST['cbg1'] as $stock) {


list($partType,$subType) = explode(",", $stock); 

$query = ("INSERT INTO stock SET
StockID='$unique_id-$breaker-$i',
unique_id='$breaker-$unique_id',
VehicleID='$unique_id',
breaker='$breaker',
Make='$Make',
Model='$Model',
Year='$Year',
YearRange='$year_range_array',
fuel= '$fuel',
enginesize = '$engine',
Item_Specifics_Type='$partType',
Item_Specifics_SubType='$subType',
colour = '$colour',
value = '$value',
vin='$vin',
additional='$additional',
stock_item = '$Make $ModelName $subType',
icp ='1',
upload_date ='$now'");

for($i=0;$i<$_POST['qty_'.$subType];$i++){
  $result = mysql_query($query) or die(mysql_error());
}

}

1 个答案:

答案 0 :(得分:1)

你几乎就在那里......但要注意,你的代码需要进行安全性审查,因为它存在许多缺陷。我假设它是用于原型设计,并继续使用逻辑来添加。

foreach ($_POST['cbg1'] as $stock) {
  list($partType,$subType) = explode(",", $stock); 
  //I do this because I send two values through the check box separated by a comma
  $query = ("INSERT INTO stock SET Item_Specifics_Type='$partType',
       Item_Specifics_SubType='$subType',
       colour = '$colour',
       additional='$additional',
       stock_item = '$Make $ModelName $subType'
  ");
  for($i=0;$i<$_POST['qty_'.$subType];$i++){
      $result = mysql_query($query) or die(mysql_error());
   }
}

因此,我们所做的是循环数量输入中所述的数量以添加多行。

我还使用了带爆炸的list()来创建两个不同的变量,这将使其他人更容易阅读,或者代码增长,因为他们现在明确告诉他们包含什么。