-1

基本的に、ユーザーはフォームに入力して製品を入力し、そのユーザーのチェックボックスをオンにして、この製品がユーザーにとって「具体的に」あることを示します。

製品名:foo

特定のユーザー:

  • ボブ
  • 明細書
  • ベン
  • ロブ

したがって、ユーザーは1人以上のユーザーを「チェック」して製品をリンクすることができます。

データベーステーブルを設定しました。

ユーザー| userID | 名前|

製品| productID | 名前|

リンクテーブル| linkID | productID | userID |

ユーザーが「Bill」と「Ben」をチェックして「Submit」をクリックすると、製品が製品テーブルに追加され、新しい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']文字列になりますか?私はしばらくPHPを実行していませんが、配列などをPOSTすることはできず、文字列のみをPOSTできます。したがって、文字列を介してforeachすることはできません。

データの種類は何$_POST['users']ですか?リストですか。さまざまな構文を使用してリストをループできるColdfusionについてはよく知っていますが、post変数のデータを確認し、それに応じて操作する必要があると確信しています。

于 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 に答える