Câu trả lời:
Nếu trang HTML của bạn trông như thế này:
<input type="checkbox" name="test" value="value1">
Sau khi gửi biểu mẫu, bạn có thể kiểm tra nó với:
isset($_POST['test'])
hoặc là
if ($_POST['test'] == 'value1') ...
on
, khi chúng được kiểm tra. Do đó, để tương thích, nó dễ sử dụng hơn isset($_POST['checkboxName'])
.
value1
nếu hộp kiểm được chọn. Nếu nó không được kiểm tra, $_POST['test']
đơn giản là không tồn tại.
Zend Framework sử dụng một bản hack đẹp mắt trên các hộp kiểm, bạn cũng có thể tự làm:
Mỗi hộp kiểm được tạo được liên kết với một trường ẩn cùng tên, được đặt ngay trước hộp kiểm và có giá trị là "0". Sau đó, nếu hộp kiểm của bạn là giá trị "1", bạn sẽ luôn nhận được giá trị '0' hoặc '1' trong kết quả GET hoặc POST
<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1">
input[type="checkbox"]
)?
Khi sử dụng các hộp kiểm dưới dạng một mảng:
<input type="checkbox" name="food[]" value="Orange">
<input type="checkbox" name="food[]" value="Apple">
Bạn nên sử dụng in_array()
:
if(in_array('Orange', $_POST['food'])){
echo 'Orange was checked!';
}
Hãy nhớ kiểm tra mảng được đặt trước, chẳng hạn như:
if(isset($_POST['food']) && in_array(...
foreach ($_POST['food'] as $selected_food)
để làm việc trên một kiểm tra là tốt, cảm ơn
Hãy để html cho hộp kiểm của bạn sẽ như thế nào
<input type="checkbox" name="check1">
Sau đó, sau khi gửi biểu mẫu của bạn, bạn cần kiểm tra như
if (isset($_POST['check1'])) {
// Checkbox is selected
} else {
// Alternate code
}
Giả sử đó check1
phải là tên hộp kiểm của bạn. Và nếu phương thức gửi biểu mẫu của bạn GET
thì bạn cần kiểm tra với $_GET
các biến như
if (isset($_GET['check1'])) {
// Checkbox is selected
}
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
Tôi đã sử dụng thủ thuật này trong vài năm và nó hoạt động hoàn hảo mà không gặp vấn đề gì đối với trạng thái hộp kiểm tra / không được kiểm tra trong khi sử dụng với PHP và Cơ sở dữ liệu.
Mã HTML: (cho Thêm trang)
<input name="status" type="checkbox" value="1" checked>
Gợi ý: xóa "hộp kiểm" nếu bạn muốn hiển thị nó là không được chọn theo mặc định
Mã HTML: (cho Trang chỉnh sửa)
<input name="status" type="checkbox" value="1"
<?php if ($row['status'] == 1) { echo "checked='checked'"; } ?>>
Mã PHP: (sử dụng cho các trang Thêm / Chỉnh sửa)
$status = $_POST['status'];
if ($status == 1) {
$status = 1;
} else {
$status = 0;
}
Gợi ý: Sẽ luôn có giá trị trống trừ khi người dùng kiểm tra nó. Vì vậy, chúng ta đã có mã PHP để bắt nó khác giữ giá trị về 0. Sau đó, chỉ cần sử dụng biến $ status cho cơ sở dữ liệu.
Để kiểm tra nếu một hộp kiểm tra được kiểm tra sử dụng khoảng trống ()
Khi biểu mẫu được gửi, hộp kiểm sẽ LUÔN được đặt, vì TẤT CẢ BÀI ĐĂNG các biến sẽ được gửi cùng với biểu mẫu.
Kiểm tra nếu hộp kiểm được kiểm tra với trống như sau:
//Check if checkbox is checked
if(!empty($_POST['checkbox'])){
#Checkbox selected code
} else {
#Checkbox not selected code
}
Bạn có thể kiểm tra giá trị tương ứng là được đặt và không trống trong mảng $ _POST hoặc $ _GET tùy thuộc vào hành động của biểu mẫu của bạn.
tức là: Với dạng POST sử dụng name
"test" (nghĩa là : <input type="checkbox" name="test">
, bạn sẽ sử dụng:
if(isset($_POST['test']) {
// The checkbox was enabled...
}
Tìm hiểu về isset
"hàm" tích hợp nào có thể được sử dụng trong câu lệnh if để biết nếu một biến đã được sử dụng hoặc được đặt
Thí dụ:
if(isset($_POST["testvariabel"]))
{
echo "testvariabel has been set!";
}
Chà, các ví dụ trên chỉ hoạt động khi bạn muốn XÁC NHẬN một giá trị, không hữu ích để CẬP NHẬT các giá trị khác nhau cho các cột khác nhau, vì vậy đây là mẹo nhỏ của tôi để cập nhật:
//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[]" />
....
Bí mật chỉ là cập nhật tất cả GIÁ TRỊ trước tiên (trong trường hợp này là 0) và vì sẽ chỉ gửi các giá trị đã kiểm tra, điều đó có nghĩa là mọi thứ bạn nhận được nên được đặt thành 1, vì vậy mọi thứ bạn nhận được đều được đặt thành 1.
Ví dụ là PHP nhưng áp dụng cho mọi thứ.
Chúc vui vẻ :)
$is_checked = isset($_POST['your_checkbox_name']) &&
$_POST['your_checkbox_name'] == 'on';
Đánh giá ngắn mạch sẽ cẩn thận để bạn không truy cập your_checkbox_name
khi nó không được gửi.
Một kiểm tra boolean tối giản với giữ vị trí chuyển đổi
<?php
$checked = ($_POST['foo'] == ' checked');
?>
<input type="checkbox" name="foo" value=" checked"<?=$_POST['foo']?>>
<?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>
trong BS3 bạn có thể đặt
<?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>
Xin lưu ý việc sử dụngisset($datosOrdenCompra[0]['exenta'])
Wordpress có checked()
chức năng. Tham khảo: https://developer.wordpress.org/reference/fifts/checked/
checked( mixed $checked, mixed $current = true, bool $echo = true )
Mô tả So sánh hai đối số đầu tiên và nếu các dấu giống hệt nhau được chọn
Tham số $ đã kiểm tra (hỗn hợp) (Bắt buộc) Một trong các giá trị để so sánh
$ current (hỗn hợp) (Tùy chọn) (true) Giá trị khác để so sánh nếu không chỉ đúng Giá trị mặc định: true
$ echo (bool) (Tùy chọn) Có lặp lại hay chỉ trả về chuỗi Giá trị mặc định: true
Trả về thuộc tính html #Return (chuỗi) hoặc chuỗi rỗng
<?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']);
}
?>