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[]) 以在 POST 回 PHP 时将它们设为数组:

<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 回答