'Invalid JSON data']); break; } Database::insert('tblocations', $data); echo json_encode(['status' => 'ok']); break; case 'PUT': $data = json_decode(file_get_contents("php://input"), true); if (!$data || !isset($data['tid']) || !isset($data['time'])) { http_response_code(400); echo json_encode(['error' => 'tid and time are required for update']); break; } $updateData = $data; unset($updateData['tid'], $updateData['time']); Database::update('tblocations', $updateData, 'tid = :tid AND time = :time', [ 'tid' => $data['tid'], 'time' => $data['time'] ]); echo json_encode(['status' => 'ok']); break; case 'DELETE': $data = json_decode(file_get_contents("php://input"), true); if (!$data || !isset($data['tid']) || !isset($data['time'])) { http_response_code(400); echo json_encode(['error' => 'tid and time are required for delete']); break; } Database::delete('tblocations', 'tid = ? AND time = ?', [$data['tid'], $data['time']]); echo json_encode(['status' => 'ok']); break; default: http_response_code(405); echo json_encode(['error' => 'Method not allowed']); break; } } catch (Exception $e) { http_response_code(500); echo json_encode(['error' => 'Database error: ' . $e->getMessage()]); }