FullCalendar не отображает правильные даты в календаре после вставки [Duplicate]Javascript

Форум по Javascript
Ответить
Anonymous
 FullCalendar не отображает правильные даты в календаре после вставки [Duplicate]

Сообщение Anonymous »

Я пытаюсь реализовать FullCalendar, чтобы пользователи могли запросить полные дни, однако, несмотря на правильные даты, размещенные в базе данных, календарь не отображает правильные даты на передней части. < /p>
Например. Если я выберу 24-28 февраля (включительно, всего 5 дней), я получу подтверждение «Хотите запросить даты с 24.02.2025 до 28/02/2025», и когда я нажимаю OK Posts правильно (запустите 24-е место и конец 28 -го), но когда календарь обновляется, он показывает только 4 дня (24-27). p>
javascript с dashboard.php: < /p>

Код: Выделить всё

document.addEventListener('DOMContentLoaded', function () {
var calendarEl = document.getElementById('calendar');

var calendar = new FullCalendar.Calendar(calendarEl, {
initialView: 'dayGridMonth',
firstDay: 1,
editable: false,
selectable: true,
eventSources: [
{
url: "fetch-event.php",
method: "GET",
failure: function () {
alert("There was an error fetching events.");
}
}
],
select: function (selectionInfo) {
var start = selectionInfo.startStr;
var end = new Date(selectionInfo.end);
end.setDate(end.getDate() - 1);

var formattedStart = new Date(start).toLocaleDateString("en-GB");
var formattedEnd = new Date(end).toLocaleDateString("en-GB");

var confirmMessage = "Do you want to request dates from " + formattedStart + " to " + formattedEnd + "?";

if (window.confirm(confirmMessage)) {
var firstName = "";
var lastName = "";

fetch("request-event.php", {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
body: `start=${start}&end=${end.toISOString().split('T')[0]}&firstName=${encodeURIComponent(firstName)}&lastName=${encodeURIComponent(lastName)}`
})
.then(response => response.text())
.then(data => {
if (data.trim() === "1") {
displayMessage("Event request sent successfully!");
setTimeout(() => {
calendar.refetchEvents();
}, 500);
} else {
alert("Failed to request event.");
}
});
}
calendar.unselect();
}
});

calendar.render();
});
< /code>
request-event.php:
$start = isset($_POST['start']) ? $_POST['start'] : '';
$end = isset($_POST['end']) ? $_POST['end'] : '';
$firstName = isset($_POST['firstName']) ? trim($_POST['firstName']) : '';
$lastName = isset($_POST['lastName']) ? trim($_POST['lastName']) : '';

$start = date('Y-m-d', strtotime($start));
$end = date('Y-m-d', strtotime($end)); // Store `end` exactly as received

$eventTitle = "Requested by $firstName $lastName";

if (!empty($firstName) && !empty($lastName)) {
$query = "INSERT INTO events (title, start, end, allDay, approved) VALUES (?, ?, ?, 1, 0)";
$stmt = $conn->prepare($query);
$stmt->bind_param("sss", $eventTitle, $start, $end);
$stmt->execute();
$stmt->close();

echo "1"; // Success
} else {
die("Error: Name fields are empty.");
}
< /code>
fetch-event.php
$query = "SELECT id, title, start, end, allDay, approved FROM events";
$result = $conn->query($query);

$events = [];

while ($row = $result->fetch_assoc()) {
$events[] = [
"id" => $row["id"],
"title" => $row["title"],
"start" => $row["start"], // No modifications
"end" => $row["end"], // No modifications
"allDay" => (bool)$row["allDay"],
"approved" => $row["approved"]
];
}

$conn->close();
header('Content-Type: application/json');
echo json_encode($events ?: []);
Если я добавлю +1 день в fetch-event.php, чтобы заставить его работать на февраль, это нормально, но тогда будущие месяцы все еще на 1 день, вместо первоначального 2.

Подробнее здесь: https://stackoverflow.com/questions/794 ... -inserting
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»