0

配列を通過するループがあり、選択されたそれぞれの値をテーブルcheckboxに入れたい(動的に取り込まれる) 。QuestionSelectedこのエラーが発生"Warning: Invalid argument supplied for foreach()"し、結果をテーブルに取得できません。これが私が試しているコードです:

//Declare the QuestionID as a array
$QuestionID = array();


while($row = mysqli_fetch_array($run,MYSQLI_ASSOC)){
echo '<div id="QuestionSelection"><input id="chkQuestion" type="checkbox" value=" '.$row['QuestionID'].'" name="question_'.$row['QuestionID'].'">' .$row['Question']. '</p></div><br/><br/>';

//Assign the QuestionID from the table to the var
$QuestionID[] = $row['QuestionID'];

}


if($_POST['submitted']) { 


$ids_list = '';

foreach($_POST["QuestionID"] as $id)
{
$ids_list .= (strlen($ids_list) > 0 ? ',' : '').mysql_real_escape_string($id);
}

$sql2 = "INSERT INTO tbl_QuestionSelected (`QuestionID`) VALUES (".$ids_list.")";

}//End of IF 'submitted
4

2 に答える 2

1

問題は、フォームで配列を使用していないことですが、次のような名前の値を作成しています。

name="question_'.$row['QuestionID'].'"

したがって$_POST["QuestionID"]、存在せず、配列ではありません。

建物の名前を次のように変更できます。

name="QuestionID[]"

これは配列であり、実際の ID をキーとして使用することもできます。

name="QuestionID[' . $row['QuestionID'] . ']"
于 2012-07-12T16:06:22.697 に答える
0

これで問題が解決し、機能します。

$ids_list = '';

foreach($_POST["QuestionID"] as $key=>$value) {
{
$ids_list .= (strlen($ids_list) > 0 ? ',' : '').mysql_real_escape_string($value);
}

$sql2 = "INSERT INTO tbl_QuestionSelected (`QuestionID`) VALUES (".$ids_list.")";

//Run the query 
$run2 = @mysqli_query ($conn,$sql2);


}
于 2012-07-12T18:11:44.710 に答える