2

ユーザーのチェックボックスの選択に基づいて、PHPページ内にフィルター可能なMySQLデータを表示する方法を理解しようとしています。ドメイン名と、Nominet DAC情報に従って更新が必要になる日付のデータベースがあり、フィルタリングされていないデータを表示できますが、ドメイン拡張機能による結果のフィルタリングは、達成するのが難しいことがわかります。この段階で、私はここで使用することを学ぼうとしている多くのアイデアの真剣な新参者であることを指摘する必要がありますので、優しくしてください。私はここでも他のいくつかの記事をフォローしようとしましたが、サイコロはありません。

私はこれまでに次のものを持っています:

HTML

<input type="checkbox" class="extensions" name="extensions" value=".co.uk">.co.uk</input>
<input type="checkbox" class="extensions" name="extensions" value=".org.uk">.org.uk</input>

脚本

$('.extensions').live('click', function() {
var all_boxes = $('.extensions');
var all_boxes_values = [];
var i = 0;
for (var i; i < all_boxes.length; i++) {
    if (all_boxes[i].checked) {
        all_boxes_values.push(all_boxes[i].value)
    }
}   
var all_boxes_values_clean = all_boxes_values.join(", ");
console.log(all_boxes_values_clean);
$.get("sql-test.php", {q: all_boxes_values_clean},
function(result) {
$("div#output").html(result);
}   
    )});     

PHP

$g = $_GET['q'];
$extensionsql="";
$extension=1;
if(isset($g))   {
$extension=1;
$param = "" . str_replace(",", "','", $_GET['q']) . "";
}

そして、それは私が私の限られた能力で得た限りです。次に実行したいのは、domainName列で文字列の一致を検索し、適切な結果をユーザーに返すことです。次のようなものを模倣するものですが、それを実現する方法がわかりません。どんな助けでも大歓迎です:

SELECT * FROM `refresh` WHERE `domainName` LIKE '%.co.uk%' AND renewalDate LIKE '%2012-06-30%' ORDER BY `domainName` ASC  

ありがとう

4

2 に答える 2

2

name="extensions" を name="extensions[]" に変更します。これにより、要素の配列が作成され、最後にチェックされた値で上書きされません (通常どおり投稿する場合)

$g = explode(',', $_GET['q']);

$param='';
while(list($key,$value)=each($g))
{
    $param.="`domainName` LIKE '%".mysql_real_escape_string($value)."' OR ";
}
$param=substr($param,-3); // knock off last OR

$sql="SELECT * FROM `refresh` WHERE renewalDate LIKE '%2012-06-30%' AND (".$param.") ORDER BY `domainName` ASC  
于 2012-06-29T15:31:03.820 に答える
1

チェックボックスの名前 (extensions[]) を変更して、PHP に POST したときに配列になるようにします。

<input type="checkbox" class="extensions" name="extensions[]" value=".co.uk">.co.uk</input>
<input type="checkbox" class="extensions" name="extensions[]" value=".org.uk">.org.uk</input>

おそらく、JavaScript を少しクリーンアップする必要があります。

$('.extensions').live('click', function() {
var all_boxes = $('.extensions');
var checked_boxes = $('.extensions:checked');
var all_boxes_values = [];

checked_boxes.each(function(){
 var cb_value = $(this).val();
 all_boxes_values.push(cb_value);
});

var all_boxes_values_clean = all_boxes_values.join(", ");
console.log(all_boxes_values_clean);
$.get("sql-test.php", {q: all_boxes_values_clean},
      function(result) {
       $("div#output").html(result);
      })
}); 
于 2012-06-29T15:49:32.843 に答える