detalle_solicitud.php

 Estructura General

Este es un fragmento de código PHP/HTML que muestra los detalles de una solicitud en un sistema web, probablemente usando Bootstrap para el diseño.

Secciones Principales

1. Información Básica (Columna izquierda)

html
<div class="col-md-6">
    <h5 class="mb-3">Información Básica</h5>
    <!-- Campos mostrados -->
</div>
  • Prefolio: Número único de identificación

  • Folio: Número oficial (o "Pendiente" si no existe)

  • Fecha Registro: Formateada como día/mes/año hora:minuto

  • Estado: Muestra con un badge de colores (clase CSS dinámica basada en el estado)

2. Partes Involucradas (Columna derecha)

html
<div class="col-md-6">
    <h5 class="mb-3">Partes Involucradas</h5>
    <!-- Campos mostrados -->
</div>
  • Promovente: Quien hace la solicitud

  • Dirigido a: Destinatario de la solicitud

  • Tipo de Solicitud: Categoría de la solicitud

  • Medio: Canal de envío (también con badge de colores)

3. Documentos Adjuntos

php
<?php if (!empty($solicitud['archivo'])): ?>
  • Muestra un enlace al archivo si existe

  • La ruta se construye dinámicamente usando el prefólio como directorio

  • Si no hay archivo, muestra mensaje indicando esto

4. Observaciones

php
<?= nl2br(htmlspecialchars($solicitud['observaciones'])) ?>
  • Muestra texto con saltos de línea preservados (nl2br)

  • Protegido contra XSS con htmlspecialchars

5. Respuesta (Condicional)

php
<?php if (!empty($solicitud['respuesta'])): ?>
  • Solo se muestra si existe una respuesta

  • Mismo formato que las observaciones

Características de Seguridad

  • htmlspecialchars(): Previene ataques XSS al escapar caracteres HTML

  • nl2br(): Mantiene el formato de saltos de línea

  • Validación con empty(): Evita errores con valores nulos

Estilos Bootstrap Utilizados

  • rowcol-md-6: Sistema de grid responsive

  • mb-3mb-4: Márgenes inferiores

  • badge: Etiquetas de estado con colores

  • borderp-3bg-lightrounded: Estilos para cajas de texto

Este código muestra información de una solicitud de manera organizada y segura, con un diseño responsive que se adapta a diferentes dispositivos.


<div class="row mb-4">
    <div class="col-md-6">
        <h5 class="mb-3">Información Básica</h5>
        <p><strong>Prefolio:</strong> <?= htmlspecialchars($solicitud['prefolio']) ?></p>
        <p><strong>Folio:</strong> <?= htmlspecialchars($solicitud['folio'] ?? 'Pendiente') ?></p>
        <p><strong>Fecha Registro:</strong> <?= date('d/m/Y H:i', strtotime($solicitud['fecha_registro'])) ?></p>
        <p><strong>Estado:</strong>
            <?php
                $estadoClass = strtolower($solicitud['estado']);
                echo '<span class="badge badge-'.$estadoClass.'">';
                echo htmlspecialchars($estados[$solicitud['estado']] ?? $solicitud['estado']);
                echo '</span>';
            ?>
        </p>
    </div>
    <div class="col-md-6">
        <h5 class="mb-3">Partes Involucradas</h5>
        <p><strong>Promovente:</strong> <?= htmlspecialchars($solicitud['promovente']) ?></p>
        <p><strong>Dirigido a:</strong> <?= htmlspecialchars($solicitud['dirigido']) ?></p>
        <p><strong>Tipo de Solicitud:</strong> <?= htmlspecialchars($solicitud['tipo_solicitud']) ?></p>
        <p><strong>Medio:</strong>
            <?php
                $medioClass = strtolower($solicitud['medio']);
                echo '<span class="badge badge-'.$medioClass.'">';
                echo htmlspecialchars($medios[$solicitud['medio']] ?? $solicitud['medio']);
                echo '</span>';
            ?>
        </p>
    </div>
</div>

<h5 class="mb-3">Documentos Adjuntos</h5>
<div class="mb-4">
    <?php if (!empty($solicitud['archivo'])): ?>
        <p>Archivo actual:
            <a href="uploads/<?= htmlspecialchars($prefolio) ?>/<?= htmlspecialchars($solicitud['archivo']) ?>"
               target="_blank" class="file-link">
                <i class="bi bi-file-earmark"></i> <?= htmlspecialchars($solicitud['archivo']) ?>
            </a>
        </p>
    <?php else: ?>
        <p>No hay archivos adjuntos</p>
    <?php endif; ?>
   

</div>

<h5 class="mb-3">Observaciones</h5>
<div class="border p-3 bg-light rounded">
    <?= nl2br(htmlspecialchars($solicitud['observaciones'])) ?>
</div>

<?php if (!empty($solicitud['respuesta'])): ?>
<h5 class="mt-4 mb-3">Respuesta</h5>
<div class="border p-3 bg-light rounded">
    <?= nl2br(htmlspecialchars($solicitud['respuesta'])) ?>
</div>
<?php endif; ?>

Comentarios

Entradas populares de este blog

solicitudes

Guardar solicituc