繁体   English   中英

如何在PHP中使用html复选框插入INTO

[英]How to INSERT INTO using html checked boxes with PHP

我需要的

我在HTML表格的网页上显示了Oracle查询的结果。 我还为每一行中的复选框添加了另一列。 我的代码如下。

<?php

(...some code with Oracle Query...)

echo "<form method='post'>";
echo "<table>";

while($row = oci_fetch_array($sql)) {
    echo "<tr>";
    echo "<td>" . $row['SKU'] . "</td>";
    echo "<td>" . $row['DESCRIPTION'] . "</td>";
    echo "<td>" . $row['LOCATION_MAX'] . "</td>";
    echo "<td>" . $row['QUANTITY'] . "</td>";
    echo "<td><input type='checkbox'></td>";
    echo "</tr>";
}

echo "</table>";
echo "</form>";

(...some more code...)

?>


单击每一行的复选框后,我需要对另一个数据库中的MySQL表使用INSERT INTO。
我在想如何获取每一行的所有信息并将其传递给另一个脚本,以便将数据插入MySQL表中时遇到麻烦。

我尝试过的

我想到将行的每个值存储在一个数组中,然后将其放入复选框的value属性中,并使用name属性对其进行引用,如下所示:

...
echo "<input type='submit' name='submit' value='submit'>";
while($row = oci_fetch_array($sql)) {

    $rowVal = array(
        "SKU" => $row['SKU'],
        "DESCRIPTION" => $row['DESCRIPTION'],
        "LOCATION_MAX" => $row['LOCATION_MAX'],
        "QUANTITY" => $row['QUANTITY']
    );

    echo "<tr>";
    echo "<td>" . $row['SKU'] . "</td>";
    echo "<td>" . $row['DESCRIPTION'] . "</td>";
    echo "<td>" . $row['LOCATION_MAX'] . "</td>";
    echo "<td>" . $row['QUANTITY'] . "</td>";
    echo "<td><input type='checkbox' name='checkbox' value='" . $rowVal . "'></td>";
    echo "</tr>";
}


因此,我试图在脚本(或另一个脚本)底部的$_POST['name']属性中引用此属性。 见下文。

if (isset($_POST['submit'])) {
    foreach($_POST['checkbox'] as $checkVal) {
        /*(do stuff here, like print out all check rows first
        so I can understand what is going on, then eventually
        write the MySQL INSERT INTO query.)*/
}



我的问题是什么

1)老实说,我一开始就难以解决这个问题。 我真的以为,将所有$row信息存储在一个数组中并将该数组变量分配给value属性将没有问题。 但是,一旦按下提交按钮,我将不知道如何调用所有复选框。

问题是,当我将数组放在value属性中时,我收到一条错误/通知,该通知显示为Notice: Array to string conversion in [/script location.php] on line [where the checkbox code is]

2)假设我不在乎上面的通知。 我仍然需要引用已检查的数据,以便可以将其插入到我拥有的MySQL数据库中。 我什至不认为这很困难。 引用所有检查的数据后,便可以使用foreach遍历该数组,并对查询中的每一行执行插入查询。

我如何做到这一点? 提前致谢! 如果我遗漏了任何帮助者所需的重要信息,请告诉我,我可以更新此问题。

我唯一的要求是,如果需要,提供的任何解决方案都应在PHP,HTML和CSS / Oracle / MySQL的范围内。 我对Javascript或其中的任何一个库都不是很熟悉,并且因为它有点时效性,所以我没有时间学习其中可能包含的所有内容。 因此,除非有一个超级简单的javascript答案,否则对我而言,弊大于利。

谢谢!

- 安东尼

快速又脏又没有测试,但是...

$rowNum = 0;
while($row = oci_fetch_array($sql)) {

    $rowVal = array(
       "SKU" => $row['SKU'],
       "DESCRIPTION" => $row['DESCRIPTION'],
       "LOCATION_MAX" => $row['LOCATION_MAX'],
        "QUANTITY" => $row['QUANTITY']
    )

    echo "<tr>";
    echo "<td>" . $row['SKU'] . "</td>";
    echo "<td>" . $row['DESCRIPTION'] . "</td>";
    echo "<td>" . $row['LOCATION_MAX'] . "</td>";
    echo "<td>" . $row['QUANTITY'] . "</td>";
    echo "<td>" .
           "<input type='hidden' name='opt[$rowNum]' value='". implode("::", $rowVal) ."'>".
           "<input type='checkbox' name='checkbox[$rowNum]' value='$rowNum'>".
         "</td>";
    echo "</tr>";

    $rowNum++;
}

您只需将数组值放在隐藏的输入中,然后放在后期处理代码上:

// Note that you need to check if all values are $_POSTEd, 
// this is a quick and dirty solution!
if (isset($_POST['submit'])) {
  $data = [];
  foreach($_POST['checkbox'] as $rowNum) {
    $data[] = explode("::", $_POST['opt'][$rowNum]);
  }
  var_dump($data);
}

// Output sample (selected row 2 and 4):
array (size=2)
  0 => 
    array (size=4)
      0 => string 'SKU2' (length=4)
      1 => string 'DESC2' (length=5)
      2 => string 'LOC2' (length=4)
      3 => string 'QUAN2' (length=5)
  1 => 
    array (size=4)
      0 => string 'SKU4' (length=4)
      1 => string 'DESC4' (length=5)
      2 => string 'LOC4' (length=4)
      3 => string 'QUAN4' (length=5)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM