HTML 日历和 JS 问题
HTML Calendar and JS problems
我想制作一个基于 Javascript 的日历来管理假期。
我的问题是,我正在使用 SQL 数据库来存储假期,我正在使用 PHP 访问它。如何在 JS 脚本中使用 PHP 查询的结果?
例如,要为员工添加假期,我必须这样做:
<?php $req='select Nom,DateDebut,DateFin,NbJour from conge where Statut="Valide"';
$res=mysqli_prepare($connect,$req);
$var=mysqli_stmt_execute($res);
$var=mysqli_stmt_bind_result($res,$Nom,$DateDebut,$DateFin,$NbJour);
while(mysqli_stmt_fetch($res)) {
// ???
}
?>
<!-- partial -->
<script src='https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.2.7/semantic.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.1.0/fullcalendar.min.js'></script><script>
$(document).ready(function() {
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,basicWeek,basicDay'
},
defaultDate: '<?php echo date("Y-m-d");?>',
navLinks: true,
editable: true,
eventLimit: true,
events: [
{
title: '<?php echo $_SESSION["Login"]?>',
start: '2021-04-30',
end: '2021-05-03'
}
当我只使用 <?php echo $_SESSION ?>
时,它工作得很好。但是当我尝试围绕 stmt_fetch($res)
循环时,它不起作用。我该怎么做?
由于最佳实践规定您应尽可能将 PHP 和表示代码分开,因此您要做的是在 PHP 中构建一个数据数组,然后安全地转储它在需要时进入您的 JavaScript。将数据从 PHP 插入 JavaScript 时始终使用 json_encode()
以确保正确转义值。
我也建议不要使用 mysqli;但如果必须,至少要使用面向对象的接口。它使用起来更容易,代码看起来更现代。
<?php
$query = 'SELECT Nom, DateDebut, DateFin, NbJour FROM conge WHERE Statut="Valide"';
$stmt = $connect->prepare($query);
$stmt->execute();
$stmt->bind_result($Nom, $DateDebut, $DateFin, $NbJour);
$events = [];
while($stmt->fetch()) {
$events[] = [
"title" => "Vacances de $Nom",
"start" => $DateDebut,
"end" => $DateFin
];
}
?>
$(document).ready(function() {
$('#calendar').fullCalendar({
header: {
left: 'prev, next, today',
center: 'title',
right: 'month, basicWeek, basicDay'
},
defaultDate: '<?= json_encode(date("Y-m-d"), \JSON_HEX_TAG) ?>',
navLinks: true,
editable: true,
eventLimit: true,
events: <?= json_encode($events, \JSON_HEX_TAG) ?>
});
})();
我想制作一个基于 Javascript 的日历来管理假期。 我的问题是,我正在使用 SQL 数据库来存储假期,我正在使用 PHP 访问它。如何在 JS 脚本中使用 PHP 查询的结果?
例如,要为员工添加假期,我必须这样做:
<?php $req='select Nom,DateDebut,DateFin,NbJour from conge where Statut="Valide"';
$res=mysqli_prepare($connect,$req);
$var=mysqli_stmt_execute($res);
$var=mysqli_stmt_bind_result($res,$Nom,$DateDebut,$DateFin,$NbJour);
while(mysqli_stmt_fetch($res)) {
// ???
}
?>
<!-- partial -->
<script src='https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.2.7/semantic.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.1.0/fullcalendar.min.js'></script><script>
$(document).ready(function() {
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,basicWeek,basicDay'
},
defaultDate: '<?php echo date("Y-m-d");?>',
navLinks: true,
editable: true,
eventLimit: true,
events: [
{
title: '<?php echo $_SESSION["Login"]?>',
start: '2021-04-30',
end: '2021-05-03'
}
当我只使用 <?php echo $_SESSION ?>
时,它工作得很好。但是当我尝试围绕 stmt_fetch($res)
循环时,它不起作用。我该怎么做?
由于最佳实践规定您应尽可能将 PHP 和表示代码分开,因此您要做的是在 PHP 中构建一个数据数组,然后安全地转储它在需要时进入您的 JavaScript。将数据从 PHP 插入 JavaScript 时始终使用 json_encode()
以确保正确转义值。
我也建议不要使用 mysqli;但如果必须,至少要使用面向对象的接口。它使用起来更容易,代码看起来更现代。
<?php
$query = 'SELECT Nom, DateDebut, DateFin, NbJour FROM conge WHERE Statut="Valide"';
$stmt = $connect->prepare($query);
$stmt->execute();
$stmt->bind_result($Nom, $DateDebut, $DateFin, $NbJour);
$events = [];
while($stmt->fetch()) {
$events[] = [
"title" => "Vacances de $Nom",
"start" => $DateDebut,
"end" => $DateFin
];
}
?>
$(document).ready(function() {
$('#calendar').fullCalendar({
header: {
left: 'prev, next, today',
center: 'title',
right: 'month, basicWeek, basicDay'
},
defaultDate: '<?= json_encode(date("Y-m-d"), \JSON_HEX_TAG) ?>',
navLinks: true,
editable: true,
eventLimit: true,
events: <?= json_encode($events, \JSON_HEX_TAG) ?>
});
})();