prepare("SELECT t.id, t.nombre AS tour_nombre, t.precio_por_persona AS precio_persona, t.imagen AS tour_imagen, t.descripcion, t.que_haras, t.que_incluye, t.no_apto_para, t.informacion_importante, t.categoria, d.nombre AS destino_nombre FROM tours t JOIN destinos d ON t.destino_id = d.id WHERE t.nombre = ?"); $stmt->bind_param("s", $tour_nombre); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo '
'; // Información general echo '
'; echo '

Precio por persona: ' . htmlspecialchars($row["precio_persona"]) . ' USD

'; echo ''; echo '
'; // Descripción echo '
'; echo '

Descripción:

'; echo '

' . str_replace(["\\r\\n", "\\n", "\\r", "\r\n", "\n", "\r"], "
", htmlspecialchars($row["descripcion"])) . '

'; echo '
'; // Qué harás echo '
'; echo '

Qué harás

'; echo '

' . str_replace(["\\r\\n", "\\n", "\\r", "\r\n", "\n", "\r"], "

", htmlspecialchars($row["que_haras"])) . '

'; echo '
'; // Qué incluye echo '
'; echo '

Qué incluye

'; echo '
    '; // Reemplazar los caracteres literales \r\n por saltos reales $incluye_limpio = str_replace(['\\r\\n', '\\n', '\\r'], "\n", $row["que_incluye"]); $que_incluye = preg_split('/\r\n|\r|\n/', $incluye_limpio); foreach ($que_incluye as $incluye) { if (trim($incluye) !== '') { echo '
  • ✔️ ' . htmlspecialchars(trim($incluye)) . '
  • '; } } echo '
'; echo '
'; // No apto para echo '
'; echo '

No apto para

'; echo '
    '; $no_apto_para = explode(',', $row["no_apto_para"]); foreach ($no_apto_para as $no_apto) { echo '
  • ❌ ' . htmlspecialchars(trim($no_apto)) . '
  • '; } echo '
'; echo '
'; // Información importante echo '
'; echo '

Información importante

'; echo '

' . str_replace(["\\r\\n", "\\n", "\\r", "\r\n", "\n", "\r"], "

", htmlspecialchars($row["informacion_importante"])) . '

'; echo '
'; // Categoría echo '
'; echo '

Categoría

'; echo '

' . htmlspecialchars($row["categoria"]) . '

'; echo '
'; echo '
'; // Cierre del contenedor } } else { echo "

No hay tours disponibles.

"; } $stmt->close(); } else { echo "

Nombre del tour no especificado.

"; } $conn->close(); ?>
prepare("SELECT id FROM tours WHERE nombre = ?"); $stmt->bind_param("s", $tour_nombre); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { $tour = $result->fetch_assoc(); $tour_id = $tour['id']; // Obtener el itinerario basado en el ID del tour $stmt_itinerario = $conn->prepare("SELECT * FROM itinerario WHERE tour_id = ? ORDER BY id ASC"); $stmt_itinerario->bind_param("i", $tour_id); $stmt_itinerario->execute(); $result_itinerario = $stmt_itinerario->get_result(); if ($result_itinerario->num_rows > 0) { echo '

Itinerario

'; echo '
'; while ($itinerario = $result_itinerario->fetch_assoc()) { echo '
'; echo '
'; echo '

' . htmlspecialchars($itinerario["etapa"]) . '

'; echo '

' . htmlspecialchars($itinerario["descripcion"]) . '

'; echo '
'; echo '
'; } echo '
'; } else { echo '

No hay itinerario disponible para este tour.

'; } $stmt_itinerario->close(); } else { echo '

Tour no encontrado.

'; } $stmt->close(); } else { echo '

Nombre del tour no especificado.

'; } $conn->close(); ?>
prepare("SELECT ubicacion FROM tours WHERE nombre = ?"); $stmt->bind_param("s", $tour_nombre); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { $tour = $result->fetch_assoc(); $ubicacion = trim($tour['ubicacion']); if (!empty($ubicacion)) { // Mostrar directamente el iframe almacenado en la base de datos echo '
'; echo $ubicacion; // Aquí se inserta el iframe almacenado echo '
'; } else { echo "

Ubicación no disponible.

"; } } else { echo "

Tour no encontrado.

"; } $stmt->close(); } else { echo "

Nombre del tour no especificado.

"; } $conn->close(); ?>