基于复选框更新表,

时间:2014-10-20 12:34:45

标签: php mysql forms

您好希望每个人都会好。我有个问题。

我有一个表单代码后的表单。

<form name="form3" method="post" action="">

    <?php while ($row_news1 = mysql_fetch_assoc($rs_news1)) { ?>

<input type="checkbox" name="check1[]" value="1" <?php if($row_news1['house']=='1') echo "checked=\"checked\""; ?>>


<input type="checkbox" name="check2[]" value="1" <?php if($row_news1['add_item']=='1') echo "checked=\"checked\""; ?>>



<input type="text" name="user_name[]" id="textfield" readonly style="width:50%;color:white;background-color:transparent" value="<?php echo $row_news1['FirstName'].'&nbsp;'.$row_news1['LastName'];  ?>"><br>


<input type="hidden" name="user_id[]" value="<?php echo $row_news1['UserID']; ?>">


<?php } ?>


<input type="submit" value="Submit" name="update" class="but">     

<input type="submit" value="Reset" name="reset" class="but">

</form>

我想知道用户名记录到数组的程度。这两个复选框将生成多长时间。因此,当我选中所有复选框以便表格更新成功。但是,当我想要随机检查一些复选框时,它们的相应记录将更新为值1,所有其他未选中的复选框对应记录将更新为值0.

这是我的表单提交代码。

if(isset($_POST['update'])&& $_POST['user_name']!=''){  // checking if Update button clicked

 $user_id=$_POST['user_id']; // Getting all user_id

 $user_name= $_POST['user_name']; //Getting user name text box

 $check1=$_POST['check1'];// Getting all check boxes but in this case its only taking checked boxes.

 $check2=$_POST['check2'];


        for($i = 0; $i < count($user_name); $i++){ // iterating the code until we have user name.

            if($check1[$i]=='1'){ // checked if first checkbox value is 1 so assign 1 to Variable a. other wise 0;

                $a=1;

            }

            else {

                $a=0;


            }

            if($check2[$i]=='1'){ // same as above i want

                $b=1;

            }

            else {

                $b=0;

            }

           // this is the query that i want to update the rocord

            $query_u1 = "UPDATE Users

                SET

                house = '".$a."',

                add_item = '".$b."'

                WHERE UserID=".$user_id[$i];

        mysql_query($query_u1) or die(mysql_error());


        }

        echo '<script> window.location = "adminmain.php";</script>';

}

上面的代码显示了我的Php和mysql查询代码。

现在我想要检查所有复选框是否都已选中。只是其他的事情。意味着我有10个用户记录。每条记录都有自己的UserId和名称。每条记录我都有两个复选框,如代码所示。

当我随机检查5个复选框时,我想要。所以这五个相应的记录将更新为1个值。和其他五个复选框对应的记录将更新为0值。

我认为你们现在会得到它。

1 个答案:

答案 0 :(得分:0)

好的,这实际上非常简单。从基本表单开始:

<form method="post" action="">
    <input type="checkbox" name="my_checkboxes[]" checked>
    <input type="checkbox" name="my_checkboxes[]">
    <input type="checkbox" name="my_checkboxes[]">
</form>

然后使用php

构建您的后端
if(isset($_POST['my_checkboxes'])){
   foreach($_POST['my_checkboxes'] as $key => $val){
        // Update database with $val Update DB set col = '$val' (use prepared statements for security)
   }
}

这段代码可以大大改进,但这会给你一般的想法。一个 重要 注意,php只会传递已选中复选框。所以,记住这一点。

克服此潜在问题的一种方法是为您拥有的每个复选框添加隐藏输入,因此您的论坛可能会更改为如下所示(注意:从name属性中删除括号):

<form method="post" action="">
    <input type="checkbox" name="my_checkbox1" value="sent" checked>
    <input type="hidden" name="my_checkbox1" value="">
    <input type="checkbox" name="my_checkboxe2">
    <input type="hidden" name="my_checkbox2" value="">
</form>

现在,使用PHP,您只需确定值是sent还是值empty。如果值为sent,则会进行检查,否则将取消选中。