-1

空のチェックボックスを含むフォームを送信すると通知が表示されますが、それらを取り除く方法がわかりません。

これが私のPHPです:

if(count($_POST) > 0) {
    $Q1 = $db->real_escape_string(trim($_POST['Q1']));
    $Q2_1 = $db->real_escape_string(trim($_POST['Q2_1']));
    $Q2_2 = $db->real_escape_string(trim($_POST['Q2_2']));
    $Q2_3 = $db->real_escape_string(trim($_POST['Q2_3']));
    $Q2_4 = $db->real_escape_string(trim($_POST['Q2_4']));
    $Q2_5 = $db->real_escape_string(trim($_POST['Q2_5']));
    $Q2_6 = $db->real_escape_string(trim($_POST['Q2_6']));
    $Q3 = $db->real_escape_string(trim($_POST['Q3']));

    if($insert = $db->query("
        INSERT INTO response (Q1, Q2_1, Q2_2, Q2_3, Q2_4, Q2_5, Q2_6, Q3)
        VALUES ('$Q1', '$Q2_1', '$Q2_2', '$Q2_3', '$Q2_4', '$Q2_5', '$Q2_6', '$Q3');
    ")) {
        echo $db->affected_rows;
    }
}

ここに私のhtmlがあります:

<input type='checkbox' name="Q2_1" value="1">Not related to my issue<br/>
<input type='checkbox' name="Q2_2" value="1">Too complicated explanations<br/>
<input type='checkbox' name="Q2_3" value="1">Too much information<br/>
<input type='checkbox' name="Q2_4" value="1">Incorrect information<br/>
<input type='checkbox' name="Q2_5" value="1">Unclear information<br/>
<input type='checkbox' name="Q2_6" value="1">Incomplete information<br/>

編集 エラーメッセージは次のとおりです。通知:未定義のインデックス:C:\ xampp\htdocs\srsurvey\connect.phpのQ2_1行49

注意: 未定義のインデックス: C:\xampp\htdocs\srsurvey\connect.php の 52 行目の Q2_4

注意: 未定義のインデックス: C:\xampp\htdocs\srsurvey\connect.php の 53 行目の Q2_5

注意: 未定義のインデックス: C:\xampp\htdocs\srsurvey\connect.php の 54 行目の Q2_6

チェックボックスが空のままの場合

4

4 に答える 4

0

問題は、チェックボックスがクリックされていないときは POST データを送信しないため、インデックスが定義されているかどうかを確認する必要があることです。このタスクはすべてのチェックボックスで常に同じであるため、簡単に自動化できます。

$fields = array('Q2_1','Q2_6'); // all values
$query_fields = "";
$query_values = "";
foreach ($fields as $index) {
    $query_fields .= $index.",";
    if (isSet($_POST[$index]))
        $query_values .= "'1',";
    else
        $query_values .= "'0',";
}
$query = "INSERT INTO table " . rtrim($query_fields,",") . " VALUES (" . rtrim($query_values,",") . " )";

この方法では、配列を変更するだけで有効な SQL クエリが生成されるため、コードがより柔軟になります$fields。後でフィールドを追加または削除する場合は、1 行を編集するだけで済みます。

于 2013-10-29T21:07:33.627 に答える