###前提・実現したいこと
http://sumaity.com/chintai/tokyo/?lid=smt10008
このサイトの検索フォームのように、項目を選択するだびに該当件数を表示させたいです。
###試したこと
①WordPressのタグを使い検索機能を実装(タグに紐づく投稿記事が検索結果に該当)
②inputがクリックされる度に、チェックの入っているinputのvalueをAjaxでPHPファイル(search-kekka.php)に送る
<form> <label><input type="checkbox" name="checkbox-group[]" value="18">ID:10</label><br> <label><input type="checkbox" name="checkbox-group[]" value="15">ID:15</label><br> <label><input type="checkbox" name="checkbox-group[]" value="13">ID:13</label><br> </form> <div id="result"></div> <script type="text/javascript"> $(function(){ $('input').change(function() { //inputクリックで発生 var checks=[]; //空の配列を用意 $("[name='checkbox-group[]']:checked").each(function(){ checks.push(this.value); //チェックのついているinputのvalueを全て配列に格納 }); $.ajax({ //ajaxによる非同期通信発生 type: "POST", //POST送信でデータを受け渡す url: "search-kekka.php", //search-kekka.phpにデータを送る date: checks, //配列のデータを送る success: function(hoge) //接続が成功 { $('#result').html(hoge); //該当件数を表示 }, error: function(XMLHttpRequest,textStatus,errorThrown) //接続が失敗 { alert('エラーです!'); //エラーを表示 } }); return false; }); }); </script>
Javascript
1チェックの入っているinputのvalueが配列に格納されているかテストし、格納されていることを確認。 2 3 console.log(checks); 4 5→["18", "15", "13"] 6
③受け取ったvalueの値から該当する記事数を返す
search-kekka.php
PHP
1<?php require_once( dirname( __FILE__ ) . '/wp-load.php' ); ?> 2 3<?php $atai = $_POST['checks']; //Ajaxで送信された配列を受け取る ?> 4 5<?php 6global $wpdb; 7$myrows = $wpdb->get_results( "SELECT object_id FROM $wpdb->term_relationships WHERE term_taxonomy_id = '18' OR term_taxonomy_id = '15' OR term_taxonomy_id = '13'" ); //タグが該当する記事を習得 8$gaitou = array(); //空の配列を用意 9foreach ($myrows as $value) { 10 $gaitou[] = $value->object_id; //ループを回して配列にobject_idを格納していく 11 $gaitou_kensu = array_count_values($gaitou); 12} 13$count = count($gaitou_kensu); 14echo $count; 15// $input = $_POST['input']; 16// echo $input); 17?> 18
###質問させていただきたいこと
PHPファイルに送られた配列情報をもとに、以下のように値によってSQLのWHERE条件を変更したいのですが
PHP
1※["18", "15", "13"]の場合 2WHERE term_taxonomy_id = '18' OR term_taxonomy_id = '15' OR term_taxonomy_id = '13'
PHP
1※["18", "15"]の場合 2WHERE term_taxonomy_id = '18' OR term_taxonomy_id = '15'
このような吐き出しを実現するためのコードはどのように書けばいいでしょうか?
「そもそもこの方法では実現は難しい」「他に実装手段がある」などもございましたらご教授いただけましたら幸いです。
回答1件
あなたの回答
tips
プレビュー