【发布时间】:2015-07-12 15:40:48
【问题描述】:
注意:关于 Adam Shaw 的 FullCalendar 插件有很多问题;我无法使用现有讨论解决此问题,但如果存在,请指出相关主题。
使用 PHP/MySQL
我想在两种情况下显示日历:
- 当用户查看自己的信息时
- 当用户搜索其他用户的信息时
案例 1 工作正常。案例 2 显示日历但不显示事件信息,尽管使用了我认为相同的逻辑。
每个案例都有一个数据库连接/查询文件,该文件以一个回显的 JSON 数组结尾。这些文件都可以工作 - 我从这两个文件中得到的输出复制如下:
案例一:
[{"title":"100","start":"2015-04-01"},{"title":"200","start":"2015-04-02"},{"title":"300","start":"2015-04-03"},{"title":"-2","start":"2014-04-04"},{"title":"-3","start":"2015-04-05"},{"title":"-1","start":"2015-04-04"},{"title":"-1","start":"2015-04-06"},{"title":"-300","start":"2015-04-07"},{"title":"-10","start":"2015-04-12"},{"title":"-10","start":"2015-04-13"},{"title":"-10","start":"2015-04-14"}]
案例 2:
[{"title":"800","start":"2015-04-08"},{"title":"900","start":"2015-04-09"},{"title":"1000","start":"2015-04-10"},{"title":"5000","start":"2015-04-15"}]
每个案例也有自己的配置文件:
案例 1 (目前正在工作):
<!--FullCalendar things -->
<link rel='stylesheet' href='fullcalendar/fullcalendar.css' />
<link rel='stylesheet' href='fullcalendar/fullcalendar.print.css' media="print" />
<script src='fullcalendar/lib/moment.min.js'></script>
<script src='fullcalendar/lib/jquery.min.js'></script>
<script src='fullcalendar/fullcalendar.js'></script>
<script>
$(document).ready(function() {
$('#calendar').fullCalendar({
weekNumbers: true,
allDayDefault: true,
editable: true,
eventLimit: true, // allow "more" link when too many events
events: 'db_connect.php'
});
});
</script>
案例 2:
<!--FullCalendar things -->
<link rel='stylesheet' href='fullcalendar/fullcalendar.css' />
<link rel='stylesheet' href='fullcalendar/fullcalendar.print.css' media="print" />
<script src='fullcalendar/lib/moment.min.js'></script>
<script src='fullcalendar/lib/jquery.min.js'></script>
<script src='fullcalendar/fullcalendar.js'></script>
<script>
$(document).ready(function() {
$('#search_calendar').fullCalendar({
weekNumbers: true,
allDayDefault: true,
editable: true,
eventLimit: true, // allow "more" link when too many events
events: 'search_results_db_connect.php'
});
});
</script>
同样,在案例 2 中,会显示日历本身,但不会显示事件。如果我从案例 2 中删除 'weeknumbers' 选项,则 weeknumbers 会从正确的页面上消失,因此一切似乎都可以正常通信。我已经对拼写和文件结构进行了四次检查,但我很困惑。非常感谢任何帮助 - 谢谢!
编辑:我还应该注意,当我将案例 2 JSON 数组直接复制到配置文件中时,日历可以正常工作。即:
<script>
$(document).ready(function() {
$('#search_calendar').fullCalendar({
weekNumbers: true,
allDayDefault: true,
editable: true,
eventLimit: true, // allow "more" link when too many events
events: //'search_results_db_connect.php'
[{"title":"800","start":"2015-04-08"},{"title":"900","start":"2015-04-09"},{"title":"1000","start":"2015-04-10"},{"title":"5000","start":"2015-04-15"}]
});
});
</script>
编辑 2:search_results_db_connect.php(此时逻辑并未涵盖所有情况。)
<?php
//Creates variable $step_connect = mysqli_connect($servername, $username, $password, $database);
include('/includes/step_dbc.php');
// Check connection
if (!$step_connect) {
die("Connection failed: " . mysqli_connect_error());
}
if (isset($_GET['query'])) {
$search_id = trim(htmlspecialchars($_GET['query']));
$q_user = "SELECT * FROM users WHERE first_name LIKE '%$search_id%'
OR last_name LIKE '%$search_id%' OR email LIKE '%$search_id%'";
$r_user = mysqli_query($step_connect, $q_user);
}
if (mysqli_num_rows($r_user) == 1) {
$row = mysqli_fetch_assoc($r_user);
$q_user_id = $row['id'];
$q_steps = "SELECT steps, `date` FROM steps WHERE user_id = '$q_user_id'";
$r_steps = mysqli_query($step_connect, $q_steps);
if (mysqli_num_rows($r_steps) >0) {
while ($row = mysqli_fetch_assoc($r_steps)) {
$step_array[] = array(
'title' => $row['steps'],
'start' => $row['date'],
);
}
} else {
echo "No recorded steps";
}
echo json_encode($step_array);
}
?>
上面的代码输出上面显示的 Case 2 JSON。
【问题讨论】:
标签: php jquery mysql events fullcalendar