下午好朋友,我如何只显示月份的事件名称,而不是下面代码中显示的年份。例如,09月有04位用户。
<?php
//Database
$data = array();
$link = mysqli_connect("localhost", "root", "", "agenda");
mysqli_set_charset($link, 'utf8');
if (!$link) {
echo "Error: Unable to connect to MySQL." . PHP_EOL;
echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
exit;
}
$query = "SELECT * FROM clientes";
if ($result = $link->query($query)) {
/* fetch object array */
while ($obj = $result->fetch_object()) {
$data[] = array(
'id' => $obj->id,
'title'=> $obj->title,
'start'=> $obj->start
);
}
/* free result set */
$result->close();
}
mysqli_close($link);
?>
<script>
$(document).ready(function() {
$('#clientes').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,basicWeek,basicDay'
},
defaultDate: '<?php echo date('Y-m-d');?>',
editable: true,
eventLimit: true, // allow "more" link when too many events
events : <?php echo json_encode($data);?>
});
});
</script>
这是相同结果的第二个块的代码。
<?php
//Database
$data = array();
$link = mysqli_connect("localhost", "root", "", "agenda");
mysqli_set_charset($link, 'utf8');
$month = date('n');
$year = date('Y');
$query = "SELECT * FROM clientes WHERE MONTH(`start`) = $month AND YEAR(`start`) = $year";
if ($result = $link->query($query)) {
/* fetch object array */
while ($obj = $result->fetch_object()) {
$data[] = array(
'id' => $obj->id,
'title'=> $obj->title,
'start'=> $obj->start
);
}
/* free result set */
$result->close();
}
mysqli_close($link);
?>
如果代码如此,他警告&#34;无效数据&#34;:
$month = date('n');
$year = date('Y');
if (is_int($month) && is_int($year)) {
$query = "SELECT * FROM clientes WHERE MONTH(`start`) = $month AND YEAR(`start`) = $year";
} else {
die ('Invalid data');
}
答案 0 :(得分:0)
您可以使用SQL来限制返回的行,如下所示:
SELECT * FROM clientes WHERE MONTH(`start`) = 4 AND YEAR(`start`) = 2016;
对其进行编码以处理从表单提交的变量:
$month = filter_var($_POST['month'], FILTER_VALIDATE_INT);
$year = filter_var($_POST['year'], FILTER_VALIDATE_INT);
if (is_int($month) && is_int($year)) {
$query = "SELECT * FROM clientes WHERE MONTH(`start`) = $month AND YEAR(`start`) = $year";
} else {
die ('Invalid data');
}
永远不要将尚未转义,验证或清理过的数据提交到数据库。在这种情况下,我使用验证,因为它确保只在查询中使用整数。您也可以使用准备好的语句。
START是MySQL中的保留字,这就是为什么需要`(反引号)。
从服务器获取当前月份和年份并在代码中使用它:
$month = date('n');
$year = date('Y');
$query = "SELECT * FROM clientes WHERE MONTH(`start`) = $month AND YEAR(`start`) = $year";
if ($result = $link->query($query)) {
答案 1 :(得分:0)
我得到了问题制作下一个让路。
按如下方式放置选择。
$query = "select id, title, concat_ws( '-', year(now()), MONTH(start), DAY(start)) AS start from clientes";