2016-04-29 15 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> 

するvar auto_trailer_types =データ[「trailer_typesは」];

ここで私はどのようにしてDATA1 | DATA2 | DATA3 |対応するチェックボックスをもう一度チェックしますか?

+0

AJAXを使用して、その文字列をデータベースに送信できます。 'とそれらの値を保持するチェックボックスのcheckedプロパティを設定する|同様に、あなたはそれを取得(またはあなたが好む場合は、サーバー上で実行時にそれを得る)と'して値を分割するためにAJAXを使用することができます。私はあなたがデータを保持するためのより標準的なフォーマットを使用することをお勧めしますが、JSONがおそらく最良の選択です。 –

+0

値を分割してチェックされたプロパティを設定する方法を教えてください。私はPHPのような何かを行うと、チェックボックスの属性内のifステートメントを行う? – mcornille

+0

私の答えはあなたの問題を解決するのに役立ちましたか?その場合は、チェックマークをクリックして回答を受け入れてください。必要に応じて上向き矢印をクリックして、それが正当化されていると思われる場合はそれをupvoteしてください。 *それ以外の場合は、私の回答の下にコメントを残すか、質問を編集して詳細情報を提供することで、私たちがあなたの助けになる方法についてのフィードバックを提供してください。* – gibberish

答えて

0

であなたのphpクエリ応答をエンコードしようとする前に、私は、データベースに格納された文字列が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()を使用して配列に変換してから、forループを使用します(各チェックボックスの更新は個別に手動で行うこともできます)。

+0

このコード行が何をしているのかよくわかりません:$( '#cb' + z).val(arrCB [n]);あなたはそれを分解できますか?私は分割から得た配列から値を取って、それが入力の値と一致するかどうかを確認する必要があると思いますか?私はちょうど私がこれを得ることから行くのか分からない:var arrCB = recd.split( '|'); ...これは私にこれを与える... arrCB ["DATA1"、 "DATA2"、 "DATA3"]、 ...などをチェックし、チェックする必要があるかどうかを判断します。ありがとう! – mcornille

+0

forループでは、 'n'は' .length'回増加します。最初は 'n' = 0なので、最初のループは次のようになります。' arrCBという配列の最初の値(要素0)をID = "#cb1" 'の要素に注入します。 arrCBは、ajax経由で受け取った文字列を 'split()'することによって作成されます。これは '0 | 0 | 1 | 0'のようになります。 arrCB [0] = 0'、 'arrCB [1] = 0'、' arrCB'は0から始まるので、配列arrCBは次のようになります:[0] [0] [1] [0] [2] = 1'など – gibberish

+0

ID属性をチェックボックスに追加して、ターゲットを簡単に指定できるようにしました。 IDがなければ、[$( ':checkbox:eq(n)').val() '](https://jsfiddle.net/fotjwd06/)(n番目のチェックボックスを選択する) 。 IDの使用がずっと簡単です。 – gibberish

0

この問題を解決するには、ajaxを使用してください。しかし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

関連する問題