2012-06-06 3 views
0

텍스트 필드와 체크 박스가 두 개인 매우 간단한 폼이 있습니다. 양식은 두 확인란이 모두 선택된 경우를 제외하고는 첫 번째 확인란 만 데이터베이스에 추가됩니다.모든 체크 박스 값을 PHP로 MySQL에 제출하십시오.

지금까지이있다 : 입력이 이름을 공유 할 때 그 이름은 문자 []에 종료되지 않는 한

<?php require_once('connectionsettings.php'); ?> 
<?php 
if (!function_exists("GetSQLValueString")) { 
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{ 
. . . 

$editFormAction = $_SERVER['PHP_SELF']; 
if (isset($_SERVER['QUERY_STRING'])) { 
    $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']); 
} 
    # ------------ edit begins here ------------ # 
    if(count($articletags) > 0) 
    { 
     $articletags_string = implode(",", $articletags); 
    } 
    # ------------ edit ends here ------------ # 

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) { 
    $insertSQL = sprintf("INSERT INTO articles (articletitle, articledescription, articletags) VALUES (%s, %s, %s)", 
        GetSQLValueString($_POST['articletitle'], "text"), 
        GetSQLValueString($_POST['articledescription'], "text"), 
        GetSQLValueString($_POST['articletags[]'], "text")); # --Edited here also 

mysql_select_db($database_MySQL_CSFTDB, $MySQL_CSFTDB); 
$Result1 = mysql_query($insertSQL, $MySQL_CSFTDB) or die(mysql_error()); 
} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
. . . 
    <form action="<?php echo $editFormAction; ?>" id="form1" name="form1" method="POST"> 
    . . . 
     <tr> 
     <td align="right">&nbsp;</td> 
     <td align="left"><p> 
      <label> # -- added []s to article name -- 
      <input type="checkbox" name="articletags[]" value="checkbox" id="articletags_0" /> 
      Checkbox</label> 
     <br /> 
     <label> 
      <input type="checkbox" name="articletags[]" value="checkbox 2" id="articletags_1" /> 
      Checkbox</label> 
     <br /> 
     <br /> 
     </p></td> 
    </tr> 
     . . . 
</body> 
</html> 

답변

2
Use checkbox as array so it can store multiple value. 

<input type="checkbox" name="articletags[]" value="checkbox" id="articletags_0" /> 
<input type="checkbox" name="articletags[]" value="checkbox 2" id="articletags_1" /> 



$articletags = $_POST['articletags']; 

값을 db에 삽입하기 전에 배열을 문자열로 변환하십시오. DB에서

if(count($articletags) > 0) 
{ 
$articletags_string = implode(",", $articletags); 
} 

삽입 새로운 가치 ...

+0

Pramond - 난 당신이 제안 편집을 시도했지만, 지금은 기사 태그 칼럼에 null 항목을받을 수 있습니다. 나는 어느 부분을 망 쳤니? 추가 또는 수정 한 부분을 표시하는 주석을 추가했습니다. – Zrb0529

+0

정말 짧고 달콤한 방법으로 직렬화를 구현합니다. –

1

, PHP는 멀리 모든 그들 중 하나지만 발생합니다.

name="articletags[]" (또는 $_POST을 우회하여 원시 양식 데이터에 액세스)로 변경하십시오.

또한 articletags가 정의되어 있는지 확인하는 대신 배열의 값을 반복 할 수 있도록 SQL을 작성하기위한 논리를 변경해야합니다.

0

두 개의 체크 박스에 모두 같은 이름을 사용하고 있습니다. 이름을 PHP와 구별 할 수 있도록 변경하십시오. 이 같은

뭔가 : 당신이 두 확인란에 대해 같은 이름을 사용하고 beacuse

<label> 
      <input type="checkbox" name="articletags_0" value="checkbox" id="articletags_0" /> 
      Checkbox</label> 
      <br /> 
     <label> 
      <input type="checkbox" name="articletags_1" value="checkbox 2" id="articletags_1" /> 
      Checkbox</label> 
2

이다.

당신은 다른 이름을 제공하거나 배열 이름 서버에 배열로 전송됩니다

<input type="checkbox" name="articletags[]" value="checkbox" id="articletags_0" /> 
<input type="checkbox" name="articletags[]" value="checkbox 2" id="articletags_1" /> 

를 사용할 수 있습니다.

$articletags=$_POST['articletags'] 
print_r($articletags) 
0

단일 값이 필요하면 체크 상자와 라디오 버튼에서 동일한 이름을 사용합니다. 귀하의 질문에, 당신은 아마 다른 이름이나 배열을 사용하고 있다는 것을 의미하는 두 값을 원합니다.

관련 문제