隐藏文本框的Post值


post value of hidden textboxes

我有这样的代码:

<?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='"answers1'" class='$row[col_id]' id='"answerswer1'" style='display:none;'>";
echo "<align='left'><input placeholder='"source'" type='"text'" name='"answers2'" class='$row[use_id]' id='"answerswer2'"   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>

,我想使用THS代码从两个文本框中获取数据:

$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]'总是空的..有人能帮助我吗?提前感谢!

必须将ans1ans2作为数组发送到服务器。不是字符串

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
    }
}