【问题标题】:How to insert multiple set of checkboxes with different names in different table column如何在不同的表格列中插入多组具有不同名称的复选框
【发布时间】:2020-02-10 02:16:19
【问题描述】:

我的表单中有 3 组复选框,我设计它的方式是,如果选中一个,则将选中特定产品的 3 个复选框。这意味着在提交时,当我使用 3 组复选框(itemQuantities[],itemIds[]sectionIds[])将它们转换为数组时

$item_quantities              = $_POST['itemQuantities'];
$item_ids                     = $_POST['itemIds'];
$section_ids                  = $_POST['sectionIds'];

它们 3 个数组必须包含相同数量的元素。如何将这些数组的值插入一个表中,第一个数组的一个元素插入一列,第二个数组的第一个元素插入下一列,第三个数组的第一个元素插入第三列,等等。 ...行数将是一个数组中的元素数(因为所有数组都有相同的元素)。例如:

$array1 = array(1,2,3);
$array2 = array(4,5,6);
$array3 = array(7,8,9);

在数据库中,我想拥有:

| col1 | col2 | col3 |
----------------------
|   1  |   4  |   7  |
|   2  |   5  |   8  |
|   3  |   6  |   9  |

我怎样才能做到这一点。我曾尝试使用嵌套的 foreach 循环,但它不起作用。任何帮助将不胜感激。谢谢

【问题讨论】:

    标签: php mysql arrays database checkbox


    【解决方案1】:

    遍历其中一个并在最后两个数组中使用第一个的索引。

    foreach($_POST['itemQuantities'] as $key => $value) { 
          echo $value . PHP_EOL . $_POST['itemIds'][$key] . PHP_EOL . $_POST['sectionIds'][$key];
    }
    

    col1col2col3 通常是一个糟糕的数据库设计,如果这不是伪名称,我会重新考虑。

    【讨论】:

    • 我只是以col1col2col3为例来问我的问题。
    • 好吧,这应该可行。您还应该在foreach 之外使用prepare,并且只在循环中执行参数化查询。
    【解决方案2】:

    如果所有变量的长度相同,您可以只循环一个数组并使用另一个数组的键

    <?php 
        $array1 = array(1,2,3);
        $array2 = array(4,5,6);
        $array3 = array(7,8,9);
    
        for ($i=0; $i < count($array1); $i++) { 
            echo "value in Row ".($i+1)." is : ".$array1[$i].",".$array2[$i].",".$array3[$i]." ";
    
        }
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-24
      • 2013-11-02
      • 2021-03-20
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多