2011-03-11 9 views
1

메신저 비트가 1 테이블에 체크 박스 값을 동적으로 저장하는 방법을 혼란스럽게합니다!php jquery 동적으로 체크 박스 저장

데이터베이스 :

id PERSON check 
-------------------- 
1 Person1 1 
2 Person2 1 
3 Person3 1 
4 Person4 0 

HTML 코드 :

<form id="availability"> 
Person1 <input type="checkbox" id="person1" value="1" checked> 
Person2 <input type="checkbox" id="person2" value="1" checked> 
Person3 <input type="checkbox" id="person3" value="1" checked> 
Person4 <input type="checkbox" id="person4" value="0"> 
</form> 

JQuery와 :

$('#availability').submit(function(){ 
    $.post('include/setting.php', { 
     person1: $('#person1').val(), 
     person2: $('#person2').val(), 
     person3: $('#person3').val(), 
     person4: $('#person4').val(), 
    }, function(data){ 

    if(data.success) { 

    } else { 

    } 
    }, 'json'); 
    return false; 
}) 

PHP :

$person1 = $_POST['person1']; 
$person2 = $_POST['person2']; 
$person3 = $_POST['person3']; 
$person3 = $_POST['person4']; 
$db->query("UPDATE person SET id='???"); 
+1

왜 검사 가치와하지를 저장하는 지위? – justkt

+0

데이터베이스에 여러 값 저장/업데이트 확인란 (선택 또는 선택되지 않은 경우) 값을 알고 싶다면 – tonoslfx

+0

까지 아는 한 '$ ('# person1 ')을 사용할 수 있습니다. 체크 박스의 값은 체크 된 상태가 아니라 값입니다. 확인 된 상태를 저장 하시겠습니까? – justkt

답변

3

당신의 접근 방식은 깨끗한 또는 대부분 모듈 아니다()는 mysql_real_escape_string와 쿼리를 탈출 기억하지만 작업 할 수 있습니다. 여기에 그것을 밖으로 도움이 코드를 직접 수정됩니다

HTML은

<form id="availability"> 
    Person1 <input type="checkbox" id="person1" value="1"> 
    Person2 <input type="checkbox" id="person2" value="1"> 
    Person3 <input type="checkbox" id="person3" value="1"> 
    Person4 <input type="checkbox" id="person4" value="1"> 
</form> 

자바 스크립트

$('#availability').submit(function() 
{ 
    $.post(
     'include/setting.php', 
     { 
      persons: { 
       person1: ($('#person1:checked').length ? 1 : 0), 
       person2: ($('#person2:checked').length ? 1 : 0), 
       person3: ($('#person3:checked').length ? 1 : 0), 
       person4: ($('#person4:checked').length ? 1 : 0) 
      } 
     }, 
     function(data) 
     { 
      if(data.success) 
      { 

      } 
      else 
      { 

      } 
     }, 
     'json' 
    ); 

    return false; 
}); 

PHP

<?php 
foreach($_POST['persons'] as $personIdentifier => $checked) 
{ 
    //DO PROPER CHECKS AND ESCAPING OF INCOMING DATA!!!!!!! 
    $db->query("UPDATE person SET check = {$checked} WHERE PERSON = '{$personIdentifier}'"); 
} 
+0

내가 귀하의 코드를 시도, 자사의 데이터베이스 값을 업데이 트하지 :(어떤 생각? – tonoslfx

+0

서버에 대한 액세스 권한없이 사용자가 제공 한 모든 정보를 확인하고 문제를 해결할 필요가 없습니다. 아, 생각이 없습니다. – JAAulde

+0

채팅에 참여할 수 있습니다. 그래서 내가 할 수있는 한 많은 수고를 주겠다. http://chat.stackoverflow.com/rooms/11/php – tonoslfx

2

선택하지 않은 경우 0을 전달하고 선택하면 1을 전달하려면 확인 값을 부울로 결정한 다음 ternary operator을 사용하여 결과에 따라 JSON 값을 1 또는 0으로 설정할 수 있습니다.

$('#availability').submit(function(){ 
    $.post('include/setting.php', { 
     "person1" : $('#person1').is(':checked') ? 1 : 0, 
     "person2" : $('#person2').is(':checked') ? 1 : 0, 
     "person3" : $('#person3').is(':checked') ? 1 : 0, 
     "person4" : $('#person4').is(':checked') ? 1 : 0, 
    }, function(data){ 

    if(data.success) { 

    } else { 

    } 
    }, 'json'); 
    return false; 
}) 
+0

을 저장하십시오! 어떻게 PHP로 전달합니까? 값 0과 1을 저장 하시겠습니까? – tonoslfx

+0

이미 PHP 파일에 게시하고 있습니까? PHP 파일이 정확한 데이터를 수신하는지 먼저 확인한 다음 위에서 반복했듯이 반복하여 저장하십시오. – justkt

3

모든 입력을 한 번에 처리하는 양식은 필요하지 않지만 양식을 사용하지 않고 수정 된 필드에 대한 요청 만 보내면됩니다.

$('input:checkbox').change(function() { 
    $.post('include/setting.php', { 
    id: this.id, 
    value: $(this).attr("checked")?1:0 
    }, function(data){ 
    if(data.success) { 
    } else { 
    } 
    }, 'json'); 
    return false; 
}); 

및 PHP에 대한

:

$db->query("UPDATE person SET value=".$_POST['value']." WHERE id=".$_POST['id']); 

또한 항상

+0

이것은 분명히 의미가 있지만, OP가 모든 수표에서 값을 변경하거나 취소하려는 경우에만 해당합니다. – justkt

+0

그렇다면 "확인란 값을 동적으로 저장하는 방법"은 무엇을 의미합니까? –

+0

@justkt 감사합니다. 내가 원했던 것처럼. 나는 당신의 코드를 따라 갔지만 데이터베이스를 업데이트하지는 않는다. 그것은 id를 픽업하지 않았다 – tonoslfx