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
Publicar un comentario