基本上,用户填写表格以输入产品,然后通过勾选这些用户的复选框,为用户“明确”说明该产品。
产品名称: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'循环的路线上。
任何帮助都会很棒。谢谢!
答案 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" />
请注意在名称中使用[]
,这使它成为一个数组。