USD Flag USD
USD Flag USD
GBP Flag Pound
Register Login Become a Property Partner
Adults: 0
Children: 0
Rooms: 1
0) { // City search: list properties $stmt = $pdo->prepare('SELECT d.name AS city_name FROM destinations d WHERE d.id = :id'); $stmt->execute([':id' => $id]); $city = $stmt->fetch(PDO::FETCH_ASSOC); if ($city) { echo '

Properties in ' . htmlspecialchars($city['city_name']) . '

'; $stmt = $pdo->prepare(' SELECT p.id, p.name, p.type, p.price_per_night, pi.image_path, pr.discount_percentage FROM properties p LEFT JOIN property_images pi ON p.id = pi.property_id AND pi.image_type = "main" LEFT JOIN promotions pr ON p.id = pr.property_id AND CURRENT_DATE BETWEEN pr.start_date AND pr.end_date WHERE p.location = :city_name '); $stmt->execute([':city_name' => $city['city_name']]); $properties = $stmt->fetchAll(PDO::FETCH_ASSOC); if ($properties) { echo '
'; foreach ($properties as $property) { $price = $property['price_per_night']; $discount = $property['discount_percentage'] ?: 5; // 5% BStay Coin default $discounted_price = $price * (1 - $discount / 100); $image = $property['image_path'] ?: 'uploads/default.png'; echo ' '; } echo '
'; } else { echo '

No properties found in ' . htmlspecialchars($city['city_name']) . '.

'; } } else { echo '

City not found.

'; } } elseif ($type === 'property' && $id > 0) { // Property search: show details $stmt = $pdo->prepare(' SELECT p.id, p.name, p.type, p.location, p.description, p.price_per_night, p.free_breakfast, p.free_cancellation, p.checkin_time, p.checkout_time, pi.image_path, pr.discount_percentage FROM properties p LEFT JOIN property_images pi ON p.id = pi.property_id AND pi.image_type = "main" LEFT JOIN promotions pr ON p.id = pr.property_id AND CURRENT_DATE BETWEEN pr.start_date AND pr.end_date WHERE p.id = :id '); $stmt->execute([':id' => $id]); $property = $stmt->fetch(PDO::FETCH_ASSOC); if ($property) { $price = $property['price_per_night']; $discount = $property['discount_percentage'] ?: 5; // 5% BStay Coin default $discounted_price = $price * (1 - $discount / 100); $image = $property['image_path'] ?: 'uploads/default.png'; echo '
'; echo '

' . htmlspecialchars($property['name']) . '

'; echo '' . htmlspecialchars($property['name']) . ''; echo '
'; // Description and Policies echo '
'; echo '

About

'; echo '

' . htmlspecialchars($property['description']) . '

'; echo '

Policies

'; echo '
    '; echo '
  • Free Breakfast: ' . $property['free_breakfast'] . '
  • '; echo '
  • Free Cancellation: ' . $property['free_cancellation'] . '
  • '; echo '
  • Check-in: ' . substr($property['checkin_time'], 0, 5) . '
  • '; echo '
  • Check-out: ' . substr($property['checkout_time'], 0, 5) . '
  • '; echo '
'; echo '
'; // Facilities and Nearby Attractions echo '
'; echo '

Main Facilities

'; $stmt = $pdo->prepare(' SELECT f.name FROM facilities f JOIN property_facilities pf ON f.id = pf.facility_id WHERE pf.property_id = :property_id '); $stmt->execute([':property_id' => $id]); $facilities = $stmt->fetchAll(PDO::FETCH_COLUMN); echo '
    '; foreach ($facilities as $facility) { echo '
  • ' . htmlspecialchars($facility) . '
  • '; } echo '
'; echo '

In the Area

'; $stmt = $pdo->prepare(' SELECT name, distance, distance_unit FROM nearby_attractions WHERE property_id = :property_id '); $stmt->execute([':property_id' => $id]); $attractions = $stmt->fetchAll(PDO::FETCH_ASSOC); echo '
    '; foreach ($attractions as $attraction) { echo '
  • ' . htmlspecialchars($attraction['name']) . ': ' . $attraction['distance'] . ' ' . $attraction['distance_unit'] . '
  • '; } echo '
'; echo '
'; echo '
'; // End details-grid // Room Types echo '

Room Types

'; $stmt = $pdo->prepare(' SELECT name, price_per_night, quantity FROM room_types WHERE property_id = :property_id '); $stmt->execute([':property_id' => $id]); $rooms = $stmt->fetchAll(PDO::FETCH_ASSOC); echo ''; // Pricing and Booking echo '

Price: $' . number_format($price, 2) . ' / night

'; echo '

' . $discount . '% off with BStay Coin: $' . number_format($discounted_price, 2) . '

'; echo 'Book Now'; echo '
'; // End property-details } else { echo '

Property not found.

'; } } else { echo '

Invalid search parameters.

'; } } catch (PDOException $e) { error_log("Search failed: " . $e->getMessage()); echo '

Error loading results. Please try again later.

'; } ?>