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.