จะอ่านอย่างไรถ้ามีการทำเครื่องหมายในช่อง PHP?
จะอ่านอย่างไรถ้ามีการทำเครื่องหมายในช่อง PHP?
คำตอบ:
หากหน้า HTML ของคุณมีลักษณะดังนี้:
<input type="checkbox" name="test" value="value1">
หลังจากส่งแบบฟอร์มคุณสามารถตรวจสอบกับ:
isset($_POST['test'])
หรือ
if ($_POST['test'] == 'value1') ...
on
เมื่อตรวจสอบแล้ว ดังนั้นเพื่อความเข้ากันได้มันใช้งานง่ายisset($_POST['checkboxName'])
กว่า
value1
ถ้ามีการทำเครื่องหมายในช่องทำเครื่องหมาย หากไม่มีการตรวจสอบ$_POST['test']
จะไม่มีอยู่จริง
Zend Framework ใช้แฮ็คที่ดีในช่องทำเครื่องหมายซึ่งคุณสามารถทำเองได้:
ช่องทำเครื่องหมายทั้งหมดที่สร้างขึ้นจะเกี่ยวข้องกับเขตข้อมูลที่ซ่อนอยู่ในชื่อเดียวกันวางไว้ก่อนหน้าช่องทำเครื่องหมายและมีค่าเป็น "0" จากนั้นหากช่องทำเครื่องหมายของคุณเป็นค่า "1" คุณจะได้รับค่า '0' หรือ '1' เสมอใน GET หรือ POST ที่ได้
<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1">
input[type="checkbox"]
เดียว) เสมอ
เมื่อใช้ช่องทำเครื่องหมายเป็นอาร์เรย์:
<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(...
foreach ($_POST['food'] as $selected_food)
การทำงานในการตรวจสอบอย่างใดอย่างหนึ่งเป็นสิ่งที่ดีขอบคุณ
ให้ 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
}
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
ฉันใช้เคล็ดลับนี้มาหลายปีแล้วและทำงานได้อย่างสมบูรณ์แบบโดยไม่มีปัญหาใด ๆ กับสถานะช่องทำเครื่องหมายที่ถูกตรวจสอบ / ไม่ถูกตรวจสอบในขณะที่ใช้งานกับ PHP และฐานข้อมูล
รหัส HTML: (สำหรับเพิ่มหน้า)
<input name="status" type="checkbox" value="1" 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 สำหรับฐานข้อมูล
ในการตรวจสอบว่ามีการทำเครื่องหมายในช่องทำเครื่องหมายใช้เปล่า ()
เมื่อส่งแบบฟอร์มช่องทำเครื่องหมายจะถูกตั้งค่าเสมอเนื่องจากตัวแปรPOSTทั้งหมดจะถูกส่งพร้อมกับแบบฟอร์ม
ตรวจสอบว่าช่องทำเครื่องหมายถูกทำเครื่องหมายด้วยว่างเปล่าดังนี้:
//Check if checkbox is checked
if(!empty($_POST['checkbox'])){
#Checkbox selected code
} else {
#Checkbox not selected code
}
คุณสามารถตรวจสอบค่าที่สอดคล้องกันว่าถูกตั้งค่าและไม่ว่างเปล่าในอาร์เรย์ $ _POST หรือ $ _GET ขึ้นอยู่กับการกระทำของแบบฟอร์มของคุณ
ie: ด้วยฟอร์ม POST โดยใช้name
"test" (เช่น: <input type="checkbox" name="test">
คุณจะใช้:
if(isset($_POST['test']) {
// The checkbox was enabled...
}
เรียนรู้เกี่ยวกับisset
สิ่งที่เป็น "ฟังก์ชั่น" ในตัวที่สามารถใช้ในถ้าคำสั่งที่จะบอกว่าตัวแปรมีการใช้งานหรือการตั้งค่า
ตัวอย่าง:
if(isset($_POST["testvariabel"]))
{
echo "testvariabel has been set!";
}
ตัวอย่างข้างต้นใช้งานได้เฉพาะเมื่อคุณต้องการแทรกค่าไม่เป็นประโยชน์สำหรับการอัพเดทค่าที่แตกต่างไปยังคอลัมน์ต่าง ๆ ดังนั้นนี่คือเคล็ดลับเล็ก ๆ ของฉันในการอัปเดต:
//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 แต่ใช้กับทุกอย่าง
มีความสุข :)
คุณสามารถทำได้ด้วยตัวย่อหาก:
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
หรือด้วย PHP7 ใหม่ Null coalescing operator
$check_value = $_POST['my_checkbox_name'] ?? 0;
$is_checked = isset($_POST['your_checkbox_name']) &&
$_POST['your_checkbox_name'] == 'on';
การประเมินการลัดวงจรจะดูแลเพื่อให้คุณไม่สามารถเข้าถึงได้your_checkbox_name
เมื่อไม่ได้ส่ง
การตรวจสอบบูลีนแบบเรียบง่ายพร้อมการรักษาตำแหน่งสวิตช์
<?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>
ใน 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/
checked( mixed $checked, mixed $current = true, bool $echo = true )
คำอธิบายเปรียบเทียบสองข้อโต้แย้งแรกและถ้าเครื่องหมายเหมือนกันตามที่ตรวจสอบ
พารามิเตอร์ $ checked (ผสม) (จำเป็น) หนึ่งในค่าที่จะเปรียบเทียบ
$ current (Mixed) (เป็นทางเลือก) (จริง) ค่าอื่น ๆ ที่จะเปรียบเทียบหากไม่ใช่แค่ค่าจริงค่าเริ่มต้น: true
$ echo (bool) (เป็นทางเลือก) ไม่ว่าจะเป็น echo หรือเพียงแค่ส่งคืนค่าเริ่มต้น: จริง
ส่งคืนแอตทริบิวต์ html #Return (สตริง) หรือสตริงว่าง
<?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']);
}
?>