Compare commits

...

13 Commits
v0.1.0 ... main

Author SHA1 Message Date
Valentin dce7330f73 fix(homepage) miss removing previous fix 2024-06-22 21:25:48 +02:00
Valentin db71adc9f2 fix(favicon) new icon 2024-06-22 21:19:32 +02:00
Valentin 9d36d93ad6
Update README.MD 2024-06-22 21:03:33 +02:00
Valentin ee12ab5324 fix(home) displaying users favorites... 2024-06-19 17:51:40 +02:00
Maxime H 9801bc99d9
fix(issues) 2024-06-19 17:49:31 +02:00
Valentin c80e41c953 fix(home) direction for 3 branches 2024-06-19 17:08:35 +02:00
Valentin 8d942f4e78 fix(register) fix check request 2024-06-17 11:28:49 +02:00
Maxime H ca48276b2b Add 3 checks 2024-06-17 11:02:42 +02:00
Valentin 3e4cb6ddd9 feat(logs) displaying logs on account page 2024-06-17 10:59:03 +02:00
Valentin 387bc0a2d7 feat(home) displaying cached stations 2024-06-14 18:02:10 +02:00
Valentin cf5f96f47b feat(stops) caching stops 2024-06-14 16:59:36 +02:00
Valentin 1d20fd7815 feat(admin) user delete & admin creation 2024-06-14 11:29:01 +02:00
Valentin b04fc41ab2 fix(readme) readme logo error 2024-06-14 10:50:09 +02:00
19 changed files with 808 additions and 115 deletions

View File

@ -1,7 +1,7 @@
<br />
<div id="readme-top" align="center">
<a href="https://github.com/itsmrval/subway">
<img src="https://raw.githubusercontent.com/itsmrval/subway/main/assets/logo/dark.png" alt="Logo" width="164">
<img src="https://raw.githubusercontent.com/itsmrval/subway/main/public/assets/logo/dark.png" alt="Logo" width="164">
</a>
<h3 align="center">Subway Schedule</h3>
@ -30,7 +30,7 @@ Note: This app is not intended for production use, but for personal or education
This section list major frameworks/libraries used
* ![](https://img.shields.io/badge/php-20232A?style=for-the-badge&logo=php)
* ![](https://img.shields.io/badge/SqLite-20232A?style=for-the-badge&logo=mysql)
* ![](https://img.shields.io/badge/MySQL-20232A?style=for-the-badge&logo=mysql)
* ![](https://img.shields.io/badge/Bootstrap-20232A?style=for-the-badge&logo=bootstrap)
<p align="right">(<a href="#readme-top">back to top</a>)</p>
@ -69,12 +69,14 @@ Then, create a user with a database
* idfm_api_key with your [IDFM PRIM account](https://prim.iledefrance-mobilites.fr)
* db_host / db_user / db_password / db_name with mysql infos.
6. Run your nginx server
6. Run your nginx server on `/public` directory
<p align="right">(<a href="#readme-top">back to top</a>)</p>
## Known issues
- Some stations with RER A doesnt display timetables
## License

View File

@ -48,9 +48,9 @@ $userDetails = getUserDetails($_SESSION['user_id']);
<?php
echo $_SESSION['message'] ?? '';
unset($_SESSION['message']);
?>
<h2 class="mb-4">Edit Account</h2>
<form method="POST" action="">
?>
<h2 class="mb-4">Edit Account</h2>
<form method="POST" action="">
<div class="mb-3">
<label for="email" class="form-label">Email</label>
<input type="email" class="form-control" id="email" name="email" value="<?php echo htmlspecialchars($userDetails['email']); ?>" placeholder="Enter your email" required>
@ -69,5 +69,39 @@ $userDetails = getUserDetails($_SESSION['user_id']);
<small class="form-text text-muted">Leave blank if you do not want to change the password</small>
</div>
<button type="submit" class="btn btn-primary">Save Changes</button>
</form>
</div>
</form>
</div>
<?php
function getUserLogs($userId) {
global $conn;
try {
$query = $conn->prepare("SELECT logs.ip, logs.date, users.email FROM logs JOIN users ON logs.userId = users.id WHERE logs.userId = ?");
$query->execute([$userId]);
return $query->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
return [];
}
}
$logDetails = getUserLogs($_SESSION['user_id']);
?>
<table class="table mt-4">
<thead>
<tr>
<th>IP</th>
<th>Date</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<?php foreach ($logDetails as $log): ?>
<tr>
<td><?php echo $log['ip']; ?></td>
<td><?php echo $log['date']; ?></td>
<td><?php echo $log['email']; ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>

View File

@ -8,7 +8,7 @@ if (!isset($_SESSION['is_admin']) || $_SESSION['is_admin'] !== 1) {
function getUsers() {
global $conn;
try {
$query = $conn->prepare("SELECT id, email, firstName, lastName FROM users");
$query = $conn->prepare("SELECT id, email, firstName, lastName, is_admin FROM users");
$query->execute();
return $query->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
@ -18,37 +18,7 @@ function getUsers() {
$users = getUsers();
function updateUserDetails($userId, $email, $firstName, $lastName, $password = null) {
global $conn;
try {
if ($password) {
$query = $conn->prepare("UPDATE users SET email = ?, firstName = ?, lastName = ?, password = ? WHERE id = ?");
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
$query->execute([$email, $firstName, $lastName, $hashedPassword, $userId]);
} else {
$query = $conn->prepare("UPDATE users SET email = ?, firstName = ?, lastName = ? WHERE id = ?");
$query->execute([$email, $firstName, $lastName, $userId]);
}
return true;
} catch(PDOException $e) {
return false;
}
}
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['userId'])) {
$password = !empty($_POST['password']) ? $_POST['password'] : null;
$success = updateUserDetails($_POST['userId'], $_POST['email'], $_POST['firstName'], $_POST['lastName'], $password);
if ($success) {
$_SESSION['message'] = '<div class="alert alert-success text-center" role="alert">User updated successfully.</div>';
} else {
$_SESSION['message'] = '<div class="alert alert-danger text-center" role="alert">Failed to update user.</div>';
}
header("Location: " . $_SERVER['REQUEST_URI']);
exit();
}
include 'post.php';
?>
@ -58,6 +28,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['userId'])) {
unset($_SESSION['message']);
?>
<h2 class="mb-4">Administration</h2>
<form method="POST">
<button type="submit" name="refreshData" class="btn btn-primary">Refresh Data</button>
</form>
<?php include 'users_list.php'; ?>
</div>
@ -69,5 +42,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['userId'])) {
editUserModal.querySelector('#editEmail').value = event.relatedTarget.getAttribute('data-email');
editUserModal.querySelector('#editFirstName').value = event.relatedTarget.getAttribute('data-firstname');
editUserModal.querySelector('#editLastName').value = event.relatedTarget.getAttribute('data-lastname');
editUserModal.querySelector('#editIsAdmin').checked = event.relatedTarget.getAttribute('data-isadmin') === '1';
});
</script>

View File

@ -25,6 +25,10 @@
<input type="password" class="form-control" id="editPassword" name="password">
<small class="form-text text-muted">Leave blank if you do not want to change the password</small>
</div>
<div class="mb-3 form-check">
<input type="checkbox" class="form-check-input" id="editIsAdmin" name="is_admin">
<label class="form-label" for="editIsAdmin">Admin role</label>
</div>
<button type="submit" class="btn btn-primary">Save Changes</button>
</form>
</div>

113
components/admin/post.php Normal file
View File

@ -0,0 +1,113 @@
<?php
function updateUserDetails($userId, $email, $firstName, $lastName, $is_admin, $password = null) {
global $conn;
try {
if ($password) {
$query = $conn->prepare("UPDATE users SET email = ?, firstName = ?, lastName = ?, password = ?, is_admin = ? WHERE id = ?");
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
$query->execute([$email, $firstName, $lastName, $hashedPassword, $is_admin, $userId]);
} else {
$query = $conn->prepare("UPDATE users SET email = ?, firstName = ?, lastName = ?, is_admin = ? WHERE id = ?");
$query->execute([$email, $firstName, $lastName, $is_admin, $userId]);
}
return true;
} catch(PDOException $e) {
return false;
}
}
function deleteUser($userId) {
global $conn;
try {
$query = $conn->prepare("DELETE FROM users WHERE id = ?");
$query->execute([$userId]);
return true;
} catch(PDOException $e) {
return false;
}
}
function refreshData() {
global $conn;
try {
$conn->exec("TRUNCATE TABLE stops");
$json = @file_get_contents(__DIR__ .'/../../data/stops.json');
$data = json_decode($json, true);
$filteredData = array_filter($data, function($item) {
return isset($item['fields']['mode']) && $item['fields']['mode'] === 'METRO';
});
$query = $conn->prepare("INSERT INTO stops (stopId, name, lineId) VALUES (?, ?, ?)");
$conn->beginTransaction();
foreach ($filteredData as $item) {
$fields = $item['fields'];
if (isset($fields['id_ref_zda'], $fields['nom_zda'], $fields['indice_lig'])) {
try {
$query->execute([$fields['id_ref_zda'], $fields['nom_zda'], $fields['indice_lig']]);
} catch (PDOException $e) {
}
}
}
$conn->commit();
return true;
} catch (Exception $e) {
return false;
}
}
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['refreshData'])) {
$success = refreshData();
if ($success) {
$_SESSION['message'] = '<div class="alert alert-success text-center" role="alert">Data refreshed successfully.</div>';
} else {
$_SESSION['message'] = '<div class="alert alert-danger text-center" role="alert">Failed to refresh data.</div>';
}
header("Location: " . $_SERVER['REQUEST_URI']);
exit();
}
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['userId'])) {
if (isset($_POST['delete'])) {
if ($_POST['userId'] == $_SESSION['user_id']) {
$_SESSION['message'] = '<div class="alert alert-danger text-center" role="alert">You cannot delete yourself.</div>';
header("Location: " . $_SERVER['REQUEST_URI']);
exit();
}
$success = deleteUser($_POST['userId']);
if ($success) {
$_SESSION['message'] = '<div class="alert alert-success text-center" role="alert">User deleted successfully.</div>';
} else {
$_SESSION['message'] = '<div class="alert alert-danger text-center" role="alert">Failed to delete user.</div>';
}
header("Location: " . $_SERVER['REQUEST_URI']);
exit();
}
$password = !empty($_POST['password']) ? $_POST['password'] : null;
$_POST['is_admin'] = isset($_POST['is_admin']) ? 1 : 0;
$success = updateUserDetails($_POST['userId'], $_POST['email'], $_POST['firstName'], $_POST['lastName'], $_POST['is_admin'], $password);
if ($success) {
$_SESSION['message'] = '<div class="alert alert-success text-center" role="alert">User updated successfully.</div>';
} else {
$_SESSION['message'] = '<div class="alert alert-danger text-center" role="alert">Failed to update user.</div>';
}
header("Location: " . $_SERVER['REQUEST_URI']);
exit();
}
?>

View File

@ -16,15 +16,24 @@
<td><?php echo htmlspecialchars($user['firstName']); ?></td>
<td><?php echo htmlspecialchars($user['lastName']); ?></td>
<td>
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#editUserModal"
data-id="<?php echo htmlspecialchars($user['id']); ?>"
data-email="<?php echo htmlspecialchars($user['email']); ?>"
data-firstname="<?php echo htmlspecialchars($user['firstName']); ?>"
data-lastname="<?php echo htmlspecialchars($user['lastName']); ?>">
Edit
</button>
<div class="d-flex">
<button type="button" class="btn btn-primary me-2" data-bs-toggle="modal" data-bs-target="#editUserModal"
data-id="<?php echo htmlspecialchars($user['id']); ?>"
data-email="<?php echo htmlspecialchars($user['email']); ?>"
data-firstname="<?php echo htmlspecialchars($user['firstName']); ?>"
data-lastname="<?php echo htmlspecialchars($user['lastName']); ?>"
data-isadmin="<?php echo htmlspecialchars($user['is_admin']); ?>"
>
Edit
</button>
<form method="POST" action="">
<input type="hidden" name="userId" value="<?php echo htmlspecialchars($user['id']); ?>">
<button type="submit" name="delete" class="btn btn-danger">Delete</button>
</form>
</div>
</td>
</tr>
</tr>
<?php endforeach; ?>
</tbody>
</table>

View File

@ -12,8 +12,8 @@ function getStopName($stopId) {
function getFavorites($lineId) {
global $conn;
try {
$query = $conn->prepare("SELECT stopId FROM favorites WHERE lineId = ?");
$query->execute([$lineId]);
$query = $conn->prepare("SELECT stopId FROM favorites WHERE lineId = ? AND userId = ?");
$query->execute([$lineId, $_SESSION['user_id']]);
$result = $query->fetchAll(PDO::FETCH_ASSOC);
return $result;
@ -29,7 +29,7 @@ $lineIds = $query->fetchAll(PDO::FETCH_COLUMN);
?>
<div class="px-4 my-5 text-center">
<h1 class="display-5 fw-bold">Subway Schedule</h1>
<h1 class="display-5 fw-bold">Subways</h1>
<div class="col-lg-6 mx-auto">
<p class="lead mb-4">Displaying your favorite stations and lines below</p>
@ -46,7 +46,6 @@ if (empty($lineIds)) {
}
?>
<script>
function removeFavorite(stopId, lineId) {

View File

@ -13,18 +13,22 @@ $directions = [];
if (isset($data['Siri']['ServiceDelivery']['StopMonitoringDelivery'][0]['MonitoredStopVisit'])) {
foreach ($data['Siri']['ServiceDelivery']['StopMonitoringDelivery'][0]['MonitoredStopVisit'] as $visit) {
$vehicleJourney = $visit['MonitoredVehicleJourney'];
if (strpos($vehicleJourney['OperatorRef']['value'], '.' . $lineId . '.' . $lineId) !== false) {
$direction = $vehicleJourney['DirectionName'][0]['value'];
$expectedArrival = $vehicleJourney['MonitoredCall']['ExpectedArrivalTime'];
$expectedDeparture = $vehicleJourney['MonitoredCall']['ExpectedDepartureTime'];
$departureTime = date('H:i', strtotime($expectedArrival . ' +2 hours'));
if (strpos($vehicleJourney['OperatorRef']['value'], '.' . $lineId . '.' . $lineId . ':')) {
if (isset($vehicleJourney['MonitoredCall']['ExpectedDepartureTime'])) {
$direction = $vehicleJourney['DestinationName'][0]['value'];
$expectedDeparture = $vehicleJourney['MonitoredCall']['ExpectedDepartureTime'];
$departureTime = date('H:i', strtotime($expectedDeparture . ' +2 hours'));
$currentTime = date('H:i', strtotime('now' . ' +2 hours'));
if (!isset($directions[$direction])) {
$directions[$direction] = [];
}
if (count($directions[$direction]) < 2) {
$directions[$direction][] = $departureTime;
if ($departureTime > $currentTime) {
if (!isset($directions[$direction])) {
$directions[$direction] = [];
}
if (count($directions[$direction]) < 2) {
$directions[$direction][] = $departureTime;
}
}
}
}
}

View File

@ -12,6 +12,12 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$_SESSION['first_name'] = $user['first_name'];
$_SESSION['is_admin'] = $user['is_admin'];
header("Location: /");
$log = $conn->prepare("INSERT INTO logs (userId, date, ip) VALUES (:userId, :date, :ip)");
$log->bindParam(':userId', $user['id']);
$log->bindParam(':date', date('Y-m-d-H-i-s'));
$log->bindParam(':ip', $_SERVER['REMOTE_ADDR']);
$log->execute();
} else {
$errorMessage = "Invalid email or password.";
}

View File

@ -1,12 +1,10 @@
<?php
function getStops($line) {
$json = file_get_contents(__DIR__ . '/../../data/stops.json');
$data = json_decode($json, true);
$result = array_filter($data, function($item) use ($line) {
return $item['fields']['mode'] === 'METRO' && $item['fields']['indice_lig'] === "$line";
});
return $result;
function getStops($lineId) {
global $conn;
$stmt = $conn->prepare("SELECT * FROM stops WHERE lineId = ?");
$stmt->execute([$lineId]);
return $stmt->fetchAll();
}
function isFavorite($userId, $stopId, $lineId) {
@ -16,6 +14,7 @@ function isFavorite($userId, $stopId, $lineId) {
return $stmt->rowCount() > 0;
}
?>
<div class="px-4 my-5 text-center">
@ -29,7 +28,11 @@ function isFavorite($userId, $stopId, $lineId) {
<div class="card">
<div class="card-body">
<div class="row">
<?php for ($i = 1; $i <= 14; $i++): ?>
<?php
for ($i = 1; $i <= 14; $i++):
$stops = getStops($i);
if (!empty($stops)):
?>
<div class="col-2 mb-3">
<div class="card h-100">
<div class="card-body">
@ -44,9 +47,12 @@ function isFavorite($userId, $stopId, $lineId) {
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<?php $stations = getStops($i); ?>
<div class="row">
<?php include 'stop_list.php'; ?>
<?php
$stops = getStops($i);
include 'stop_list.php';
?>
</div>
</div>
</div>
@ -58,7 +64,7 @@ function isFavorite($userId, $stopId, $lineId) {
<?php if ($i % 6 === 0): ?>
</div><div class="row">
<?php endif; ?>
<?php endfor; ?>
<?php endif; endfor; ?>
</div>
</div>
</div>
@ -85,11 +91,11 @@ document.addEventListener('DOMContentLoaded', function() {
if (action === 'add') {
buttonElement.classList.remove('add-stop', 'btn-success');
buttonElement.classList.add('remove-stop', 'btn-danger');
buttonElement.textContent = 'Retirer';
buttonElement.textContent = 'Revoke';
} else {
buttonElement.classList.remove('remove-stop', 'btn-danger');
buttonElement.classList.add('add-stop', 'btn-success');
buttonElement.textContent = 'Ajouter';
buttonElement.textContent = 'Add';
}
buttonElement.removeEventListener('click', arguments.callee);
buttonElement.addEventListener('click', arguments.callee);

View File

@ -1,10 +1,8 @@
<div class="row">
<?php
$half = ceil(count($stations) / 2);
$chunks = array_chunk($stations, $half, true);
?>
<?php foreach ($chunks as $chunk): ?>
$chunks = array_chunk($stops, ceil(count($stops) / 2), true);
foreach ($chunks as $chunk): ?>
<div class="col-md-6">
<table class="table table-striped">
<thead>
@ -16,12 +14,12 @@
<tbody>
<?php foreach ($chunk as $station): ?>
<tr>
<td><?php echo htmlspecialchars($station['fields']['nom_zda']); ?></td>
<td><?php echo htmlspecialchars($station['name']); ?></td>
<td class="text-end">
<?php if (isFavorite($_SESSION['user_id'], $station['fields']['id_ref_zda'], $i)): ?>
<button class="btn btn-danger remove-stop" data-station-id="<?= $station['fields']['id_ref_zda'] ?>" data-line-id="<?= $i ?>">Retirer</button>
<?php if (isFavorite($_SESSION['user_id'], $station['stopId'], $i)): ?>
<button class="btn btn-danger remove-stop" data-station-id="<?= $station['stopId'] ?>" data-line-id="<?= $i ?>">Revoke</button>
<?php else: ?>
<button class="btn btn-success add-stop" data-station-id="<?= $station['fields']['id_ref_zda'] ?>" data-line-id="<?= $i ?>">Ajouter</button>
<button class="btn btn-success add-stop" data-station-id="<?= $station['stopId'] ?>" data-line-id="<?= $i ?>">Add</button>
<?php endif; ?>
</td>
</tr>

View File

@ -1,31 +1,46 @@
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if ($_POST['password'] !== $_POST['confirmPassword']) {
$errorMessage = "Password doesnt match";
} else {
$query = $conn->prepare("SELECT * FROM users WHERE email = :email");
$query->bindParam(':email', $_POST['email']);
$query->execute();
$user = $query->fetch(PDO::FETCH_ASSOC);
if ($_POST['password'] !== $_POST['confirmPassword']) {
$errorMessage = "Password doesnt match";
} else {
$query = $conn->prepare("SELECT * FROM users WHERE email = :email");
$query->bindParam(':email', $_POST['email']);
$query->execute();
$user = $query->fetch(PDO::FETCH_ASSOC);
if ($user) {
$errorMessage = "Email already used.";
}
if (!isset($errorMessage)) {
$query = $conn->prepare("INSERT INTO users (firstName, lastName, email, password) VALUES (:firstName, :lastName, :email, :password)");
$query->bindParam(':firstName', $_POST['firstName']);
$query->bindParam(':lastName', $_POST['lastName']);
$query->bindParam(':email', $_POST['email']);
$query->bindParam(':password', password_hash($_POST['password'], PASSWORD_DEFAULT));
$query->execute();
header("Location: login.php");
exit();
}
if ($user) {
$errorMessage = "Email already used.";
}
if (!isset($errorMessage)) {
try {
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$query = $conn->prepare("INSERT INTO users (firstName, lastName, email, password) VALUES (:firstName, :lastName, :email, :password)");
$query->bindParam(':firstName', $_POST['firstName']);
$query->bindParam(':lastName', $_POST['lastName']);
$query->bindParam(':email', $_POST['email']);
$query->bindParam(':password', $password);
$query->execute();
$query = $conn->prepare("SELECT COUNT(*) as count FROM users");
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
if ($result['count'] == 1) {
$query = $conn->prepare("UPDATE users SET is_admin = 1 WHERE email = :email");
$query->bindParam(':email', $_POST['email']);
$query->execute();
}
header("Location: login.php");
exit();
} catch (PDOException $e) {
$errorMessage = "Please fill correct values";
}
}
}
}
?>

View File

@ -3,7 +3,8 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Subway schedules</title>
<title>Subway</title>
<link rel="icon" href="assets/logo/favicon.png">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<?php
if (!isset($_SESSION['user_id'])) {
@ -11,4 +12,4 @@
}
?>
</head>
<body style="display:block;">
<body style="display:none;">

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

View File

@ -11,11 +11,17 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['stopId'], $_POST['lin
try {
if ($action === 'add') {
$stmt = $conn->prepare("INSERT INTO favorites (userId, stopId, lineId) VALUES (?, ?, ?)");
$stmt->execute([$userId, $stopId, $lineId]);
$query = $conn->prepare("SELECT * FROM favorites WHERE userId = ? AND stopId = ? AND lineId = ?");
$query->execute([$userId, $stopId, $lineId]);
$existingFavorite = $query->fetch();
if (!$existingFavorite) {
$query = $conn->prepare("INSERT INTO favorites (userId, stopId, lineId) VALUES (?, ?, ?)");
$query->execute([$userId, $stopId, $lineId]);
}
} elseif ($action === 'remove') {
$stmt = $conn->prepare("DELETE FROM favorites WHERE userId = ? AND stopId = ? AND lineId = ?");
$stmt->execute([$userId, $stopId, $lineId]);
$query = $conn->prepare("DELETE FROM favorites WHERE userId = ? AND stopId = ? AND lineId = ?");
$query->execute([$userId, $stopId, $lineId]);
}
echo json_encode(['success' => true]);
} catch (PDOException $e) {

508
refreshData.log Normal file
View File

@ -0,0 +1,508 @@
[2024-06-14 15:47:35] JSON file read successfully.
[2024-06-14 15:47:35] JSON data decoded successfully.
[2024-06-14 15:47:35] Data filtered. Number of items: 391
[2024-06-14 15:47:35] Database statement prepared.
[2024-06-14 15:47:35] Transaction started.
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44579' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44617' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '42587' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '58718' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44310' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '42237' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44909' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '42587' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44909' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '58759' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44877' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '473875' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '42288' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '43493' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44139' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '43511' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '42237' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44617' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44617' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '43138' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '470524' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44962' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '42587' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44901' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '473890' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '58718' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '473875' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '45676' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:47:35] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44138' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '43898' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44273' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44372' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44371' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44828' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44617' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '58728' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '58578' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '58578' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '42531' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '43969' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '42311' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '42589' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '43310' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44345' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '45056' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '43026' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '470519' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '42230' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '42280' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '42288' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '45229' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '42587' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '45676' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44075' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '43566' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '43898' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44236' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44371' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '45193' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '58716' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '45314' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44600' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44637' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '462374' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '43138' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '58578' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '42874' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '462352' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '43425' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '43566' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44901' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '44642' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '45100' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '58759' for key 'PRIMARY'
[2024-06-14 15:47:35] SQL Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '473875' for key 'PRIMARY'
[2024-06-14 15:47:35] Transaction committed. Number of items inserted: 304
[2024-06-14 15:48:02] JSON file read successfully.
[2024-06-14 15:48:02] JSON data decoded successfully.
[2024-06-14 15:48:02] Data filtered. Number of items: 391
[2024-06-14 15:48:02] Database statement prepared.
[2024-06-14 15:48:02] Transaction started.
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:02] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] SQL Error: SQLSTATE[HY000]: General error: 1364 Field 'stopId' doesn't have a default value
[2024-06-14 15:48:03] Transaction committed. Number of items inserted: 0
[2024-06-14 15:49:00] JSON file read successfully.
[2024-06-14 15:49:00] JSON data decoded successfully.
[2024-06-14 15:49:00] Data filtered. Number of items: 391
[2024-06-14 15:49:00] Database statement prepared.
[2024-06-14 15:49:00] Transaction started.
[2024-06-14 15:49:00] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:49:00] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:49:00] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:49:00] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:49:00] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:49:00] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:49:00] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:49:00] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:49:00] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:49:00] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:49:00] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:49:00] SQL Error: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'lineId' at row 1
[2024-06-14 15:49:00] Transaction committed. Number of items inserted: 379

View File

@ -11,18 +11,32 @@ try {
lastName VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
is_admin BOOLEAN NOT NULL DEFAULT 0
is_admin BOOLEAN NOT NULL DEFAULT 0,
CHECK (LENGTH(firstName) >= 2),
CHECK (LENGTH(lastName) >= 2),
CHECK (email REGEXP '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$')
)");
$conn->exec("CREATE TABLE IF NOT EXISTS favorites (
id INT AUTO_INCREMENT PRIMARY KEY,
userId INT NOT NULL,
stopId INT NOT NULL,
lineId INT NOT NULL,
FOREIGN KEY (userId) REFERENCES users(id)
)");
$conn->exec("CREATE TABLE IF NOT EXISTS logs (
userId INT NOT NULL,
date DATETIME NOT NULL,
ip VARCHAR(255) NOT NULL,
FOREIGN KEY (userId) REFERENCES users(id)
)");
$conn->exec("CREATE TABLE IF NOT EXISTS stops (
id INT AUTO_INCREMENT PRIMARY KEY,
stopId INT NOT NULL,
lineId INT NOT NULL,
name VARCHAR(255) NOT NULL
)");
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();