2011-05-01 15 views
0

다중 체크 박스 폼의 결과를 mysql 테이블에 저장하는 더 좋은 방법은 알고 싶습니다.muliple checkbox 결과를 mysql 테이블에 저장하는 방법

나는 두 가지 솔루션을 볼 수 있지만 아마도 직렬화 데이터를 모든 체크 박스에 대한 체크 박스에 의해 다른

- 하나의 필드

- 하나의 필드가 있습니다

들으

답변

2

그냥 자신을 위해 말하기 : 처음에 열당 하나씩 저장하는 데 문제가 생긴다면 저장된 체크 박스 값을 나중에 쿼리하는 것이 훨씬 쉽습니다. 물론 YMMV.

값을 열마다 하나씩 저장하면 테이블을 디자인 할 때의 주요 목표 중 하나 인 값이 정규화됩니다.

2
  • 확인란이 하나의 입력란은 분명히 가고 싶지 않습니다. 다른 곳보다 문제가 많습니다.

  • 결과를 동일한 테이블에 저장할 필요가있는 경우 해당 값을 기반으로 SQL 쿼리를 만들 수 없다는 것을 알고있는 한 직렬화가 가장 좋습니다.

  • NxN 테이블을 생성하고 가능한 원래의 테이블을 다른 테이블에 연결하여 가능한 체크 박스 값 목록을 얻을 수있는 가장 좋은 방법은 다음과 같습니다. 이 경우에 권장되는 정규화이기도합니다.

+0

이 * 흥미 - 180 드에 의해 분리 된 두개의 의견 grees. 왜 그 (또는 누군가)가 그 체크 박스 값을 쿼리하고 싶지 않다고 생각하십니까? DB에 값을 넣을 이유가 하나 있지 않습니까? 그냥 그렇게 *** *** 쿼리 수 있습니까? 즉, 쿼리되지 않을 경우 DB 테이블에 저장하는 것이 왜 불편합니까? –

2

나는 Vitor Mello와 동의하며, 각 확인란이 특별한 필드에 매핑되는 테이블을 만듭니다. 이것은 오버 헤드가 많지 않으므로 문제를 해결하십시오.

또한이 답변을 서버에 다시 게시하는 데 양식을 사용하고 있다고 생각하십니까?

그래서 여기 경우 팁입니다 :

당신은 서버 측 PHP 페이지에 확인란을 포함하는 양식을 게시 할 때, 당신과 같이 설정 확인란의 확인 :

HTML :

<form> 
<input type="checkbox" name="chk1" /> 
<input type="checkbox" name="chk2" /> 
<input type="submit" name="myChkSubmit" /> 
</form> 

PHP 포스트 백 핸들러를

<?php 

//Correct way to retrieve your checkboxes 

$chk1 = FALSE; 
$chk2 = FALSE; 

if(isset($_POST['chk1'])) 
{ 
    $chk1 = TRUE; 
} 

if(isset($_POST['chk2'])) 
{ 
    $chk2 = TRUE; 
} 

//WRONG WAY 

$chk1 = FALSE; 
$chk2 = FALSE; 

if(isset($_POST['chk1'])) 
{ 
    $chk1 = $_POST['chk1']; //This will always evaluate to "undefined" 
} 

if(isset($_POST['chk2'])) 
{ 
    $chk2 = $_POST['chk2']; //This will always evaluate to "undefined" 
} 

//NOTE: the reason the above example is incorrect is because the form will indicate checked 
//  status of a check box by setting the POST array element, but does not set a value 
//  for that element. If the element is set in POST it was checked, if it is not set, 
//  it will not be a recognized index in the POST array. 
관련 문제