我有一个事件数据库,我希望用户能够通过复选框分组 - 复选框状态,月份等实时过滤事件。同组同一个名字:name="state"
所有状态复选框,name="month"
所有月份复选框等使用AJAX和复选框动态搜索数据库记录
我有一个功能,只要在页面上的任何复选框,单击并试图三种方法来输出所选择的值火灾:
方法1
var state = $('input[name="state"]:checked').map(function() {
return "'"+$(this).val()+"'";
}).get().join(",");
var month = $('input[name="month"]:checked').map(function() {
return "'"+$(this).val()+"'";
}).get().join(",")
例的console.log在页面上进行选择时的样子
'Alaska','Arkansas','California' 'January','February','March'
方法2
var formData = $('#form').serialize();
例的console.log当页面上进行选择看起来像
state=Alaska&state=Arkansas&state=California&month=January&month=February&month=March
在页面上进行选择时,方法3
var jsonData = JSON.stringify(formData);
例的console.log看起来像
"state=Alaska&state=Arkansas&state=California&month=January&month=February&month=March"
我都试过GET
和POST
类型的AJAX。我认为POST是我所追求的; ,让我给JSON.stringify发送到我的个人PHP变量,运行$data = json_decode(stripslashes($_POST['data']));
字符串解码,当我echo "$data";
回到我的HTML页面,我得到我选中的复选框值的动态列表/取消他们:
state=Alaska&state=Arkansas&state=California&month=January&month=February&month=March
我需要帮助才能找到如何获取所选复选框的值并查询我的数据库以返回与当前选中的复选框匹配的任何记录。我试过
$sql="SELECT * FROM events WHERE state = '".$state."' OR month = '".$month."'";
和
$sql="SELECT * FROM events WHERE month REGEXP 'January|February|March|...'"
和
$sql="SELECT * FROM events WHERE (state = 'Alabama' OR state = 'Alaska' OR...) OR (month = 'January' OR month = 'February' OR...)";
我觉得这只是我缺少PHP的福,你都可以见识一下一个简单的解决方案,我一直无知地俯视。我也很乐意接受这种错误的方式。我想知道如何以最好的方式做到这一点。我的PHP知识显然不足,请使用小字。
- 编辑1 -
的复选框遵循此模式:
<li class="filter-item">
<label class="checkbox" for="January">
<input type="checkbox" class="month" id="January" value="January" name="month"> January
</label>
</li>
<li class="filter-item">
<label class="checkbox" for="February">
<input type="checkbox" class="month" id="February" value="February" name="month"> February
</label>
</li>
...
- 编辑2 -
我试过下面的PHP和没有结果;回声甚至不会推出选定的值。
$state_values = $_POST['state'];
$month_values = $_POST['month'];
$con = mysqli_connect('localhost','****','****','db');
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}
$state_values = array_map(function($val) use ($con){
return $con->real_escape_string($val);
});
$states = implode('|', $state_values);
$month_values = array_map(function($val) use ($con){
return $con->real_escape_string($val);
});
$months = implode('|', $month_values);
mysqli_select_db($con,"events");
$sql="SELECT * FROM events WHERE state REGEXP '$states'";
$result = mysqli_query($con,$sql);
echo "$state_values";
while($row = mysqli_fetch_array($result)) {
echo '<div class="panel panel-default">';
echo '<div class="panel-heading">';
echo '<span class="lead">' . $row['name'] . '</span><br>';
echo '<span class="small">' . $row['description'] . '</span>';
echo '</div>';
echo '<div class="panel-body">';
echo '<div class="row">';
echo '<div class="col-4 col-sm-4 col-lg-4">';
echo '<span class="glyphicon glyphicon-calendar"></span>' . $row['month'] .' ' . $row['day'] . ', ' . $row['year'] . '</div>';
echo '<div class="col-4 col-sm-4 col-lg-4">';
echo '<span class="glyphicon glyphicon-map-marker"></span>' . $row['city'] . ', ' . $row['state'] . '</div>';
echo '<div class="col-4 col-sm-4 col-lg-4">';
echo '<a href="' . $row['url'] . '" class="btn btn-primary btn-sm pull-right" target="_blank">Visit Race Site</a></div>';
echo '</div>';
echo '</div>';
echo '</div>';
}
mysqli_close($con);
你有他们的形式标记? – Ghost 2014-09-30 01:18:18