Mysql查询根据特定的日期间隔检索帖子和过滤

时间:2017-02-22 02:07:09

标签: javascript php mysql select filtering

您好我希望在一个页面中集成一个下拉选择/选项,该页面存储一组日期间隔,这些日期间隔将通过相应的选定选项过滤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>

感谢您的任何意见!

塞尔

2 个答案:

答案 0 :(得分:1)

答案是:这取决于用例。你必须意识到你正在做出的权衡:

  1. 在JavaScript中实现意味着您将一次性检索整个MySQL表,并在浏览器中执行过滤。

    • 查询执行速度很快,因为数据库无需评估条件

    • 您只需要往返数据库一次

    • 需要通过网络发送的数据量可能很大

    • 浏览器需要在内存中保存的数据量可能很大,因此数据传输速度会较慢

    • 如果需要过滤大量数据,浏览器中的执行可能会很慢

  2. 在MySQL查询中实现意味着您只会检索符合条件的表格部分,而不必在浏览器中执行过滤。

    • 由于数据库必须评估条件

    • ,因此查询执行速度会变慢
    • 您可能需要多次往返数据库

    • 需要通过网络发送的数据量会更小,因此数据传输速度会更快

    • 浏览器需要在内存中保存的数据量会更小

    • 浏览器中的执行速度很快,因为不需要应用过滤逻辑

  3. 从上面的清单中可以看出,表格的大小起着至关重要的作用。如果表很小,我会选择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>