2016-04-29 3 views
2

Я ввел значения флажка в базу данных, используя следующий код. Когда пользователь хочет просмотреть отмеченные флажки позже, как бы я вытащил данные из базы данных и повторно проверил флажки, которые были первоначально проверены и отправлены?Как бы вытащить данные из базы данных и перепроверить флажки, которые были первоначально проверены и отправлены?

Из кода ниже данные вводятся следующим образом: DATA1 | DATA2 | DATA3 |

var checkbox_value = ""; 
    $(":checkbox").each(function() { 
     var ischecked = $(this).is(":checked"); 
     if (ischecked) { 
      checkbox_value += $(this).val() + "|"; 
     } 
    }); 

Теперь, как я беру DATA1 | DATA2 | DATA3 | и перепроверьте соответствующие флажки?

Вот как я получаю другие данные и повторно отображая его от обычного ввода текстовых полей:

$.ajax({ 
    url: 'ajax/example/example.php', 
    data: "findval="+carrier+"&column="+column, 
    dataType: 'json',     
    success: function(data)   
    { 

    var auto_id = data['id']; 
    var auto_name = data['name']; 
    var auto_address = data['address']; 
    var auto_trailer_types = data['trailer_types']; 

$('#output_autocomplete_forms').html("<form id='example' class='form-horizontal'><input type='hidden' name='auto_id' id='auto_id' class='form-control' value="+auto_id+">......<div class='form-group'> 
<div class='checkbox'><label><input type='checkbox' name='trailer_kinds[]' value='DATA1'>DATA1</label></div> 
<div class='checkbox'><label><input type='checkbox' name='trailer_kinds[]' value='DATA2'>DATA2</label></div> 
<div class='checkbox'><label><input type='checkbox' name='trailer_kinds[]' value='DATA3'>DATA3</label></div> 

вар auto_trailer_types = данные [ «trailer_types»];

Теперь как я могу использовать DATA1 | DATA2 | DATA3 | и перепроверьте соответствующие флажки?

+0

Вы можете использовать AJAX для отправки этой строки в базу данных. Аналогично, вы можете использовать AJAX для его получения (или получить его во время выполнения на сервере, если хотите), и разделить значения на '' 'и установить свойство check из флажков, которые содержат эти значения. Я бы предложил вам использовать более стандартный формат для хранения данных, хотя JSON, вероятно, будет лучшим выбором. –

+0

Вы могли бы показать мне, как разделить значения и установить свойство checked? Я могу сделать что-то вроде php explode, а затем выполнить оператор if в атрибуте checkbox? – mcornille

+0

Помог ли мой ответ решить вашу проблему?Если это так, нажмите галочку, чтобы принять ответ, и, при желании, нажмите стрелку вверх, чтобы повысить ее, если вы считаете, что это оправдано. * В противном случае, пожалуйста, сообщите нам, как мы можем помочь вам дальше, либо оставив комментарий ниже моего ответа, либо отредактировав свой вопрос и предоставив больше информации. * – gibberish

ответ

0

Итак, я предполагаю, что строка хранится в базе данных что-то вроде 0|0|1|0, и вам необходимо восстановить флажки это состояние.

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

<button id="mybutt">Update Checkboxes</button> 

Ваша рутина AJAX будет выглядеть примерно так:

var rowID = $(this).closest('tr').attr('id'); 
alert(rowID); //this datum must allow you to identify the row in the database 
$.ajax({ 
    type: 'post', 
    url: 'another_php_file.php', 
    data: 'id=' +rowID, 
    success: function(recd){ 
     var arrCB = recd.split('|'); 
     for (var n=0; n<arrCB.length; n++){ 
      var z = n+1; 
      $('#cb'+ z).val(arrCB[n]); 
     } 
    } 
}); 

another_php_file.php:

<?php 
    $id = $_POST['id']; 

    $pseudo_query = "SELECT `field_name` FROM `table_name` WHERE `id` = '$id' "; 

    echo $pseudo_query_result; 

pseudo_query_result, что вы эхо должно быть вашим оригиналом 0|0|1|0. PHP echo отправляет эту дату обратно в функцию jQuery AJAX success. Важно: полученные данные недоступны вне этой функции успеха. Вы должны делать то, что хотите, с данными в функции успеха, как показано в приведенном выше примере.

В коде выше, .split() был использован, чтобы включить 0|0|1|0 строки в массив, а затем мы используем для цикла (или даже просто вручную кодировать каждое обновление флажка индивидуально).

+0

Я не совсем понимаю, что делает эта строка кода: $ ('# cb' + z) .val (arrCB [n]); Можете ли вы сломать его? Я думаю, что я должен взять значение из массива, который я получил из раскола, и посмотреть, соответствует ли он значению ввода? Я просто не знаю, как я получаю это: var arrCB = recd.split ('|'); ... который дает мне это ... arrCB ["DATA1", "DATA2", "DATA3"], а затем идет, хотя поля ввода выглядят как ... и т. Д., И определить, нужно ли его проверять или нет. Благодаря! – mcornille

+0

В цикле for значение 'n' увеличивается с шагом' .length'. Изначально 'n' = 0, поэтому в первый раз через цикл, который строка читает:« Ввести первое значение (элемент zero) массива, называемое arrCB, в элемент с идентификатором = «# cb1» ». arrCB создается 'split()' строка, полученная через ajax, которая должна выглядеть так: '0 | 0 | 1 | 0'. Следовательно, массив arrCB должен выглядеть следующим образом: [0] [0] [1] [0] - поскольку массивы основаны на нуле, 'arrCB [0] = 0',' arrCB [1] = 0', 'arrCB [2] = 1' и т. Д. – gibberish

+0

Обратите внимание, что я добавил атрибуты идентификатора в свои флажки, чтобы упростить их таргетинг. Без идентификаторов вам придется [делать что-то вроде '$ (': checkbox: eq (n)') .val()'] (https://jsfiddle.net/fotjwd06/) (чтобы выбрать n-й флажок) , Намного проще использовать идентификаторы. – gibberish

0

Используйте ajax для решения этой проблемы. Но прежде, чем попробовать закодировать ваш ответ php запроса в JSON

$.ajax({ 
url: "test.php" //Your request URI 
}).done(function(data) { 
    //data (you can name it whatever you want) is the data that you get from your request. 
    //eg. if(data.checkbock){ //do something } 
}); 

Больше информаций here

+0

Итак, если var auto_trailer_types = data ['trailer_types']; возвращает мне DATA1 | DATA2 | DATA3 ... ... Я взорву их в массив, а затем выполняю оператор if в каждом флажке, чтобы увидеть, соответствуют ли данные, а затем проверить его или нет? – mcornille

Смежные вопросы