2011-10-03 5 views
0

행을 체크 박스 그룹으로 출력하고 체크 된 항목의 ID를 기반으로 데이터베이스에 삽입하는 방법은 무엇입니까?체크 박스 그룹 MYSQL 달성 가능 다중 삽입?

그래서 사용자가 1,2,3,4,5를 확인하고 1,2,3,4,5의 ID를 myTable에 삽입합니다. 나는 오직 1 개 $ 인 myVariable 처리 한

+0

당신이 당신의 질문을 명확히 수 있을까? 그리고 사용자가 3을 확인하지 않은 경우 왜 테이블에 3을 삽입합니까? – itsmeee

+0

예, 가능합니다. – Mob

답변

1

MySQL은 확장 삽입 구문이 있습니다 .. 지금까지 삽입합니다. 당신의 체크 박스 값을 가정하면 정규화 된 테이블에 저장됩니다, 당신은 당신이 지정하는 각 값에 대해 yourtable에 새 레코드를 생성 할 것이다

INSERT INTO yourtable (checkboxID) VALUES ($id1), ($id2), ($id3), etc... 

같은 것을 사용하십시오. 같은 방식으로 값 집합을 삽입 할 수 있습니다 :

INSERT .... VALUES ($x, $y), ($a, $b), ($c, $d) etc... 

당신이 그들 주위에 괄호가 필요로 확장 삽입 작동하려면, 값의 목록에 자신을 구축해야 할 것이다. 단순히 INSERT .... implode($_POST['checkboxes'] 유형의 것을 할 수는 없습니다.

이제 쉼표로 구분 된 ID 목록을 DB의 단일 필드/레코드에 삽입하려면 사용자가 쉼표로 구분 한 ID 목록을 DB에 삽입하려면 강력히 권장합니다. 데이터베이스를 표준화하고 해당 값에 대한 하위 테이블을 만듭니다.

+0

ID는 ID가있는 연결 테이블에 삽입됩니다. 기본적으로 Foo에 속한 ID의 목록입니다. 따라서 그들은 Foo를 선택하고 Foo에 추가 할 값을 선택합니다. ID의 값은 Foo ID가 삽입 된 연결 테이블에 저장됩니다 ... 그래서 나는 선택된 모든 값에 Foo의 ID를 추가하려고합니다. – SMacFadyen

1

확인란의 이름을 배열로 지정한 다음 각 색인이 선택되어 있는지 제출 여부를 확인하십시오. 예를 들어

:

<input type='checkbox' name=content[] value='1'>1 
<input type='checkbox' name=content[] value='2'>2 
<input type='checkbox' name=content[] value='3'>3 

PHP :

foreach($_POST['content'] as $record) 
{ 
    // insert query 
} 
+0

'$ record'가 항상 설정되므로'isset()'으로 확인할 필요가 없습니다. – hakre

+0

네, 맞습니다. 나는 항상 조건을 점검하는 것에 대해 신중하다 : p –

+0

그러나 12345를 삽입하지 않을 것인가? 별도의 행이 필요합니다. – SMacFadyen