PHP에서 확인란이 선택되어 있는지 확인하는 방법은 무엇입니까?


266

PHP에서 확인란이 선택되어 있는지 확인하는 방법은 무엇입니까?


8
이 질문은 실제로 "을 의미 했다 (양식이 제출되었을 때) 확인". 체크 박스 체크되어 있는지 확인 하는 PHP 일단 요소가 토글되면 Ajax 호출이 필요합니다.
rybo111

답변:


342

HTML 페이지가 다음과 같은 경우 :

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

양식을 제출 한 후 다음을 확인하십시오.

isset($_POST['test'])

또는

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

57
체크 박스는 체크 될 on때 value를 가질 수도 있습니다 . 따라서 호환성을 위해 사용하는 것이 더 쉽습니다 isset($_POST['checkboxName']).
Damiqib

13
"on"값은 value 속성이 설정되지 않은 경우 일부 브라우저에서 지원 될 수 있지만 일반적으로 value 속성을 설정하고 제출시이를 확인하는 것이 좋습니다.
m_vitaly

3
확인란을 선택하면 'Value1'이 변경됩니까?
MoralCode

10
@Developer_ACE 내가 당신을 오해하지 않는 한,이 예제의 값 value1은 확인란이 선택된 경우입니다. 확인 $_POST['test']되지 않으면 단순히 존재하지 않습니다.
rybo111

104

젠드 프레임 워크는 체크 박스에 대한 훌륭한 해킹을 사용합니다.

생성 된 모든 확인란은 동일한 이름의 숨겨진 필드와 연결되며 확인란 바로 앞에 있으며 값은 "0"입니다. 그런 다음 확인란이 "1"값이면 결과 GET 또는 POST에서 항상 '0'또는 '1'값을 얻습니다.

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

나는 또한 그것에 대해 알아 차 렸지만 그것을 사용하는 것이 안전하다고 느꼈습니다. Zend Framework도 그렇게합니다!
hpaknia

이건 재미 있네. 그러나 확인란이 선택되어 있다고 가정하면 사용자 에이전트가 마지막 값 대신 첫 번째 값을 제출할 가능성이 있습니까?
rybo111

@ rybo111, 사용자 에이전트의 경우 그렇게 생각하지 않지만 사용자 정의 자바 스크립트 양식 파서는 조심해야합니다.
regilero

죄송합니다. 누군가 어떻게 작동하는지 설명해 주시겠습니까? 나는 이해하지 못했다. 마지막 값만 항상 제출되는 경우 해당 숨겨진 필드 (input[type="checkbox"] 됩니까?
tonix

6
확인란이 선택되어 있지 않으면 게시물에서 전송되지 않으므로 숨겨진 것만 전송됩니다. 확인되면 전송되고 숨겨진 값을 덮어 씁니다.
regilero

53

확인란을 배열로 사용하는 경우 :

<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)에서 작동하는 하나의 좋은, 덕분 확인
bcag2

42

확인란의 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
} 


6

나는 몇 년 동안이 트릭을 사용 해 왔으며 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;
}

힌트 : 사용자가 확인하지 않으면 항상 빈 값이 있습니다. 따라서 이미 코드를 잡아서 0을 유지하는 PHP 코드가 있습니다. 그런 다음 데이터베이스에 $ status 변수를 사용하십시오.


1
이것은 순수 간단한 PHP 에서이 작업을 수행하는 정말 좋은 형태입니다. 확인란을 선택하면 기존 값이 활성화 된 경우 확인란의 값이 문자열임을 유의해야합니다.
Elvis Technologies

4

확인란이 선택되어 있는지 확인하려면 empty ()

양식을 제출하면 모든 POST 변수가 양식과 함께 전송 되므로 확인란이 항상 설정 됩니다.

다음과 같이 확인란이 비어 있는지 확인하십시오.

//Check if checkbox is checked    
if(!empty($_POST['checkbox'])){
 #Checkbox selected code
} else {
 #Checkbox not selected code
}

3
확인란이 선택되어 있지 않으면 게시되지 않으므로 NOW (항상) 항상 설정됩니다.
Wessam El Mahdy

^ NOT * 항상 설정 됨
Code

3

양식의 조치에 따라 $ _POST 또는 $ _GET 배열에서 해당 값이 설정되어 있고 비어 있지 않은지 확인할 수 있습니다.

즉 : name"test"를 사용하는 POST 양식 (예 : <input type="checkbox" name="test">,

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

}

2

에 대한 학습 isset변수가 사용되었거나 설정되었는지 여부를 알리기 위해 if 문에서 사용할 수있는 내장 "함수"에

예:

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

2

위의 예제는 값을 삽입하려고 할 때만 작동하며 다른 열에 다른 값을 업데이트하는 데 유용하지 않으므로 업데이트해야 할 요령은 다음과 같습니다.


//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[]" />

....

비밀은 모든 VALUES를 먼저 업데이트하고 (이 경우 0으로) 확인 된 값만 보내므로 모든 것이 1로 설정되므로 모든 것이 1로 설정됩니다.

예는 PHP이지만 모든 것에 적용됩니다.

재미있게 보내세요 :)


2

다음과 같은 경우 짧게 할 수 있습니다.

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

또는 새로운 PHP7 Null coalescing operator

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

1
$is_checked = isset($_POST['your_checkbox_name']) &&
              $_POST['your_checkbox_name'] == 'on';

단락 평가your_checkbox_name제출되지 않았을 때 액세스 할 수 없도록주의를 기울 입니다.


1

스위치 위치를 유지하면서 최소한의 부울 검사

<?php

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

?>

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

1
답을 할 때 왜 답되는지에 대해 설명 하는 것이 좋습니다 . 이것은 매우 오래된 게시물 11 다른 답변에 답변 할 때 특히 그렇습니다 .
Stephen Rauch

확인란이 상태를 유지해야 할 필요성을 인식하는 것이 좋습니다. 그러나이를 수행하는 코드가 올바르지 않습니다.
Vern Jensen

1
<?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>

여기서 목표를 설명 할 수 있습니까?
Elvis Technologies

0

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'])


0

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


0

워드 프레스 checked()기능이 있습니다. 참조 : https://developer.wordpress.org/reference/functions/checked/

checked( mixed $checked, mixed $current = true, bool $echo = true )

설명 처음 두 인수를 비교하고 동일한 마크가 선택되어 있는지 비교합니다.

매개 변수 $ checked (mixed) (필수) 비교할 값 중 하나

$ current (mixed) (선택 사항) (true) true가 아닌 경우 비교할 다른 값 기본값 : true

$ echo (bool) (선택 사항) 문자열을 에코할지 또는 그냥 반환할지 여부 기본값 : true

반환 # 반환 (문자열) html 속성 또는 빈 문자열


-3
<?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']);
} 

?>

스택 오버플로에 오신 것을 환영합니다! 이 코드 스 니펫은 문제를 해결할 수 있지만 질문에 왜 또는 어떻게 대답하는지는 설명하지 않습니다. 제발 코드에 대한 설명을 포함 하는 정말 귀하의 게시물의 품질을 개선하는 데 도움으로. 앞으로 독자들에게 질문에 대한 답변을 제공하므로 해당 사람들이 코드 제안의 이유를 모를 수도 있습니다. 신고자 / 검토 자 : 이 답변과 같은 코드 전용 답변의 경우 공감하지 마십시오.
Scott Weldon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.