2

私はこのコードを持っています:

<?php
$result = mysqli_query($con,"SELECT * FROM table");

while($row = mysqli_fetch_array($result)){
echo "<input type=\"checkbox\" id=\"$row[use_id]\"  name=\"things[]\"  value='$row[col_id]' >$row[col]<br>";
echo "<input placeholder=\"description\" type=\"text\" name=\"ans1\" class='$row[col_id]' id=\"answer1\" style='display:none;'>";
echo "<align='left'><input placeholder=\"source\" type=\"text\" name=\"ans2\" class='$row[use_id]' id=\"answer2\"   style='display:none;'>";

}
?>

このスクリプトを使用して:

<script>
$(document).ready(function(){


 $("input[type=checkbox]").change(function(){
    var divId = $(this).attr("id");

     if ($(this).is(":checked")){
        $("." + divId).show();
     }
     else{
         $("." + divId).hide();
     }
});
});
</script>

そして、このコードを使用して2つのテキストボックスからデータを取得したい:

$checkBox = $_POST['things'];


for($i=0; $i<sizeof($checkBox); $i++){


    $qs = "INSERT INTO sccm_reherb.table2 values('$_POST[id]','".$checkBox[$i]."','$_POST[ans1]','$_POST[ans2]')";
    echo $qs;
    mysqli_query($con,$qs) or die(mysqli_error($con));
}

しかし、'$_POST[ans1]' と '$_POST[ans2]' は常に空です。前もって感謝します!

4

1 に答える 1

0

ans1andans2配列としてサーバーに送信する必要があります。文字列としてではありません。

whileループを次のように変更します。

while($row = mysqli_fetch_array($result)) {
    echo "<input type='checkbox' id='$row[use_id]'  name='things[$row[col_id]]'  value='$row[col_id]' >$row[col]<br>";
    echo "<input placeholder='description' type='text' name='ans1[$row[col_id]]' class='$row[col_id]' id='answer1' style='display:none;'>";
    echo "<align='left'><input placeholder='source' type='text' name='ans2[$row[col_id]]' class='$row[use_id]' id='answer2'   style='display:none;'>";
}
  • 注 1:'読みやすくするために、HTML 属性で単一引用符 ( ) を使用します。
  • 注2:注意してくださいname='ans2[$row[col_id]]'(現在は配列です)
  • 注3:配列のインデックスを手動で設定しました$row[col_id]

このフォームをサーバーに送信すると、次のような結果が得られます。

Array
(
    [things] => Array
        (
            [1] => 1
            [4] => 4
        )

    [ans1] => Array
        (
            [1] => Description 1
            [2] => forbidden data by user
            [3] => forbidden data by user
            [4] => Description 4
            [5] => forbidden data by user
        )

    [ans2] => Array
        (
            [1] => Source 1
            [2] => forbidden data by user
            [3] => forbidden data by user
            [4] => Source 4
            [5] => forbidden data by user
        )

)

上記の配列では、私がそこに書いたように、すべてのテキストボックスに値がありforbidden data by userます。有効なデータ (ユーザーがチェックボックスをオンにした) は配列内のデータであるため、これは重要ではありませんthings。そのため、サーバーではその配列をループする必要があります。

$checkbox = $_POST['things'];

if ($checkbox) {
    foreach ($checkbox as $id => $value) {
        $ans1 = $_POST['ans1'][$id];
        $ans2 = $_POST['ans2'][$id];

        // to other stuff
    }
}
于 2013-05-22T12:57:34.043 に答える