-1

基本上,用户填写表格以输入产品,然后通过勾选这些用户的复选框来声明该产品是“特定于”用户的。

产品名称: foo

特定用户:

  • 鲍勃
  • 账单

因此,用户可以“检查”1 个或多个用户来链接产品。

我已经设置了数据库表:

用户 | 用户名 | 姓名 |

产品 | 产品ID | 姓名 |

链接表 | 链接ID | 产品ID | 用户名 |

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

到目前为止,我已经完成了插入产品详细信息并返回 productID 的工作,但我正在努力使用循环将 productID 和 userID 插入到链接表中。

$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”循环的行上。

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

4

3 回答 3

0

$_POST['users'] is going to be a string no? I haven't done PHP in a while, but you can't POST an array or anything, only a string. So your can't foreach over a string.

What type of data is $_POST['users']? Is it a list. I am more familiar with Coldfusion where you can loop over a list using different syntax, but I am pretty sure you'll have to check the data of your post variable and act on it accordingly.

于 2013-02-06T16:33:42.720 回答
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
}
于 2013-02-06T16:40:05.553 回答
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" />

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

于 2013-02-06T16:41:35.563 回答