您好希望每个人都会好。我有个问题。
我有一个表单代码后的表单。
<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'].' '.$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值。
我认为你们现在会得到它。
答案 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
,则会进行检查,否则将取消选中。