0

私はsearch.phpとload.phpの2つのページを持っています... search.phpにはチェックボックスがあり、チェックボックスをload.phpに渡すためにjqueryを使用しています

<div class="checkBoxes">
<input type="checkbox" name="art[]" value="1" >Digital Art <br />
<input type="checkbox" name="art[]" value="2" >Traditional Art <br />
<input type="checkbox" name="art[]" value="3">Photography <br />
</div>


<script language="javascript">
$(document).ready(function(e) {
    $(".btn_advancedsearch").click(function(){
        $('#content').fadeIn(1500);
        $("#content").load("/search/advancedsearch.php?type="+ $("[name='type']:checked").val()+"&category="+$("input[type='checkbox']").val());
        window.scroll(0,0);
    });
});
</script>

load.php を使用$category=$_REQUEST['category'];していますが、チェックボックスから選択したすべてのカテゴリを取得するためのクエリを書きたいのですが、方法がわかりません...このクエリを試しましたが、機能しません $sql = "SELECT * FROM art WHERE categoryID IN (implode(',', $category))";

4

2 に答える 2

0

これは、$("[name='type']:checked").val()配列オブジェクトが返され、これをクエリ文字列パラメーターとして直接渡すことができないためです。次の手順を実行
します。'1','2','3'
2. クエリ文字列を介してこの値を渡します
3. 選択クエリでこの値を使用します --in演算子を使用しているため、この値を次のように直接フィードできますselect * from table name where col in (valueYouReceived)

コード:
JS のどこか -- ボタンをクリックしたとき$(".btn_advancedsearch").click(function(){

...
...
var selectedValues = "'";
$('input[type=checkbox]').each(function() {
  if($(this).prop('checked'))
  {
     selectedValues += $(this).val()+"',";
  }
});
selectedValues = selectedValues.substring(0, selectedValues.length-1);  // To remove last comma (,)

値を「alert()」するだけで、何が得られるかを確認できますalert(selectedValues)

この変数をクエリパラメータとして渡します

$("#content").load("/search/advancedsearch.php?type="+selectedValues+"&category="+$("input[type='checkbox']").val());

PHPの部分で、取得している値を取得します

$category=$_REQUEST['category'];  

この値を SQL クエリで使用します

"SELECT * FROM art WHERE categoryID IN ($category)";

お役に立てれば!!

于 2013-02-22T04:42:16.533 に答える
0

わかりました、解決策が見つかりました。コードについてはわかりませんが、変更することができ、これを置く人もいます:

jQuery(document).ready(function($) {
    $(":checkbox").bind("click", function(event) {
    if ($(this).is(':checked')) {
        var checked = $(this).val();
        $(".btn_advancedsearch").hide();
        $("#content").load('/search/advancedsearch.php?type=' + checked);
        $('#content').fadeIn(1500);
        window.scroll(0,0);
    }
    });
});​
于 2013-02-22T02:15:24.950 に答える