Proyectos - Veterinaria

El objetivo de este proyecto es permitir el acceso via web al programa de gestión de una clínica veterinaria creada en MS Access, para que los clientes puedan pedir la realización de consultas.


Las tablas y campos utilizados son los siguientes:

Solamente pueden conectarse los clientes que existen en la base de datos de la clínica. Los datos para conectarse son el nombre del cliente y su NIF (como contraseña).

Si el nombre y contraseña son correctos, el cliente debe elegir el animal para el que quiere realizar la reserva y el tipo de consulta que quiere realizar (Revisión, Vacunación o Consulta).


Esta puede ser la función que genera la tabla donde se realizan las reservas. Los argumentos de esta función son los siguientes:

function calendario ($fecha, $enlaces)
{
    global $db, $db_citas, $db_intervalos;

    $dia  = substr($fecha, 8, 2);
    $mes  = substr($fecha, 5, 2);
    $anyo = substr($fecha, 0, 4);

    $jd = gregoriantojd($mes, $dia, $anyo);
    $num_dia = (jddayofweek($jd, 0)+6)%7;

    $fecha_lun = date('Y-m-d', mktime(0, 0, 0, $mes, $dia-$num_dia,   $anyo));
    $fecha_mar = date('Y-m-d', mktime(0, 0, 0, $mes, $dia-$num_dia+1, $anyo));
    $fecha_mie = date('Y-m-d', mktime(0, 0, 0, $mes, $dia-$num_dia+2, $anyo));
    $fecha_jue = date('Y-m-d', mktime(0, 0, 0, $mes, $dia-$num_dia+3, $anyo));
    $fecha_vie = date('Y-m-d', mktime(0, 0, 0, $mes, $dia-$num_dia+4, $anyo));
    $fecha_sab = date('Y-m-d', mktime(0, 0, 0, $mes, $dia-$num_dia+5, $anyo));
    $fecha_dom = date('Y-m-d', mktime(0, 0, 0, $mes, $dia-$num_dia+6, $anyo));
    $fecha_ant = date('Y-m-d', mktime(0, 0, 0, $mes, $dia-7, $anyo));
    $fecha_sig = date('Y-m-d', mktime(0, 0, 0, $mes, $dia+7, $anyo));
    $semana = [$fecha_lun, $fecha_mar, $fecha_mie, $fecha_jue, $fecha_vie,
        $fecha_sab, $fecha_dom
    ];

    print "<div class=\"calendario\">\n  <table border=\"1\" class=\"$enlaces\" >\n";
    print "    <caption><a href=\"$_SERVER[PHP_SELF]?fecha=$fecha_ant\">&lt;&lt;
      </a>Semana del $fecha_lun al $fecha_dom
      <a href=\"$_SERVER[PHP_SELF]?fecha=$fecha_sig\">&gt;&gt;</a></caption>
    <thead>
      <tr>\n        <th>Hora</th>\n        <th>Lunes</th>\n        <th>Martes</th>
        <th>Miércoles</th>\n        <th>Jueves</th>\n        <th>Viernes</th>
        <th>Sábado</th>\n        <th>Domingo</th>\n      </tr>
    </thead>\n    <tbody>\n";

    $consulta = "SELECT COUNT(*) AS num_intervalos FROM $db_intervalos";
    $result = odbc_exec($db, $consulta);
    if (!$result) {
        exit("Error en la consulta.");
    } else {
        $valor = odbc_fetch_array($result);
        $num_intervalos = $valor['num_intervalos'];
    }
    for ($i = 1; $i <=$num_intervalos; $i++) {
        print "      <tr>\n";
        $consulta = "SELECT texto FROM $db_intervalos WHERE Codigo = $i";
        $result = odbc_exec($db, $consulta);
        if (!$result) {
            exit("Error en la consulta.");
        } else {
            $valor = odbc_fetch_array($result);
            print "        <td>$valor[texto]</td>\n";
            foreach ($semana as $j ) {
                $j2 = substr($j,5,2)."/".substr($j,8,2)."/".substr($j,0,4);
                $consulta = "SELECT COUNT(*) AS num_consultas FROM $db_citas "
                    ."WHERE Hora = $i AND Fecha=#$j2#"
                    ."AND Animal <> $_SESSION[vet_NumHistorial]";
                $result = odbc_exec($db, $consulta);
                if (!$result) {
                    exit("Error en la consulta.");
                } else {
                    $valor = odbc_fetch_array($result);
                    if ($valor['num_consultas']) {
                        print "        <td style=\"background-color: red\"></td>\n";
                    } else {
                        $consulta2 = "SELECT COUNT(*) AS num_consultas2 FROM "
                            ."$db_citas WHERE Hora = $i AND Fecha=#$j2# "
                            ."AND Animal = $_SESSION[vet_NumHistorial]";
                        $result2 = odbc_exec($db, $consulta2);
                        if (!$result2) {
                            exit("Error en la consulta.");
                        } else {
                            $valor2 = odbc_fetch_array($result2);
                            if ($enlaces=='anyadir') {
                                if ($valor2['num_consultas2']) {
                                    print "        <td style=\"background-color: white\">Reservado</td>\n";
                                } else {
                                    print "        <td style=\"background-color: green\">"
                                        ."<a href=\"anyadir2.php?fecha=$j2&amp;hora=$i\">Reservar</a></td>\n";
                                }
                            } else {
                                if ($valor2['num_consultas2']) {
                                    print "        <td style=\"background-color: white\">"
                                        ."<a href=\"borrar2.php?fecha=$j2&amp;hora=$i\">Anular cita</a></td>\n";
                                } else {
                                    print "        <td style=\"background-color: red\"></td>\n";
                                }
                            }

                        }
                    }
                }
            }
        }
        print "      </tr>\n";
    }
    print "    </tbody>\n  </table>\n</div>\n";
}