Làm thế nào để đọc nếu một hộp kiểm được kiểm tra trong PHP?Làm thế nào để đọc nếu một hộp kiểm được kiểm tra trong PHP?
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 nộp đơn, bạn có thể kiểm tra xem nó với:
isset($_POST['test'])
hoặc
if ($_POST['test'] == 'value1') ...
Bạn có thể kiểm tra giá trị tương ứng như đượ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.
ví dụ: Với một hình thức POST sử dụng một name
của "test" (ví dụ: <input type="checkbox" name="test">
, bạn muốn sử dụng:
if(isset($_POST['test']) {
// The checkbox was enabled...
}
Zend Framework sử dụng một hack thoải mái trên hộp kiểm, mà bạn cũng có thể tự làm:
Mỗi hộp kiểm được tạo sẽ được liên kết với trường bị ẩn cùng tên, được đặt ngay trước hộp kiểm và với giá trị là "0". 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">
Tôi cũng nhận thấy về điều đó, nhưng tôi cảm thấy an toàn khi sử dụng nó: Zend Framework cũng vậy! – HPM
Điều này thật thú vị. Nhưng có khả năng nhỏ nào mà tác nhân người dùng có thể gửi giá trị đầu tiên thay vì giá trị cuối cùng, giả sử hộp kiểm được chọn không? – rybo111
@ rybo111, đối với tác nhân người dùng, tôi không nghĩ như vậy, nhưng đối với trình phân tích cú pháp biểu mẫu javascript tùy chỉnh, bạn nên cẩn thận. – regilero
Hãy html của bạn cho hộp kiểm của bạn sẽ như thế nào
<input type="checkbox" name="check1">
Sau đó, sau khi gửi mẫu của bạn, bạn cần phải kiểm tra như
if (isset($_POST['check1'])) {
// Checkbox is selected
} else {
// Alternate code
}
Giả sử rằng check1
nên hộp kiểm của bạn name.And nếu mẫu của bạn phương thức gửi là GET
thì bạn cần phải kiểm tra với các biến số $_GET
như
if (isset($_GET['check1'])) {
// Checkbox is selected
}
Đó là một hình đại diện khá đẹp. –
Tìm hiểu về isset
được tích hợp sẵn trong "chức năng" có thể được sử dụng trong câu lệnh if cho biết nếu một biến đã được sử dụng hoặc thiết lập
Ví dụ:
if(isset($_POST["testvariabel"]))
{
echo "testvariabel has been set!";
}
Vâng, các ví dụ trên chỉ làm việc khi bạn muốn chèn một giá trị, không hữu ích cho CẬP NHẬT giá trị khác nhau vào 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ỉ cập nhật tất cả VALUES trước (trong trường hợp này là 0) và vì sẽ chỉ gửi giá trị đã chọn, có nghĩa là mọi thứ bạn cần phải được đặt thành 1, vì vậy mọi thứ bạn nhận được đặt nó thành 1.
Ví dụ là PHP nhưng áp dụng cho mọi thứ.
Hãy vui vẻ :)
Khi sử dụng hộp kiểm ở dạng array:
<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!';
}
Nhớ kiểm tra mảng được thiết lập đầu tiên, chẳng hạn như:
if(isset($_POST['food']) && in_array(...
Rất cám ơn, đã tìm kiếm chính xác điều này! – Telion
Để kiểm tra xem một hộp kiểm được kiểm tra sử dụng rỗng()
Khi một mẫu được gửi, hộp kiểm sẽ LUÔN được thiết lập, vì TẤT CẢ POST biến sẽ được gửi với biểu mẫu.
Kiểm tra xem 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
}
$is_checked = isset($_POST['your_checkbox_name']) &&
$_POST['your_checkbox_name'] == 'on';
Short circuit evaluation sẽ chăm sóc để bạn không truy cập your_checkbox_name
khi nó không được nộp.
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
rất nhanh và rất thông minh –
<?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']);
}
?>
Chào mừng bạn đến với Stack Overflow! Mặc dù đoạn mã này có thể giải quyết được sự cố, nhưng nó không giải thích tại sao hoặc cách nó trả lời câu hỏi. Vui lòng [đưa ra giải thích cho mã của bạn] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers), vì điều đó thực sự giúp cải thiện chất lượng bài đăng của bạn. Hãy nhớ rằng bạn đang trả lời câu hỏi cho người đọc trong tương lai và những người đó có thể không biết lý do cho đề xuất mã của bạn. ** Người đánh cờ/người đánh giá: ** [Đối với các câu trả lời chỉ có mã như câu trả lời này, bạn không nên xóa!] (// meta.stackoverflow.com/a/260413/2747593) –
Một tấm séc boolean Minimalistic với vị trí công tắc giữ
<?php
$checked = ($_POST['foo'] == ' checked');
?>
<input type="checkbox" name="foo" value=" checked"<?=$_POST['foo']?>>
Khi đưa ra câu trả lời, câu trả lời là thích hợp hơn để cung cấp cho [một số giải thích là tại sao câu trả lời của bạn] (http://stackoverflow.com/help/how-to-answer) là một. Điều này đặc biệt đúng khi trả lời một câu trả lời khác của * VERY * 11 câu trả lời khác. –
Thật tuyệt khi bạn nhận ra sự cần thiết của hộp kiểm để giữ lại trạng thái của nó. Tuy nhiên, mã của bạn để làm điều này là không chính xác. –
Bạn có thể làm điều đó với thời gian ngắn nếu:
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
hoặc qua các nhân PHP7 mới Null coalescing operator
$check_value = $_POST['my_checkbox_name'] ?? 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 bất kỳ vấn đề nào đối với tình trạng kiểm tra/bỏ chọn trong khi sử dụng với PHP và Cơ sở dữ liệu.
MãHTML: (ví Add Trang)
<input name="status" type="checkbox" value="1" checked>
Gợi ý: loại bỏ "checkbox" nếu bạn muốn hiển thị nó như không được kiểm soát theo mặc định
HTML Code: (ví Edit Page)
<input name="status" type="checkbox" value="1"
<?php if ($row['status'] == 1) { echo "checked='checked'"; } ?>>
PHP Code: (sử dụng cho Add/Edit trang)
$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 đã chọn nó. Vì vậy, chúng tôi đã có mã PHP để bắt nó khác giữ giá trị là 0. Sau đó, chỉ cần sử dụng biến $ status cho cơ sở dữ liệu.
<?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>
- 1. kiểm tra jquery nếu hộp kiểm asp được kiểm tra
- 2. Kiểm tra nếu hộp kiểm đã được kiểm tra trên tải sử dụng jQuery
- 3. Kiểm tra nếu một nút radio được kiểm tra jquery
- 4. Thuộc tính kiểm tra hộp kiểm Ngọc không được kiểm soát dựa trên điều kiện (nếu)
- 5. Các phần tử hộp kiểm HTML chỉ được gửi nếu chúng được kiểm tra?
- 6. Làm thế nào để chọn trước hộp kiểm trong angularJs với ng-kiểm tra
- 7. Làm thế nào để tránh nhiều nếu kiểm tra vô
- 8. Django: Làm thế nào để kiểm tra xem widget trường là hộp kiểm trong mẫu?
- 9. Kiểm tra xem hộp kiểm có được chọn với jQuery
- 10. Làm cách nào để xem hộp kiểm nào được chọn?
- 11. Kiểm tra nếu một mảng chứa một mảng với PHP
- 12. jQuery. Làm thế nào để bỏ chọn tất cả các hộp kiểm trừ một (được kiểm tra)
- 13. Mặc định kiểm tra một hộp kiểm
- 14. Làm thế nào để kiểm tra nếu một phím bổ trợ được nhấn (shift, ctrl, alt)?
- 15. Mặc định kiểm tra hộp kiểm html
- 16. PHP kiểm tra hộp kiểm sau khi gửi mẫu
- 17. Kiểm tra nếu kiểm soát là Textbox trong TabControl
- 18. Nhận Hộp kiểm được Kiểm tra Mặc định trong CQ5
- 19. Làm thế nào để thêm một hộp văn bản bên trong hộp kiểm trong C#?
- 20. Kiểm tra nếu một biến được xác định trong javascript?
- 21. Kiểm tra nếu lớp có phương pháp trong PHP
- 22. Làm thế nào để có được kích thước của kiểm tra và khoảng cách trong hộp kiểm?
- 23. Làm cách nào để xác minh xem hộp kiểm có được kiểm tra trong một Delphi TTaskDialog không?
- 24. jQuery nếu hộp kiểm được chọn
- 25. Làm cách nào để tạo hộp kiểm tra mà không cần gửi trong PHP?
- 26. Làm thế nào để kiểm tra trong MATLAB nếu một vector chỉ chứa số không?
- 27. Kiểm tra xem hộp kiểm 'này' có được kiểm tra là
- 28. PHP Kiểm tra NULL
- 29. Cách đếm số hộp kiểm đã được kiểm tra
- 30. Làm thế nào để kiểm tra một DLL nếu một hàm tồn tại?
Hộp kiểm cũng có thể có giá trị 'on', khi chúng được chọn. Do đó, tính tương thích sẽ dễ dàng hơn khi sử dụng 'isset ($ _ POST ['checkboxName'])'. – Damiqib
Giá trị "bật" có thể được hỗ trợ bởi một số trình duyệt khi thuộc tính giá trị không được đặt, nhưng nói chung tốt hơn là đặt thuộc tính giá trị và để kiểm tra giá trị đó khi gửi. –
Liệu 'Value1' có thay đổi nếu hộp được chọn không? – DeveloperACE