如何阅读,如果一个复选框被选中在PHP?

如何阅读,如果一个复选框被选中在PHP?

945489 次浏览

如果你的HTML页面是这样的:

<input type="checkbox" name="test" value="value1">

提交表单后,您可以检查它:

isset($_POST['test'])

if ($_POST['test'] == 'value1') ...

根据表单的操作,您可以在$_POST或$_GET数组中检查相应的值是否已设置且非空。

在POST表单中使用"test"的name(即:<input type="checkbox" name="test">,你会使用:

if(isset($_POST['test']) {
// The checkbox was enabled...


}

Zend框架在复选框上使用了一个不错的hack,你也可以自己做:

生成的每个复选框都与一个同名的隐藏字段相关联,位于复选框之前,值为“0”。然后,如果您的复选框为值“1”,则在结果get或POST中始终获得“0”或“1”值

<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1">

让你的html复选框将是这样的

<input type="checkbox" name="check1">

提交表单后,你需要检查

if (isset($_POST['check1'])) {


// Checkbox is selected
} else {


// Alternate code
}

假设check1应该是您的复选框名称。如果你的表单提交方法是GET,那么你需要检查$_GET变量,如

if (isset($_GET['check1'])) {


// Checkbox is selected
}

了解isset,它是一个内置的“函数”,可以在if语句中使用,以判断变量是否已被使用或设置

例子:

    if(isset($_POST["testvariabel"]))
{
echo "testvariabel has been set!";
}

好吧,上面的例子只适用于当你想要INSERT一个值时,对于更新不同的值到不同的列并不有用,所以这里是我的更新小技巧:


//EMPTY ALL VALUES TO 0
$queryMU ='UPDATE '.$db->dbprefix().'settings SET menu_news = 0, menu_gallery = 0, menu_events = 0, menu_contact = 0';
$stmtMU = $db->prepare($queryMU);
$stmtMU->execute();
if(!empty($_POST['check_menus'])) {
foreach($_POST['check_menus'] as $checkU) {
try {
//UPDATE only the values checked
$queryMU ='UPDATE '.$db->dbprefix().'settings SET '.$checkU.'= 1';
$stmtMU = $db->prepare($queryMU);
$stmtMU->execute();
} catch(PDOException $e) {
$msg = 'Error: ' . $e->getMessage();}


}
}
<input type="checkbox" value="menu_news" name="check_menus[]" />
<input type="checkbox" value="menu_gallery" name="check_menus[]" />

....

秘诀是首先更新所有的值(在本例中为0),由于只发送检查过的值,这意味着您得到的所有值都应该设置为1,所以您得到的所有值都设置为1。

例子是PHP,但适用于所有东西。

玩得开心!

当使用复选框作为数组时:

<input type="checkbox" name="food[]" value="Orange">
<input type="checkbox" name="food[]" value="Apple">

你应该使用in_array():

if(in_array('Orange', $_POST['food'])){
echo 'Orange was checked!';
}

记得先检查数组是否被设置,例如:

if(isset($_POST['food']) && in_array(...

要检查复选框是否被选中,请使用空()

当表单提交时,复选框将设置总是,因为所有< em > < / em >后变量将随表单一起发送。

检查复选框是否选中为空,如下所示:

//Check if checkbox is checked
if(!empty($_POST['checkbox'])){
#Checkbox selected code
} else {
#Checkbox not selected code
}
$is_checked = isset($_POST['your_checkbox_name']) &&
$_POST['your_checkbox_name'] == 'on';

短路评估会注意,这样你就不会在your_checkbox_name未被提交时访问它。

$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
<?php


if(isset($_POST['nameCheckbox'])){
$_SESSION['fr_nameCheckbox'] = true;
}


?>


<input type="checkbox" name="nameCheckbox"


<?php


if(isset($_SESSION['fr_nameCheckbox'])){
echo 'checked';
unset($_SESSION['fr_nameCheckbox']);
}


?>

一个极简的布尔检查开关位置保留

<?php


$checked = ($_POST['foo'] == ' checked');


?>


<input type="checkbox" name="foo" value=" checked"<?=$_POST['foo']?>>

你可以用简短的if来表达:

$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;

或者使用新的PHP7 Null coalescing operator

$check_value = $_POST['my_checkbox_name'] ?? 0;

我已经使用这个技巧好几年了,它在PHP和数据库中使用时,对于选中/未选中的复选框状态完全没有任何问题。

HTML代码:(用于添加页面)

<input name="status" type="checkbox" value="1" checked>

提示:如果你想在默认情况下将checked显示为未选中,则删除它

HTML代码:(用于编辑页面)

<input name="status" type="checkbox" value="1"
<?php if ($row['status'] == 1) { echo "checked='checked'"; } ?>>

PHP代码:(用于添加/编辑页面)

$status = $_POST['status'];
if ($status == 1) {
$status = 1;
} else {
$status = 0;
}

提示:除非用户选中它,否则将总是空值。我们已经有PHP代码来捕获它,否则保持值为0。然后,简单地使用$status变量为数据库。

<?php


if (isset($_POST['add'])) {


$nama      = $_POST['name'];
$subscribe = isset($_POST['subscribe']) ? $_POST['subscribe'] : "Not Checked";


echo "Name: {$nama} <br />";
echo "Subscribe: {$subscribe}";


echo "<hr />";


}


?>


<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST" >


<input type="text" name="name" /> <br />
<input type="checkbox" name="subscribe" value="news" /> News <br />


<input type="submit" name="add" value="Save" />


</form>

在BS3中

  <?php
$checked="hola";
$exenta = $datosOrdenCompra[0]['exenta'];
var_dump($datosOrdenCompra[0]['exenta']);
if(isset($datosOrdenCompra[0]['exenta']) and $datosOrdenCompra[0]['exenta'] == 1){


$checked="on";


}else{
$checked="off";
}


?>
<input type="checkbox" id="exenta" name="exenta" <?php echo $checked;?> > <span class="label-text"> Exenta</span>

请注意 isset($datosOrdenCompra[0]['exenta'])的用法

filter_input(INPUT_POST, 'checkbox_name', FILTER_DEFAULT, FILTER_FORCE_ARRAY)

Wordpress有checked()函数。 参考:https://developer.wordpress.org/reference/functions/checked/ < / p >
checked( mixed $checked, mixed $current = true, bool $echo = true )
< p >描述 比较前两个参数,如果相同则标记为选中

< p >参数 美元的检查 (mixed)(必选)要比较的值之一

< p >当前美元 (混合)(可选)(true)如果不是true,要比较的另一个值 默认值:true

< p >美元的回声 (可选)是否返回或返回该字符串 默认值:true

< p >返回#返回 (string) HTML属性或空字符串

<form>
<input type="check" id=chk1 value="1">
<input type="check" id=chk2 value="1">
<input type="check" id=chk3 value="1">
</form>

当你检查chk2时,你可以看到如下值:

<?php
foreach($_POST as $key=>$value)
{
if(isset($key))
$$key=strip_tags($value);
}
insert into table (chk1,chk2,chk3) values ('','1','');
?>

你应该给你的输入命名。 然后点击哪个框,你将在你的选择方法

中收到'on'
Array
(
[shch] => on
[foch] => on
[ins_id] => #
[ins_start] => شروع گفتگو
[ins_time] => ما معمولاً در چند دقیقه پاسخ میدهیم
[ins_sound] => https://.../media/sounds/ding-sound-effect_2.mp3
[ins_message] => سلام % به کمک نیاز دارید؟
[clickgen] =>
)

我的表单名中有两个复选框分别是shch和foch

我已经把它固定成一个带有复选框的PHP表单

$categories = get_terms(['taxonomy' =>'product_cat', 'hide_empty' =>假); Foreach ($categories为$ categororie) { Echo "<输入类型="美元价值=“categorie→term_taxonomy_id"name =“catselected[]“比;美元categorie→slug"; } < / p >

这样我将它添加到Woocommerce表。

. wp_set_post_terms($product_id, $_POST['catselected'], 'product_cat')