1

<select multiple="multiple">PHPで複数の選択肢を取得する必要があります。その後、POSTメソッドを使用して変数に入れ、少なくとも配列をエコーアウトして、変数$authorsに選択肢があることを確認しようとしますが、このエラーが出力されます

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\ex\addBook.php on line 45

これが私のコードです:

<?php
    include ("includes/connections.php");
    $authors = $_POST["authors"];
    foreach ($authors as $author) 
    {
        echo $author;
    }
?>

これが私がhtmlに持っている「複数選択」です:

<?php multiple("author_ID", "author_firstname", "author_lastname", "author", "author_lastname", "authors"); ?> <span style="font-size: 12px; color: #666;">(Keep down Ctrl for selecting multiple authors)</span>

ここに複数の関数があります:

<?php include ("includes/connections.php");
    function multiple($intIdField, $strfNameField, $strlNameField, $strTableName, $strOrderField, $strNameOrdinal, $strMethod="asc") {
       echo "<select multiple=\"multiple\" name=\"$strNameOrdinal\">\n";

       $strQuery = "select $intIdField, $strfNameField, $strlNameField
                   from $strTableName
                   order by $strOrderField $strMethod";

       $rsrcResult = mysql_query($strQuery);

       while($arrayRow = mysql_fetch_assoc($rsrcResult)) {
          $strA = $arrayRow["$intIdField"];
          $strB = $arrayRow["$strlNameField"] . " " . $arrayRow["$strfNameField"];    
          echo "<option value=\"$strA \">$strB</option>\n";
       }

       echo "</select>";
    }
?>

したがって、変数は配列であると推測し、$authors少なくとも印刷することはできますが、すでに述べたように、これは起こりません。

データベースから取得された作成者は、問題なく正しく表示されています。問題は、「複数選択」リストから選択されたものをエコーアウトしたいということです。

4

1 に答える 1

1

HTML での複数選択の名前は、それが配列であることを示すために「[]」で終わる必要があります。次に、php で foreach ループを実行するときに、配列を受け取っていることを確認してください。 、または単一の値を配列として型キャストする必要があります。ただし、 name 属性をどのように設定しているかに問題があると確信しています。

于 2012-06-10T16:50:35.317 に答える