如何创建下一个/上一个按钮来按日期查询MySQL行?

时间:2015-01-31 20:53:47

标签: php jquery mysql

我假设,我需要Ajax和jQuery在点击按钮后根据日期显示新数据。

我想做的是这样的事情:

  

&LT;&LT; 1月15日 ................今天:1月16日.............. 1月17日&gt;&gt; < /强>

     

数据4

     

DATA5

     

DATA6

点击“1月17日”数据4-6 应更改为数据7-9 ,因为数据7-9 已添加到1月17日的MySQL数据库。

当然我有一个代码来查询数据库并显示今天的数据,但我很疯狂无法用新数据重新加载页面。

我试图搜索整个互联网,但我发现的任何东西都不符合我的需求。

2 个答案:

答案 0 :(得分:0)

你的问题有很多方面。这个答案的唯一目的是展示前端,后端和持久层通信的工作原理。

不要在生产中使用它!这个代码很简陋,仅用于演示目的!

  

现代Web应用程序不是这样实现的。前端框架/库通常用于保持复杂性的可管理性。


首先,你的后端应该为前端提供API。

让我们假设您的后端接受以下HTTP GET请求:

www.example.com/users/list_by_date/20150131

最后一个参数是YYYYMMDD格式的日期。收到此请求后,您的后端会发送一个预呈现的HTML代码段,其中包含该日期的用户列表。 (现在前端端渲染非常流行,您也应该查看该主题。在这种情况下,您的后端会发送一个JSON格式的用户列表,然后使用模板在前端渲染。为此添加代码将使例子更复杂)。

为了获得此用户列表,当用户点击next-day按钮(在您的示例中包含&#34; 1月17日和#34;)时,您会从前端发起AJAX请求。此外,您需要将1月16日当前显示的用户列表替换为新用户。让我们假设该列表在HTML代码中具有类属性.users。这是使用jQuery的前端代码:

$(function() {

  $(document).on('click', '.next-day', function() {
    $.getJSON("/users/list_by_date/20150131", renderResults);
  });

  function renderResults = function(data) {
    $('.users').html(data); // replaces old contents with the new ones received from server
  };
});

您还应该分别在1月16日和1月18日的下一个日期更新上一个/下一个链接标题。

在后端,执行SQL语句以获取用户列表。它可能看起来像这样:

SELECT * from Users where DATE(datetimecolum) = '2015-01-17'

将属性放入SQL查询的确切方法因编程语言/框架而异。

这可以帮助您开始处理自己的解决方案。您可能至少应该考虑使用前端框架/库来帮助您管理复杂性。在尝试自己实施一个好的解决方案之前,您可能希望花几天甚至几周时间熟悉前端技术。聘请前端开发人员可能更具成本效益。

答案 1 :(得分:0)

我自己做了,代码实际上是5行。

我需要2天。知道它的人,可以在2分钟内写完。非常感谢所有的鱼!

以下是代码,如果有人需要这样的话:

确定最后可用日期的代码(我已经使用过):

$query = mysqli_query($bd, "SELECT MAX(datum) as max_datum, MIN(datum) as min_datum FROM apps WHERE price = 0 ") or die(mysqli_error());
$maxdate = mysqli_fetch_assoc($query);
$maxdate = $maxdate['max_datum'];
$mindate = $mindate['min_datum'];

我正在寻找的实际代码显示下一天和前几天的两个链接(没有设计):

$date = isset($_GET['date']) ? $_GET['date'] : $maxdate;
$prev_date = date('Y-m-d', strtotime($date .' -1 day'));
$next_date = date('Y-m-d', strtotime($date .' +1 day'));

if ($date < $maxdate) {
echo "<a href=?date=$next_date>forward a day</a>";
}
if ($date > $mindate) {
echo "<a href=?date=$prev_date>back a day</a>";

}

执行我已经拥有的数据的代码:

$result = mysqli_query($bd, "SELECT * FROM apps WHERE datum =  '".$date."' AND price = 0 ") or die(mysqli_error());
$count = mysqli_num_rows($result);

echo "<div id='icon-wrapper'>";


$cc = 0;
while ($row = mysqli_fetch_array($result)){

...

    $cc++;
    if ($cc < $count) {
    echo "\n";
    }
}

echo "</div>";
mysqli_close($bd);

?>