Page 1 of 1

Fullcalendar wird nach Einfügen [Duplikat] nicht die richtigen Daten im Kalender angezeigt. [Duplikat]

Posted: 07 Feb 2025, 12:37
by Guest
Ich versuche, Fullcalendar zu implementieren, damit Benutzer volle Tage anfordern können. Obwohl die korrekten Daten in der Datenbank veröffentlicht werden, zeigt der Kalender nicht die richtigen Daten am vorderen Ende an. < /p>
Z. Wenn ich 24-28 Februar (einschließlich 5 Tage insgesamt) ausgewählt habe und Ende 28.) Aber wenn der Kalender aktualisiert wird, zeigt es nur 4 Tage (24. bis 27.). p>
JavaScript von Dashboard.php: < /p>

Code: Select all

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 ?: []);
Wenn ich fetch-event.php +1 Tag hinzufüge, damit es für Februar funktioniert, ist das in Ordnung, aber dann sind die zukünftigen Monate immer noch 1 Tag kurz anstelle des Originals 2.