我有一個事件數據庫,我希望用戶能夠通過複選框分組 - 複選框狀態,月份等實時過濾事件。同組同一個名字: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