3v4l.org

run code in 500+ PHP versions simultaneously
<?php include 'conexion.php'; // Función para calcular Días de Ingreso y Nota automáticamente function calcularDiasYNota($fechaIngreso, $fechaInventario) { $dateIngreso = new DateTime($fechaIngreso); $dateInv = new DateTime($fechaInventario); $dias = $dateIngreso->diff($dateInv)->days; if ($dias < 15) { $nota = "Menor a 15 días"; $badgeClass = "bg-success"; // Verde } elseif ($dias <= 29) { $nota = "Entre 15 y 29 días"; $badgeClass = "bg-warning text-dark"; // Amarillo } else { $nota = "Mayor a 30 días"; $badgeClass = "bg-danger"; // Rojo } return [ 'dias' => $dias, 'nota' => $nota, 'badge' => $badgeClass ]; } // Obtener registros $sql = "SELECT * FROM inventario ORDER BY fecha_ingreso ASC"; $result = $conn->query($sql); ?> <!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Control de Inventario</title> <!-- Bootstrap 5 CSS --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"> <!-- FontAwesome Iconos --> <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet"> <style> body { background-color: #f8f9fa; } .table-header { background-color: #1a252f; color: white; } .card { border-radius: 12px; box-shadow: 0 4px 6px rgba(0,0,0,0.05); } </style> </head> <body> <div class="container-fluid py-4 px-4"> <div class="d-flex justify-content-between align-items-center mb-4"> <h2><i class="fa-solid fa-boxes-stacked me-2"></i>Control de Inventario de Equipos</h2> <button class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#modalIngreso"> <i class="fa-solid fa-plus me-1"></i> Registrar Nuevo Artículo </button> </div> <!-- Tabla de Registros --> <div class="card"> <div class="card-body p-0"> <div class="table-responsive"> <table class="table table-hover table-striped align-middle mb-0"> <thead class="table-header"> <tr> <th>FECHA INVENTARIO</th> <th>FECHA INGRESO</th> <th>SERIE</th> <th>ARTÍCULO</th> <th>ESTADO</th> <th>COMENTARIO</th> <th class="text-center">DÍAS INGRESO</th> <th class="text-center">NOTA</th> </tr> </thead> <tbody> <?php if ($result->num_rows > 0): ?> <?php while($row = $result->fetch_assoc()): $calculo = calcularDiasYNota($row['fecha_ingreso'], $row['fecha_inventario']); ?> <tr> <td><?= date("d/m/Y", strtotime($row['fecha_inventario'])) ?></td> <td><?= date("d/m/Y", strtotime($row['fecha_ingreso'])) ?></td> <td><code class="fw-bold text-dark"><?= htmlspecialchars($row['serie']) ?></code></td> <td><span class="badge bg-secondary"><?= htmlspecialchars($row['articulo']) ?></span></td> <td> <?php if($row['estado'] == 'LIMPIEZA'): ?> <span class="badge bg-info text-dark">LIMPIEZA</span> <?php else: ?> <span class="badge bg-primary">EN BODEGA</span> <?php endif; ?> </td> <td><?= htmlspecialchars($row['comentario']) ?></td> <td class="text-center fw-bold"><?= $calculo['dias'] ?></td> <td class="text-center"> <span class="badge <?= $calculo['badge'] ?> px-3 py-2"> <?= $calculo['nota'] ?> </span> </td> </tr> <?php endwhile; ?> <?php else: ?> <tr> <td colspan="8" class="text-center py-4 text-muted">No hay registros guardados.</td> </tr> <?php endif; ?> </tbody> </table> </div> </div> </div> </div> <!-- Modal Formulario de Registro --> <div class="modal fade" id="modalIngreso" tabindex="-1" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <form action="guardar.php" method="POST"> <div class="modal-header"> <h5 class="modal-title">Registrar Artículo</h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> <div class="mb-3"> <label class="form-label">Fecha Inventario</label> <input type="date" name="fecha_inventario" class="form-control" value="<?= date('Y-m-d') ?>" required> </div> <div class="mb-3"> <label class="form-label">Fecha Ingreso</label> <input type="date" name="fecha_ingreso" class="form-control" required> </div> <div class="mb-3"> <label class="form-label">Serie</label> <input type="text" name="serie" class="form-control" placeholder="Ej: 2700050952..." required> </div> <div class="mb-3"> <label class="form-label">Artículo</label> <select name="articulo" class="form-select" required> <option value="MPOS">MPOS</option> <option value="PAX A920PRO">PAX A920PRO</option> <option value="RAPI BAC">RAPI BAC</option> </select> </div> <div class="mb-3"> <label class="form-label">Estado</label> <select name="estado" class="form-select" required> <option value="EN BODEGA">EN BODEGA</option> <option value="LIMPIEZA">LIMPIEZA</option> <option value="REPARACION">REPARACIÓN</option> </select> </div> <div class="mb-3"> <label class="form-label">Comentario</label> <textarea name="comentario" class="form-control" rows="2" placeholder="Ej: SIN CAJA / ESTANTE ABAJO"></textarea> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancelar</button> <button type="submit" class="btn btn-success">Guardar Registro</button> </div> </form> </div> </div> </div> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script> </body> </html>

preferences:
45.83 ms | 833 KiB | 5 Q