Proyecto final: Plataforma de gestion de informacion de Pacientes


Objetivo:

El objetivo de este proyecto es desarrollar una plataforma web sencilla para la gestión de la información de los alumnos, que permita almacenar, actualizar, visualizar y eliminar registros de estudiantes. La plataforma estará construida utilizando HTML para la interfaz de usuario, PHP para la interacción con el servidor y la base de datos, y Microsoft Access como sistema de gestión de base de datos.

Tecnologías empleadas:

  • HTML: Se utilizará para crear la estructura de la página web, proporcionando formularios para ingresar y visualizar la información de los alumnos.
  • PHP: Este lenguaje de programación se utilizará para manejar la lógica del servidor, procesando las solicitudes del usuario (como el envío de formularios) y gestionando la interacción con la base de datos.
  • Microsoft Access: Se usará para almacenar la información de los alumnos, como su nombre, matrícula, fecha de nacimiento, y calificaciones. La base de datos estará diseñada para ser fácil de modificar y consultar.



    <?php


// Conexión ODBC a Access
$conexion = odbc_connect("paciente", '', '');

if ($conexion) {
    // echo 'Conexión a Establecida';
} else {
    echo 'Error: No se pudo completar la conexion';
}

$sql = "SELECT * FROM PACIENTE";
$consulta = odbc_exec($conexion, $sql);

if (!$consulta)
    echo " error al ejecutar la consulta: " . odbc_errormsg($conexion);

// Variables recibidas del formulario
$accion = (isset($_POST["btn_accion"])) ? $_POST["btn_accion"] : "";

$nombre = (isset($_POST["txt_nombre"])) ? $_POST["txt_nombre"] : "";
$telefono = (isset($_POST["txt_telefono"])) ? $_POST["txt_telefono"] : "";
$correo = (isset($_POST["txt_correo"])) ? $_POST["txt_correo"] : "";
$fecha = isset($_POST["txt_fecha"]) ? $_POST["txt_fecha"] : "";
$doctor = isset($_POST["txt_doctor"]) ? $_POST["txt_doctor"] : "";

$Id_form = (isset($_POST["txtId"])) ? $_POST["txtId"] : "";
$Id_selec = (isset($_POST["txt_Idpaciente"])) ? $_POST["txt_Idpaciente"] : "";

// Variables para cargar datos
$paciente_Id = "";
$paciente_nombre = "";
$paciente_telefono = "";
$paciente_correo = "";
$paciente_fecha = "";
$paciente_doctor = "";

// Guardar paciente
if ($accion == "guardar") {
    $sql = "INSERT INTO PACIENTE (NOMBRE, TELEFONO, CORREO, FechaRegistro, Doctor)
            VALUES ('$nombre', '$telefono', '$correo', '$fecha', '$doctor')";
    odbc_exec($conexion, $sql);
    header("Location: " . $_SERVER['PHP_SELF']);
    exit();
}

// Eliminar paciente
if ($accion == "eliminar") {
    $Id_selec = isset($_POST["txt_Idpaciente"]) ? trim($_POST["txt_Idpaciente"]) : '';

    if (empty($Id_selec)) {
        echo "<script>alert('No se recibió un ID válido para eliminar');</script>";
    } else {
        if (!is_numeric($Id_selec)) {
            echo "<script>alert('El ID debe ser numérico');</script>";
        } else {
            $sql = "DELETE FROM PACIENTE WHERE Idpaciente = $Id_selec";
            $resultado = odbc_exec($conexion, $sql);

            if (!$resultado) {
                echo "<script>alert('Error al eliminar: " . odbc_errormsg($conexion) . "');</script>";
            } else {
                echo "<script>alert('Paciente eliminado correctamente');</script>";
                echo "<script>window.location.href = '" . $_SERVER['PHP_SELF'] . "';</script>";
                exit();
            }
        }
    }
}

// Cargar datos en el formulario
if ($accion == "cargar") {
    $Id_selec = isset($_POST["txt_Idpaciente"]) ? trim($_POST["txt_Idpaciente"]) : '';

    if (!empty($Id_selec)) {
        $sql = "SELECT * FROM PACIENTE WHERE Idpaciente = $Id_selec";
        $consultadatos = odbc_exec($conexion, $sql);

        if ($consultadatos) {
            $datospaciente = odbc_fetch_object($consultadatos);

            if ($datospaciente) {
                $paciente_Id = $datospaciente->Idpaciente;
                $paciente_nombre = $datospaciente->nombre;
                $paciente_telefono = $datospaciente->telefono;
                $paciente_correo = $datospaciente->correo;
                $paciente_fecha = $datospaciente->FechaRegistro;
                $paciente_doctor = $datospaciente->Doctor;
            } else {
                echo "<script>alert('No se encontró el paciente con ID $Id_selec');</script>";
            }
        } else {
            echo "<script>alert('Error en la consulta: " . odbc_errormsg($conexion) . "');</script>";
        }
    } else {
        echo "<script>alert('ID no recibido para cargar datos');</script>";
    }
}

// Limpiar formulario
if ($accion == "limpiar") {
    $paciente_Id = "";
    $paciente_nombre = "";
    $paciente_telefono = "";
    $paciente_correo = "";
    $paciente_fecha = "";
    $paciente_doctor = "";
}

// Actualizar paciente
if ($accion == "actualizar") {
    $Id_form = isset($_POST["txt_Idpaciente"]) ? trim($_POST["txt_Idpaciente"]) : '';
    $nombre = isset($_POST["txt_nombre"]) ? trim($_POST["txt_nombre"]) : '';
    $telefono = isset($_POST["txt_telefono"]) ? trim($_POST["txt_telefono"]) : '';
    $correo = isset($_POST["txt_correo"]) ? trim($_POST["txt_correo"]) : '';
    $fecha = isset($_POST["txt_fecha"]) ? trim($_POST["txt_fecha"]) : '';
    $doctor = isset($_POST["txt_doctor"]) ? trim($_POST["txt_doctor"]) : '';

    if (!empty($Id_form) && is_numeric($Id_form)) {
        $sql = "UPDATE PACIENTE
            SET NOMBRE = '$nombre', TELEFONO = '$telefono', CORREO = '$correo',
                FechaRegistro = '$fecha', Doctor = '$doctor'
            WHERE Idpaciente = $Id_form";

        $resultado = odbc_exec($conexion, $sql);

        if (!$resultado) {
            echo "<script>alert('Error al actualizar: " . odbc_errormsg($conexion) . "');</script>";
        } else {
            echo "<script>alert('Paciente actualizado correctamente');</script>";
            echo "<script>window.location.href = '" . $_SERVER['PHP_SELF'] . "';</script>";
            exit();
        }
    } else {
        echo "<script>alert('ID inválido para actualizar');</script>";
    }
}

// Cerrar conexión y salir
if ($accion == "salir") {
    odbc_close($conexion);
    header("Location: Index.php");
    exit();
}


?>

<!DOCTYPE html>
<html lang="es">

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>SISTEMA DE REGISTRO DE PACIENTES</title>

    <link rel="stylesheet" href="css/mdb.min.css" />
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css" rel="stylesheet" />

    <style>
        /* Colores morados personalizados */
        :root {
            --primary-color: #6a0dad;
            --primary-color-dark: #4b0082;
            --info-color: #9b59b6;
            --btn-hover-color: #5a0080;
           
        }

        .bg-primary {
            background-color: var(--primary-color) !important;
        }

        .bg-info {
            background-color: var(--info-color) !important;
        }

        .btn-primary {
            background-color: var(--primary-color);
            border-color: var(--primary-color);
        }

        .btn-primary:hover {
            background-color: var(--btn-hover-color);
            border-color: var(--btn-hover-color);
        }

        .btn-success {
            background-color: var(--primary-color);
            border-color: var(--primary-color);
        }

        .btn-success:hover {
            background-color: var(--btn-hover-color);
            border-color: var(--btn-hover-color);
        }

        .btn-warning {
            background-color: #b399d4;
            border-color: #b399d4;
            color: #fff;
        }

        .btn-warning:hover {
            background-color: #9b59b6;
            border-color: #9b59b6;
        }

        /* Estilo para la imagen del formulario */
        .form-logo {
            display: block;
            margin: 0 auto 20px auto;
            max-width: 120px;
            border-radius: 50%;
            box-shadow: 0 0 10px rgba(106, 13, 173, 0.5);
        }
       body {
    background: url('R.jpg') no-repeat center center fixed;
    background-size: cover;
    font-family: 'Segoe UI', sans-serif;
}

/* Opcional: Capa blanca semitransparente si el fondo hace difícil leer el contenido */
body::before {
    content: "";
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: (255, 255, 255, 0.9);
    z-index: -1;
}

    </style>
</head>

<body class="bg-light">
    <!-- Navbar -->
    <nav class="navbar navbar-expand-lg navbar-dark bg-primary shadow">
        <div class="container-fluid">
            <a class="navbar-brand" href="#">🏥 Clínica Vida</a>
<button class="navbar-toggler" type="button" data-mdb-toggle="collapse"
data-mdb-target="#navbarNav">
                <i class="fas fa-bars"></i>
            </button>
            <div class="collapse navbar-collapse" id="navbarNav">
                <ul class="navbar-nav ms-auto">
        <li class="nav-item"><a class="nav-link active" href="#">Pacientes</a></li>
                 <li class="nav-item"><a class="nav-link" href="#">Doctores</a></li>
                    <li class="nav-item"><a class="nav-link" href="#">Consultas</a></li>
                </ul>
            </div>
        </div>
    </nav>

    <!-- Contenido Principal -->
    <div class="container my-5">
        <div class="row g-4">

            <!-- Formulario -->
            <div class="col-lg-4">
                <div class="card shadow-sm">
                    <div class="card-header bg-info text-white text-center">
                        <h4 class="mb-0">Registro de Pacientes</h4>
                    </div>
         

                            <div class="form-floating mb-3">
                                <input type="date" id="txt_fecha" name="txt_fecha" class="form-control"
                                    placeholder="Fecha de Registro"
              value="<?php echo !empty($paciente_fecha) ? date('Y-m-d',
strtotime($paciente_fecha)) : ''; ?>"
                                    required />
                                <label for="txt_fecha">Fecha de Registro</label>
                            </div>

                            <div class="form-floating mb-3">
            <input type="text" id="txt_doctor" name="txt_doctor" class="form-control"
                                value="<?php echo $paciente_doctor; ?>" required />
                     <label class="form-label" for="txt_doctor">Doctor Asignado</label>
                            </div>
          <div class="card-body">
                        <!-- Imagen logo morado arriba del formulario -->
                        <img src="Logo.png" alt="Logo Clínica Vida"
class="form-logo" />

                        <form method="POST">
                            <div class="form-floating mb-3">
                                <input type="text" id="txt_Idpaciente" name="txt_Idpaciente" class="form-control"
                                    placeholder="ID Paciente" value
="<?php echo $paciente_Id; ?>" readonly />
                                <label for="txt_Idpaciente">ID Paciente</label>
                            </div>

                            <div class="form-floating mb-3">
                                <input type="text" id="txt_nombre" name="txt_nombre" class="form-control"
                                    placeholder="Nombre" value
="<?php echo $paciente_nombre; ?>" required />
                                <label for="txt_nombre">Nombre</label>
                            </div>

                            <div class="form-floating mb-3">
                                <input type="tel" id="txt_telefono" name="txt_telefono" class="form-control"
                                    placeholder="Teléfono" value
="<?php echo $paciente_telefono; ?>" required />
                                <label for="txt_telefono">Teléfono</label>
                            </div>

                          <div class="form-floating mb-3">
                                <input type="email" id="txt_correo"
name="txt_correo" class="form-control"
                                    placeholder="Correo Electrónico"
value="<?php echo $paciente_correo; ?>" required />
                                <label for="txt_correo">Correo Electrónico</label>
                            </div>
                            <div class="d-flex justify-content-between mt-4 flex-wrap gap-2">
                                <button type="submit" name="btn_accion" value="guardar"
                                    class="btn btn-success flex-fill">
                                    <i class="fas fa-save me-1"></i> Guardar
                                </button>
                                <button type="submit" name="btn_accion" value="actualizar"
                                    class="btn btn-warning text-white flex-fill">
                                    <i class="fas fa-edit me-1"></i> Actualizar
                                </button>
                                <button type="submit" name="btn_accion" value="limpiar"
                                    class="btn btn-secondary flex-fill">
                                    <i class="fas fa-eraser me-1"></i> Limpiar
                                </button>
                               
                            </div>
                        </form>
                    </div>
                </div>
            </div>

            <!-- Tabla de pacientes -->
            <div class="col-lg-8">
                <div class="card shadow-sm">
                    <div class="card-header bg-primary text-white">
                        <h5 class="mb-0"><i class="fas fa-users me-2"></i>Listado de Pacientes</h5>
                    </div>
                    <div class="card-body">
                        <div class="table-responsive">
                            <table class="table table-striped align-middle">
                                <thead class="table-light">
                                    <tr>
                                        <th>ID</th>
                                        <th>Nombre</th>
                                        <th>Teléfono</th>
                                        <th>Correo</th>
                                        <th>Fecha</th>
                                        <th>Doctor</th>
                                        <th>Acciones</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php while ($datos = odbc_fetch_object($consulta)) : ?>
                                    <tr>
                                        <td><?php echo $datos->Idpaciente; ?></td>
                                        <td><?php echo $datos->nombre; ?></td>
                                        <td><?php echo $datos->telefono; ?></td>
                                        <td><?php echo $datos->correo; ?></td>
                                        <td><?php echo $datos->FechaRegistro; ?></td>
                                        <td><?php echo $datos->Doctor; ?></td>
                                        <td>
                                            <form method="POST" class="d-inline">
                                                <input type="hidden" name="txt_Idpaciente"
                                                    value="<?php echo $datos->Idpaciente; ?>" />
                                                <button type="submit" name="btn_accion" value="cargar"
                                                    class="btn btn-primary btn-sm me-1" title="Cargar">
                                                    <i class="fas fa-upload"></i>
                                                </button>
                                            </form>
                                            <form method="POST" class="d-inline"
                                                onsubmit="return confirm('¿Desea eliminar este paciente?');">
                                                <input type="hidden" name="txt_Idpaciente"
                                                    value="<?php echo $datos->Idpaciente; ?>" />
                                                <button type="submit" name="btn_accion" value="eliminar"
                                                    class="btn btn-danger btn-sm" title="Eliminar">
                                                    <i class="fas fa-trash"></i>
                                                </button>
                                            </form>
                                        </td>
                                    </tr>
                                    <?php endwhile; ?>
                                </tbody>
                            </table>
                        </div>
                    </div>
                </div>
            </div>

        </div>
    </div>
   
    <center>
      <form method="POST">
    <button type="submit" name="btn_accion" value="salir" class="btn btn-danger flex-fill">
    <i class="fas fa-sign-out-alt me-1"></i> Cerrar Sesión
</button>
  </form>
 </center>

    <script type="text/javascript" src="js/mdb.min.js"></script>
</body>

</html>




Comentarios

Entradas más populares de este blog