2009-08-19 5 views
2

저는 PHP를 처음 사용하고 PHP와 MySQL을 사용하여 기본 CMS를 만들고 있습니다. 내 HTML 페이지의 확인란 정보를 데이터베이스로 가져 오기 위해 고심하고 있습니다.PHP를 사용하여 MySQL 데이터베이스에 이진 체크 박스 값 추가하기

이진 값을 0 또는 1 값으로 표시하려면 어떻게해야합니까?

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
     <title>Create your news page</title> 
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
    </head> 
    <body> 
     <fieldset> 
      <legend>Checked components will show in the page</legend> 
      <form method="POST" action="http://*********.php"> 
       <span class="label">Header</span> 
       <input type="checkbox" name="header" value="HEADER"> 
       <br> 
       <span class="label">Footer</span> 
       <input type="checkbox" name="footer" value="FOOTER"> 

       <hr> 
       <span class="label">Local news</span> 
       <input type="checkbox" name="local" value="LOCALNEWS"> 
       <br> 
       <span class="label">National news</span> 
       <input type="checkbox" name="national" value="NATIONALNEWS"> 
       <br> 
       <span class="label">International news</span> 
       <input type="checkbox" name="international" value="INTERNATIONALNEWS"> 
       <p> 
       <input type="submit"> 
      </form> 
     </fieldset> 
    </body> 
</html> 

그리고 다음과 같이 PHP 문서는 기록 : 다음과 같이

HTML 문서가 작성

<?php 
    $user="user_***"; 
    $password="*********"; 
    $database="dbxyz"; 
    mysql_connect("localhost", $user, $password); 
    mysql_select_db($database, $db_handle); 
    mysql_select_db("dbxyz"); 
    if(isset($_POST['layout'])) 
    { 
     foreach($_POST['layout'] as $value { 
      $insert="INSERT INTO layout (header, footer, local, national, international) VALUES ('$value')"; 
      mysql_query($insert); 
     } 
    } 
?> 

답변

0

난 당신이 MySQL의 'BOOL' - 데이터 타입을 찾고 생각합니다. ..

편집 : 코드가 실제로 구문/코드 오류와 함께로드됩니다 ...이 실제로 실행 믿을 수 없어. 여기에 원본을 붙여 넣을 수 있습니까?

0

테이블 TINYINT (1)에 값을 저장할 필드를 만들고, 제출할 때 $ _POST [ 'nameOfCheckboxField']를 'on'과 비교하여 확인란의 상태를 확인합니다. db 필드에 그렇지 않으면 0을 입력하십시오.

2

쿼리의 모든 값을 한꺼번에 입력해야합니다.
은 그것은 그런 식으로 수행 할 수 있습니다

또한
$values = array(
    'header'  => null, 
    'footer'  => null, 
    'local'   => null, 
    'national'  => null, 
    'international' => null 
); 

foreach (array_intersect_key($_POST, $values) as $key => $value) { 
    $values[$key] = mysql_real_escape_string($value); 
} 

mysql_query("INSERT INTO layout (header, footer, local, national, international) VALUES ('$values[header]', '$values[footer]', '$values[local]', '$values[national]', '$values[international]')"); 

는 mysql_real_escape_string를 호출을 확인할 수 있습니다. SQL 인젝션에 사용할 수있는 매개 변수의 모든 문자를 이스케이프 처리합니다.

+0

것, 다른 하나가 될 것입니다 그리고 이전의 포스터가 말한 것처럼 그래, 당신은 체크 박스를 변환해야합니다 값을 1 또는 0으로 설정 한 다음 tinyint 필드에 저장하십시오. –

2

양식에 체크 박스가 선택되어 있지 않으면 양식을 제출할 때 키/값 쌍이 전송되지 않으므로 각 값이 설정되어 있는지 확인해야합니다. 그래서 다음 '헤더'박스가 체크 된 경우

$header = isset($_POST['header']) ? 1 : 0; 

이 변수는 0

$header  = isset($_POST['header']) ? 1 : 0; 
$footer  = isset($_POST['footer']) ? 1 : 0; 
$local   = isset($_POST['local']) ? 1 : 0; 
$national  = isset($_POST['national']) ? 1 : 0; 
$international = isset($_POST['international']) ? 1 : 0; 

$insert = "INSERT INTO layout (header, footer, local, national, international) 
      VALUES ($header, $footer, $local, $national, $international)"; 

mysql_query($insert); 
관련 문제