javascript - 在 PHP 中获取多个选择框的值并将它们添加到数组中

标签 javascript php html

我有一个按钮,可以将成分添加到数据库中。单击按钮时,用户可以使用 Javascript 添加成分的名称、测量值和单位:

function addIngredient() {
  var area = document.getElementById("addedIngredient");
  var num = document.createElement("p");
  numText = document.createTextNode(countIngredient + ". ");
  num.appendChild(numText);
  area.appendChild(num);

  //Ingredient Name
  var ingredientNameLabel = document.createElement("p");
  ingredientNameLabelText = document.createTextNode("Name");
  ingredientNameLabel.appendChild(ingredientNameLabelText);
  area.appendChild(ingredientNameLabel);
  countIngredient++;

  var ingredientNameInput = document.createElement("INPUT");
  ingredientNameInput.setAttribute("name", "ingredient_name[]");
  ingredientNameInput.setAttribute("type", "text");
  ingredientNameInput.setAttribute("class", "form-control");
  ingredientNameInput.setAttribute("class", "ingName");
  area.appendChild(ingredientNameInput);

  //Ingredient Measure
  var ingredientMeasureLabel = document.createElement("p");
  ingredientMeasureLabelText = document.createTextNode("Measure");
  ingredientMeasureLabel.appendChild(ingredientMeasureLabelText);
  area.appendChild(ingredientMeasureLabel);

  var ingredientMeasureInput = document.createElement("INPUT");
  ingredientMeasureInput.setAttribute("name", "ingredient_measure[]");
  ingredientMeasureInput.setAttribute("type", "text");
  ingredientMeasureInput.setAttribute("class", "form-control");
  ingredientMeasureInput.setAttribute("class", "ingMeasure");
  area.appendChild(ingredientMeasureInput);

   //Ingredient Unit
   var ingredientUnitLabel = document.createElement("p");
   ingredientUnitLabelText = document.createTextNode("Unit");
   ingredientUnitLabel.appendChild(ingredientUnitLabelText);
   area.appendChild(ingredientUnitLabel);

   var select = document.createElement("SELECT");
  select.setAttribute("name", "ingredient_unit[]");
  area.appendChild(select);

  var option = document.createElement("option");
  option.setAttribute("value", "grams");
  var value = document.createTextNode("g");
  option.appendChild(value);
  select.appendChild(option);

  var option = document.createElement("option");
  option.setAttribute("value", "milimeters");
  var value = document.createTextNode("ml");
  option.appendChild(value);
  select.appendChild(option);

  var option = document.createElement("option");
  option.setAttribute("value", "kilograms");
  var value = document.createTextNode("kg");
  option.appendChild(value);
  select.appendChild(option);
  var option = document.createElement("option");
  option.setAttribute("value", "litres");
  var value = document.createTextNode("litre(s)");
  option.appendChild(value);
  select.appendChild(option);

  var option = document.createElement("option");
  option.setAttribute("value", "slice");
  var value = document.createTextNode("slice");
  option.appendChild(value);
  select.appendChild(option);

  var option = document.createElement("option");
  option.setAttribute("value", "whole");
  var value = document.createTextNode("whole");
  option.appendChild(value);
  select.appendChild(option);

  var option = document.createElement("option");
  option.setAttribute("value", "pinch");
  var value = document.createTextNode("pinch");
  option.appendChild(value);
  select.appendChild(option);
}

我希望为添加的每种成分选择单位。

谁能告诉我如何使用 PHP 来做到这一点?

我正在尝试以下方法:

$units = [];
foreach ($_POST["ingredient_unit[]"] as $key => $unit) {
        array_push($units, $unit);
    }

这不起作用,也不会给出错误。

谢谢。

最佳答案

更改以下代码:

foreach ($_POST["ingredient_unit[]"] as $key => $unit) {
    array_push($units, $unit);
}

并使用它:

foreach ($_POST["ingredient_unit"] as $key => $unit) {
    array_push($units, $unit);
}

当您尝试访问 $_POST["ingredient_unit[]"] 时,您应该会收到通知,因为它尚未定义。如果您没有看到通知,则可能是 error_reporting 级别太低。您可以使用类似以下内容来激活除已弃用错误之外的所有错误:

error_reporting(E_ALL &~ E_DEPRECATED);

关于javascript - 在 PHP 中获取多个选择框的值并将它们添加到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60822385/

相关文章:

javascript - ng-mouseover 不显示数据

javascript - Laravel Ajax Post 返回 500

php - 如何将值传递给 Laravel 中的密码字段

php - 我该如何做这个sql过滤结果

javascript - 在屏幕外滑动 div

javascript - 删除tinyeditor所见即所得编辑器中的所有html标签

javascript - Cron Job 在 Cloudwatch Events 中从上午 8 点到下午 4.30 每分钟运行一次

javascript - 延迟加载和 $ocLazyLoad

javascript - 具有更改 ID 的 getElementById

html - CSS 表单/输入操作