php jquery сохранить флажок динамически - PullRequest
1 голос
/ 11 марта 2011

Я немного запутался, как динамически сохранить значение флажка в 1 таблице!

База данных:

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='???");

Ответы [ 3 ]

3 голосов
/ 11 марта 2011

Вам не нужна форма, которая обрабатывает все входные данные одновременно, а только отправка запроса на измененное поле без использования какой-либо формы.

$('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'] );

Также не забывайте всегда экранировать запросы с помощью mysql_real_escape_string ()

3 голосов
/ 11 марта 2011

Ваш подход не самый чистый или модульный, но он может работать.Вот прямые изменения вашего кода, которые должны помочь ему:

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>

javascript

$( '#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}'" );
}
2 голосов
/ 11 марта 2011

Чтобы передать 0, если не отмечено, и 1, если отмечено, вы можете использовать метод is с селектором : selected , чтобы определить проверенное значение как логическое значение, а затем использовать троичный оператор для установки значения 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;
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...