我假设,我需要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数据库。
当然我有一个代码来查询数据库并显示今天的数据,但我很疯狂无法用新数据重新加载页面。
我试图搜索整个互联网,但我发现的任何东西都不符合我的需求。
答案 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);
?>