복붙노트

여러 개의 체크 박스에서 $ _POST 가져 오기

카테고리 없음

여러 개의 체크 박스에서 $ _POST 가져 오기

하나의 양식에 여러 체크 박스 (각 코드 포함)가 있습니다.

<input type="checkbox" name="check_list" value="<? echo $row['Report ID'] ?>">

where $ row [ 'Report ID']는 데이터베이스의 기본 키이므로 각 값이 다릅니다.

확인 된 체크 박스를 어떻게 알 수 있습니까? (아마 여러 개)

(컨텍스트 :) 해당받은 편지함 시스템 및 확인란을 선택한 모든 메시지 (ID를 : $ 행 [ '보고서 ID']) 삭제하려면 원하는 (아래의 단추를 클릭하면) ...

어떻게하면 좋을까요?

고마워요 ...

해결법

  1. ==============================

    1.

    폼의 이름을 check_list []로 설정하면 모든 체크 박스를 배열 ($ _ POST [ 'check_list'] [])로 액세스 할 수 있습니다.

    다음은 요청한 작은 샘플입니다.

    <form action="test.php" method="post">
        <input type="checkbox" name="check_list[]" value="value 1">
        <input type="checkbox" name="check_list[]" value="value 2">
        <input type="checkbox" name="check_list[]" value="value 3">
        <input type="checkbox" name="check_list[]" value="value 4">
        <input type="checkbox" name="check_list[]" value="value 5">
        <input type="submit" />
    </form>
    <?php
    if(!empty($_POST['check_list'])) {
        foreach($_POST['check_list'] as $check) {
                echo $check; //echoes the value set in the HTML form for each checked checkbox.
                             //so, if I were to check 1, 3, and 5 it would echo value 1, value 3, value 5.
                             //in your case, it would echo whatever $row['Report ID'] is equivalent to.
        }
    }
    ?>
    
  2. ==============================

    2.

    편집 @Marc이 아래의 코멘트에서 말한 것을 반영하십시오.

    게시 된 모든 값을 반복 할 수 있습니다.

    HTML :

    <input type="checkbox" name="check_list[]" value="<?=$rowid?>" />
    <input type="checkbox" name="check_list[]" value="<?=$rowid?>" />
    <input type="checkbox" name="check_list[]" value="<?=$rowid?>" />
    

    PHP :

    foreach($_POST['check_list'] as $item){
      // query to delete where item = $item
    }
    
  3. ==============================

    3.

    그에 따라 체크 박스의 이름을 지정해야합니다.

    <input type="checkbox" name="check_list[]" value="…" />
    

    다음으로 모든 체크 박스에 액세스 할 수 있습니다.

    // loop over checked checkboxes
    foreach($_POST['check_list'] as $checkbox) {
       // do something
    }
    

    추신. 출력 (htmlspecialchars ())을 제대로 벗어 났는지 확인하십시오.

  4. ==============================

    4.

    <input type="checkbox" name="check_list[<? echo $row['Report ID'] ?>]" value="<? echo $row['Report ID'] ?>">
    

    게시물 이후에 루프를 반복 할 수 있습니다.

       if(!empty($_POST['check_list'])){
         foreach($_POST['check_list'] as $report_id){
            echo "$report_id was checked! ";
         }
       }
    

    또는 이전 페이지에서 게시 된 특정 값 얻기 :

    if(isset($_POST['check_list'][$report_id])){
      echo $report_id . " was checked!<br/>";
    }
    
  5. ==============================

    5.

    죄송합니다. 오래된 주제이지만 @JamesRattray와 다른 사람들이 문제를 겪고있는 중요한 부분 중 하나입니다.

    PHP 스크립트에 여러 값을 올리려고 할 때 입력 태그를 자기 닫지 마십시오 (/> 사용). 태그를 자동으로 닫으면 배열 정의가 끝나고 제출시 스크립트에 게시되는 값은 하나뿐입니다. 사실상 @>의 응답은 />가 변경 될 때까지 작동하지 않을 수 있습니다.

    이것은 경고 원인 : / home1 / ...의 foreach ()에 잘못된 인수가 제공되는 경우입니다.이 경우 PHP 오류가 발생합니다.

    편집 : 아래의 의견에서 언급 한 바와 같이, 추가 연구는 이것이 DOCTYPE에 의존하고 있음을 암시합니다. XHTML에 대해 DOCTYPE을 설정하면 입력 태그를 닫아야합니다. DOCTYPE HTML5 세트가있는 경우 입력 태그가 닫히지 않아야합니다. 또한 사용자가 페이지를보고있는 브라우저와 코드에 지정된 DOCTYPE을 얼마나 잘 따르 느냐에 따라 이것이 결정될 수있는 가능성이 있습니다.

  6. ==============================

    6.

    꽤 간단합니다. 주의를 기울이면 곧바로 얻을 수 있습니다! :)

    html 배열을 만들어 php 배열로 보냅니다. 귀하의 HTML 코드는 다음과 같습니다 :

    <input type="checkbox" name="check_list[1]" alt="Checkbox" value="checked">
    <input type="checkbox" name="check_list[2]" alt="Checkbox" value="checked">
    <input type="checkbox" name="check_list[3]" alt="Checkbox" value="checked">
    

    [1] [2] [3]은 메시지의 ID입니다. 즉, $ 행 [ 'Report ID']을 해당 위치에 표시합니다.

    그런 다음 양식을 제출하면 PHP 배열은 다음과 같이 보입니다.

    print_r ($ check_list)

    [1] => 확인 됨 [3] => 확인 됨

    확인 된 항목과 확인되지 않은 항목에 따라

    이 시점에서 앞으로 나아갈 수 있다고 확신합니다.

  7. from https://stackoverflow.com/questions/4997252/get-post-from-multiple-checkboxes by cc-by-sa and MIT lisence