setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { echo json_encode(['status' => 'error', 'message' => 'Database connection failed: ' . $e->getMessage()]); exit; } // Process form submission if ($_SERVER['REQUEST_METHOD'] === 'POST') { // Validate required fields $required_fields = ['customer_name', 'email', 'phone', 'vehicle_make', 'vehicle_model', 'service_type', 'service_name']; foreach ($required_fields as $field) { if (empty($_POST[$field])) { echo json_encode(['status' => 'error', 'message' => "Please fill in all required fields. Missing: $field"]); exit; } } // Sanitize input data $customer_name = filter_var($_POST['customer_name'], FILTER_SANITIZE_STRING); $email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL); $phone = filter_var($_POST['phone'], FILTER_SANITIZE_STRING); $vehicle_make = filter_var($_POST['vehicle_make'], FILTER_SANITIZE_STRING); $vehicle_model = filter_var($_POST['vehicle_model'], FILTER_SANITIZE_STRING); $vehicle_year = !empty($_POST['vehicle_year']) ? filter_var($_POST['vehicle_year'], FILTER_SANITIZE_NUMBER_INT) : null; $service_type = filter_var($_POST['service_type'], FILTER_SANITIZE_STRING); $service_name = filter_var($_POST['service_name'], FILTER_SANITIZE_STRING); $preferred_date = !empty($_POST['preferred_date']) ? $_POST['preferred_date'] : null; $preferred_time = !empty($_POST['preferred_time']) ? $_POST['preferred_time'] : null; $message = !empty($_POST['message']) ? filter_var($_POST['message'], FILTER_SANITIZE_STRING) : null; // Validate email if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { echo json_encode(['status' => 'error', 'message' => 'Please provide a valid email address']); exit; } // Insert data into database try { $stmt = $pdo->prepare("INSERT INTO service_bookings (customer_name, email, phone, vehicle_make, vehicle_model, vehicle_year, service_type, service_name, preferred_date, preferred_time, message) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); $stmt->execute([ $customer_name, $email, $phone, $vehicle_make, $vehicle_model, $vehicle_year, $service_type, $service_name, $preferred_date, $preferred_time, $message ]); // Get the booking ID $booking_id = $pdo->lastInsertId(); // Send confirmation email (optional) // $this->sendConfirmationEmail($email, $customer_name, $service_name, $booking_id); echo json_encode([ 'status' => 'success', 'message' => 'Your booking has been submitted successfully! We will contact you shortly to confirm your appointment.', 'booking_id' => $booking_id ]); } catch (PDOException $e) { echo json_encode(['status' => 'error', 'message' => 'Failed to save booking: ' . $e->getMessage()]); } } else { echo json_encode(['status' => 'error', 'message' => 'Invalid request method']); }