您好我希望在一个页面中集成一个下拉选择/选项,该页面存储一组日期间隔,这些日期间隔将通过相应的选定选项过滤mysql查询。不确定这是否重复,但在这里找不到类似的东西。
我从中检索“创建日期”的表格有一个时间戳列。
这应该是一个Mysql查询,还是用javascript处理?什么是最佳解决方案?
示例:
<h3>Posts Filter</h3>
<select>
<option>All Time</option>
<option>Past Day</option>
<option>Past Week</option>
<option>Past Month</option>
<option>Past Year</option>
</select>
<br>
<br>
<hr>
<div style="width:45%;height:200px;float:left;border:1px solid #ddd;padding:10px;margin:2.5%;box-sizing:border-box;">
<h2>Post Header</h2>
<em>Created On: February 21 2017</em>
<p>Bacon ipsum dolor amet short ribs kevin ribeye meatball filet mignon swine pork loin spare ribs, pork belly cow tenderloin venison...</p>
</div>
<div style="width:45%;height:200px;float:left;border:1px solid #ddd;padding:10px;margin:2.5%;box-sizing:border-box;">
<h2>Post Header</h2>
<em>Created On: February 18 2017</em>
<p>Bacon ipsum dolor amet short ribs kevin ribeye meatball filet mignon swine pork loin spare ribs, pork belly cow tenderloin venison...</p>
</div>
<div style="width:45%;height:200px;float:left;border:1px solid #ddd;padding:10px;margin:2.5%;box-sizing:border-box;">
<h2>Post Header</h2>
<em>Created On: January 26 2016</em>
<p>Bacon ipsum dolor amet short ribs kevin ribeye meatball filet mignon swine pork loin spare ribs, pork belly cow tenderloin venison...</p>
</div>
<div style="width:45%;height:200px;float:left;border:1px solid #ddd;padding:10px;margin:2.5%;box-sizing:border-box;">
<h2>Post Header</h2>
<em>Created On: March 15 2016</em>
<p>Bacon ipsum dolor amet short ribs kevin ribeye meatball filet mignon swine pork loin spare ribs, pork belly cow tenderloin venison...</p>
</div>
感谢您的任何意见!
塞尔
答案 0 :(得分:1)
答案是:这取决于用例。你必须意识到你正在做出的权衡:
在JavaScript中实现意味着您将一次性检索整个MySQL表,并在浏览器中执行过滤。
查询执行速度很快,因为数据库无需评估条件
您只需要往返数据库一次
需要通过网络发送的数据量可能很大
浏览器需要在内存中保存的数据量可能很大,因此数据传输速度会较慢
如果需要过滤大量数据,浏览器中的执行可能会很慢
在MySQL查询中实现意味着您只会检索符合条件的表格部分,而不必在浏览器中执行过滤。
由于数据库必须评估条件
您可能需要多次往返数据库
需要通过网络发送的数据量会更小,因此数据传输速度会更快
浏览器需要在内存中保存的数据量会更小
浏览器中的执行速度很快,因为不需要应用过滤逻辑
从上面的清单中可以看出,表格的大小起着至关重要的作用。如果表很小,我会选择JavaScript方法。如果表很大(或者可能会变大),我会选择查询方法。
答案 1 :(得分:0)
是的,由ajax处理...
<select id="select">
<option value="all">All Time</option>
<option value="day">Past Day</option>
<option value="weel">Past Week</option>
<option value="month">Past Month</option>
<option value="year">Past Year</option>
</select>
<script>
$(document).ready(function(){
$("#select").change(function() {
$.ajax({
type: 'post',
url: "getSql",
data: { $(this).val() },
success: function($response) {
response = $.parseJSON(reponse);
$.each(response, function(k, v) {
// key and value
$("YOUDIV").append(VALUE)
});
}
});
})
})
</script>