【问题标题】:Update table on base of checkboxes,基于复选框更新表格,
【发布时间】:2014-10-20 12:34:44
【问题描述】:

你好希望每个人都很好。我有个问题。

我有一个遵循表单代码的表单。

<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,并将其对应的记录更新为值为 1 的数据库表。因此,当我提交表单时,我希望未选中的复选框值为 0。并更新它们的相应记录在值为 0 的数据库表中。
  • 意味着我有 10 条用户记录。每条记录都有它们的 UserId 和名称。对于每条记录,我都有两个复选框,如代码所示。所以当我随机选中 7 个复选框时,我总共需要 20 个复选框。所以这七个对应的记录将在数据库表中更新为 1 个值。数据库表中对应记录的其他 13 个未选中复选框应更新为 0 值。

标签: php mysql forms


【解决方案1】:

好的,这实际上很简单。从基本形式开始:

<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只会通过checked复选框。所以,请记住这一点。

解决此潜在问题的一种方法是为您拥有的每个复选框添加一个隐藏输入,因此您的论坛可能会变为如下所示(注意:从 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,则勾选,否则不勾选。

【讨论】:

  • 是的,我知道我们只能传递选中的复选框值。但我的问题是。我想要两个。就像你给我一个例子。我检查了第一个复选框并得到了它的值,例如 1。所以这次我想要另外两个复选框值为 0。因为这将使用与值为 0 的复选框同名的隐藏输入字段来完成?
  • 复选框没有限制。这取决于我的 sql 查询,它有多少记录在说谎。
  • @MuhammadAtiq 不管你有多少。只需使用 PHP 来动态创建复选框。我上面给出的解决方案解决您最初的问题。
  • 例如,如果我选中了五个复选框,那么在数组中我会得到五个复选框值。和 10 个隐藏字段值。我很困惑你能检查我上面的代码吗?当我打印 Post 数组时。它给了我 10 个用户记录和 15 个复选框 1 的记录。如果选中了五个复选框。那么我如何将 15 个 checkbox1 数组与 10 个用户记录匹配。
  • 你说每个复选框都有唯一的名字?并且它们的交叉隐藏字段有唯一的名称?
猜你喜欢
  • 2023-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多