检查每个$ _POST复选框的PHP MySQL INSERT脚本

时间:2013-02-06 16:29:41

标签: php mysql checkbox foreach

基本上,用户填写表格以输入产品,然后通过勾选这些用户的复选框,为用户“明确”说明该产品。

产品名称:foo

特定用户:

  • 鲍勃
  • 比尔
  • 罗布

因此,用户可以“检查”一个或多个用户将产品链接到。

我已设置数据库表:

USER | userID |名字|

产品 | productID |名字|

LINKTABLE | linkID | productID | userID |

我想要发生的是当用户检查“Bill”和“Ben”并点击“Submit”时,产品被添加到product表中,返回新的productID,INSERT脚本上发生循环使用每个已检查用户的productID和userID将新记录添加到LINKTABLE中。

到目前为止,我已经插入了产品详细信息并返回了productID,但我正在努力将循环插入到产品ID和用户ID中。

$product = $_POST["product"];

$sql = "INSERT INTO products ('name') VALUES ($product);
$result = mysql_query($sql);

$newProductID = mysql_insert_id();

我试过了:

if(!empty($_POST['users'])) {
foreach($_POST['users'] as $userID)
    {
        $sql = "INSERT INTO linktable (productID, userID) VALUES (".$newProductID.", ".$userID.")";
        $result = mysql_query($sql) or die(mysql_error()."<br />".$sql);
    }

但是这引发了错误:

  

警告:为....中的foreach()提供的参数无效

在'foreaach'循环的路线上。

任何帮助都会很棒。谢谢!

3 个答案:

答案 0 :(得分:0)

$_POST['users']将是一个字符串没有?我有一段时间没有完成PHP,但你不能POST一个数组或任何东西,只有一个字符串。所以你不能超越字符串。

$_POST['users']是什么类型的数据?这是一个清单。我更熟悉Coldfusion,您可以使用不同的语法循环遍历列表,但我很确定您必须检查post变量的数据并相应地对其进行操作。

答案 1 :(得分:0)

我怀疑$_POST['users']不是数组。您的html中的复选框是什么样的?他们需要看起来像这样:

<input type="checkbox" name="users[]" value="Bob">Bob
<input type="checkbox" name="users[]" value="Bill">Bill
<input type="checkbox" name="users[]" value="Ben">Ben

注意名称users[]

现在你可以做到:

foreach ($_POST['users'] as $user) {
    // do something
}

答案 2 :(得分:0)

如果您想使用:

foreach($_POST['users'] as $userId)

然后你需要HTML中的复选框数组,并将value属性设置为ID,如下所示:

Bob <input type="checkbox" name="users[]" value="101" />
Bill <input type="checkbox" name="users[]" value="102" />
Ben <input type="checkbox" name="users[]" value="103" />

请注意在名称中使用[],这使它成为一个数组。