Anda di halaman 1dari 22

Manejo de Base de Datos en PHP con Ms Access

BASE DE DATOS EN PHP – CON MICROSOFT ACCESS.

INTRODUCCIÓN

Una vez que el servidor web ha solicitado al intérprete de PHP la ejecución de un determinado Script puede
contener sentencias que pretendan manipular datos almacenados en un gestor de base de datos, cualquier
operación sobre ello se debe realizar a través de la interfaz proporcionada por el gestor.

La forma en que el intérprete de PHP y el gestor se pueden conectar consiste en un API estándar, que
presenta una capa de software que oculta detalles de conexión. Para poder utilizarla solamente hace falta
instalar o activar en el gestor correspondiente el módulo de software encargado de su gestión y realizar las
llamadas correspondientes desde el programa, es decir usar funciones de acuerdo al fabricante.

A lo largo de este capitulo se va ha mostrar la utilización de ODBC con un gestor como es Microsoft Access
que funciona solamente en entorno WINDOWS.

Antes de comenzar a trabajar con Microsoft Access de debe crear una base de datos en blanco
(empleados.mdb)

1° presionar la tecla Windowas + R en la ventana digitar msaccess para cargar el Microsoft Access

Del menú principal de Access hacer clic en la opción base


de datos en blanco

Ingresar el nombre de la base de datos empresa

CLIC
AQUI

Seleccionar donde grabar la base de datos y elegir el


formato 2002-2003 luego presionar el botón Aceptar

Luego hacer clic en el botón crear


se abre la base de
datos y luego cerrar
el Access.

Docente: Ing. MSc. Anaximandro Fernández Guerrero 1


Manejo de Base de Datos en PHP con Ms Access

CREACION DE UN ORIGEN DE DATOS

En entornos Microsoft Windows, esta función se realiza para crear un origen de datos con la que se va ha
establecer la conexión, es decir que hay que declarar que se va ha utilizar la base de datos Access con la
interfaz ODBC, para ello ir al panel de control y elegir herramientas administrativas ( Windows + R –
Control) luego el icono de Orígenes de datos (ODBC 32 bits), para crear un origen de datos.

Luego de la siguiente ventana seleccionar MS Access


Database y hacer clic en el botón agregar

Hacer clic en el botón Agregar y elegir el tipo de gestor de base de datos que se desea conectar en este caso
se trata del controlador de Microsoft Access Driver(*.mdb), tras la elección y al pulsar finalmente el botón
Finalizar.

Luego aparecerá la siguiente ventana donde se ingresara el nombre


de la base de datos para el ejemplo empresa y una descripción
para posteriormente hacer clic en el botón seleccionar y
mostrará la ventana superpuesta en donde se buscará la ruta
donde esta grabada la base de datos y presionar clic en aceptar

Luego hacer clic en aceptar y aceptar y muestra la ventana en


donde se ha creado el origen de datos llamado empresa

Docente: Ing. MSc. Anaximandro Fernández Guerrero 2


Manejo de Base de Datos en PHP con Ms Access

CONEXIÓN CON MICROSOFT ACCESS

Hay que destacar para trabajar con bases de datos suele constar de los siguientes pasos:

Se establece la conexión que permite solicitar los datos al gestor (a través de l ODBC).
Se compone la instrucción SQL que se desea ejecutar, de tal forma que dicha instrucción se almacena en una
variable de tipo cadena con el objeto de pasarla completamente al gestor de base de datos.
Se solicita al gestor que ejecute la instrucción generada.
En caso de que se necesite, se procesa el resultado obtenidote la ejecución.
Se liberan los recursos utilizados en la consulta y se cierra la conexión con el gestor.

EJEMPLO 01

En este ejemplo se realiza una conexión a la base de datos empresa de Microsoft Access y luego se crea una
tabla llamada Empleados y por ultimo se inserta un registro.

<!-- creatabla.php -->


<HTML><HEAD><TITLE>Prueba PHP con ODBC sobre Access</TITLE>
</HEAD>
<BODY>
<CENTER>
<FONT COLOR="blue"><H1> Conexión con Microsoft Access </H1></FONT>
</CENTER>
<HR>
<CENTER><B>Funciones Básicas de Manejo de Datos </B></CENTER>
<HR>
<?php
// Se establece la conexión con la fuente de datos
$conexion = odbc_connect("empresa", "afg", "afg");
// Si no hay conexión, se emite un error y se aborta
if (!$conexion)
die ("Error en la conexión con el gestor");

// El primer comando SQL será el de creación


// de la tabla de empleados
$consultaSQL = "CREATE TABLE Empleados
(CodEmp CHAR(4) Not Null, Nombres VARCHAR(50) Not Null,
Categoria CHAR(15), Sueldo INTEGER, CodDpto CHAR(2));";
echo $consultaSQL,"<BR>\n";

// Se solicita la ejecución de la instrucción contenida en $com


$resultado = odbc_do($conexion, $consultaSQL);
if ($resultado)
echo "<BR><B>Tabla creada</B><BR>\n";
else
die("Error en la creación");
// La siguiente instrucción será la inserción de un dato
$consultaSQL ="INSERT INTO Empleados
VALUES ('E001', 'Anaximandro Fernandez Guerrero', 'Docente', 3900,
'D1');";

Docente: Ing. MSc. Anaximandro Fernández Guerrero 3


Manejo de Base de Datos en PHP con Ms Access

echo $consultaSQL,"<BR>\n";
// Se solicita la ejecución de la nueva instrucción (Insert)
$resultado = odbc_do($conexion, $consultaSQL);
if ($resultado)
echo "<BR><B>Datos insertados</B><BR>\n";
else
die("Error en la inserción");
// Se cierra la conexión
odbc_close($conexion);
?>
<BR><HR></BODY></HTML>

Como puede observar la salida producida exclusivamente debido a la línea:

echo $consultaSQL,"<BR>\n";

Como muestra en la Figura, Para comprobar que todo funciona correctamente se debe iniciar Microsoft
Access para verificar si se ha insertado un Registro.

Docente: Ing. MSc. Anaximandro Fernández Guerrero 4


Manejo de Base de Datos en PHP con Ms Access

FUNCIONES UTILIZADAS EN EL SCRIPT CREATABLA.PHP

ODBC_CONNECT

Conecta a una fuente de datos.

Descripción

int odbc_connect (string dsn, string user, string password [, int cursor_type])
Devuelve una conexión ODBC id, o 0 (FALSE) cuando ocurre un error.

La conexión id devuelta por estas funciones es necesaria para otras funciones ODBC. Se pueden tener
multiples conexiones abiertas a la vez. El opcional cuarto parámetro asigna el tipo de cursor que va a ser
usado para esta conexión. Este parámetro normalmente no es necesario, pero puede ser útil para trabajar
sobre problemas con algunos drivers ODBC.

ODBC_DO

Sinonimo de odbc_exec()

Descripción
string odbc_do (int conn_id, string query)
odbc_do ejecutara una consulta (query) sobre la conexión dada.

ODBC_CLOSE

Cierra una conexión ODBC.

Descripción
void odbc_close (int connection_id)

Docente: Ing. MSc. Anaximandro Fernández Guerrero 5


Manejo de Base de Datos en PHP con Ms Access

odbc_close() cerrara la conexión al servidor de bases datos asociado con el identificador de conexión dado.

Nota: Esta función fallara si hay transacciones abiertas sobre esta conexión. La conexión quedara abierta en
ese caso.

EJEMPLO 02

INSERCION DE DATOS

Normalmente los datos que hay que insertar en una tabla provienen de un formulario rellenado por el usuario
para ilustrar esto se ha desarrollado un script en PHP llamado formempleado.html, en donde el usuario
ingresará los datos a guardar en la tabla.

<!-- formempleado.htm -->


<HTML>
<HEAD><TITLE>Prueba PHP con ODBC sobre Access</TITLE></HEAD>
<BODY>
<CENTER>
<FONT COLOR="blue"><H1> Conexión con Microsoft Access </H1></FONT>
<H3> Formulario de Entrada de Datos</H3>
<HR>
<FORM NAME="formulario" METHOD='POST' ACTION="insercion.php" >
<TABLE BORDER=1>
<TR>
<TD>Código:</TD>
<TD><INPUT TYPE="Text" NAME="CodEmp" SIZE=2
MAXLENGTH=2></TD>
<TD>Nombre:</TD>
<TD><INPUT TYPE="Text" NAME="Nombre" SIZE=30
MAXLENGTH=30></TD>
</TR>
<TR>
<TD>Categoria:</TD>
<TD><INPUT TYPE="Text" NAME="Categoria" SIZE=15></TD>
<TD>Sueldo:</TD>
<TD><INPUT TYPE="Text" NAME="Sueldo" SIZE=10
MAXLENGTH=10></TD>
</TR>
<TR>
<TD>Departamento:</TD>
<TD><INPUT TYPE="Text" NAME="CodDpto" SIZE=2
MAXLENGTH=2></TD>
</TR>
<TR>
<TD><INPUT TYPE="Submit" VALUE="Enviar"></TD>
<TD><INPUT TYPE="Reset" VALUE="Borrar"></TD>
</TR> </TABLE></FORM></CENTER>
<BR><HR></BODY></HTML>

Docente: Ing. MSc. Anaximandro Fernández Guerrero 6


Manejo de Base de Datos en PHP con Ms Access

Formulario para ingresar Datos

Este Script permite detectar que deben insertar datos en los campos CodEmp y Sueldo, adecuados para que
se realice la inserción.

<!-- insercion.php -->


<?php // Se establece la conexión con la fuente de datos
$conex = odbc_connect("empresa", " ", “");
// Si no se ha asignado un sueldo se pone a 0
// para evitar errores con el tipo en SQL.
// Se comprueba también su tipo
if (empty($Sueldo))
$Sueldo = 0;
if (!settype($Sueldo, "integer"))
$Sueldo = 0;
// Insertamos la tupla en la tabla con la sentencia INSERT
if (!(empty($CodEmp)) && !(empty($Nombre)))
{
$consultaSQL ="INSERT INTO Empleados VALUES ('$CodEmp',
'$Nombre','$Categoria', $Sueldo, '$CodDpto');";
echo "<BR><B>\n",$consultaSQL;
$resultado = odbc_do($conex, $consultaSQL);
if ($resultado)
echo "<BR>Tupla insertada</B><BR>";
}
else
echo "<B>Debe introducir, al menos, Código y Nombre</B>";
odbc_close ($conex);
?>

Docente: Ing. MSc. Anaximandro Fernández Guerrero 7


Manejo de Base de Datos en PHP con Ms Access

Este programa producirá la salida de la siguiente página, el cuál mostrará que se ha insertado un tupla.

De igual manera que en caso anterior se debe iniciar Microsoft Access para verificar la inserción del
nuevo registro.

COMPROBACIÓN DE CODIGO EXISTENTE

La inserción en esta tabla de un código existente provocaría un error en la página, para evitar este
comportamiento antes de hacer la inserción de debe comprobar que dicho valor no exista previamente.

En el siguiente ejemplo se intenta ingresar un empleado con un código existente (E2)

Docente: Ing. MSc. Anaximandro Fernández Guerrero 8


Manejo de Base de Datos en PHP con Ms Access

EJEMPLO 03

Programa que permite la comprobación antes de insertar un nuevo registro.

<!-- insercioncomprobada.php-->
<?php
// Se establece la conexión con la fuente de datos
$conex = odbc_connect("empresa", "afg", "afg");
if (!empty($CodEmp))
{
$consultaSQL = "SELECT * FROM empleados";
$consultaSQL .= " WHERE CodEmp='$CodEmp';";
// Se ejecuta la consulta con el valor a insertar
$resultado = odbc_do($conex,$consultaSQL);
// Se solicita la primera fila obtenida
$Hay_Filas = odbc_fetch_row ($resultado);
if ($Hay_Filas)
{
// Si hay una fila, el valor ya existía en la tabla
echo "<B>Código: $CodEmp\n";
echo "<BR>Fila ya existente<BR></B>\n";
}
else
{
// Si no hay filas con ese valor, se inserta
$consultaSQL ="INSERT INTO empleados VALUES ('$CodEmp',
'$Nombre', '$Categoria', $Sueldo, '$CodDpto');";
echo "<BR>$consultaSQL\n";
$resultado = odbc_do($conex, $consultaSQL);
if ($resultado)
echo "<BR>Tupla insertada<BR>";
} // del else
} // de if (!empty($CodEmp))
// Se cierra la conexión
odbc_close($conex);
?>

Como se comento anteriormente se deseaba insertar un empleado con un código existente, entonces el
programa de comprobación muestra la siguiente pantalla, indicando que el código ingresado ya Existe en la
tabla.

Docente: Ing. MSc. Anaximandro Fernández Guerrero 9


Manejo de Base de Datos en PHP con Ms Access

EJEMPLO 04

RECORRIDO DE LOS REGISTROS DE UNA TABLA

Se explicará el proceso que se va ha realizar para realizar una lectura de los registro de una tabla.

Se establece la conexión.
Se crea la instrucción SQL que ejecuta la consulta.
Se solicita la ejecución de la instrucción SQL.
Se recibe un identificador en el que están los datos obtenidos a través del gestor. La estructura de datos
creada se puede recorrer secuencial mente.
Se procesa la información obtenida.
Se libera los recursos utilizados y se solicita el cierre de la conexión.

<!-- recorridocursor.php -->


<HTML>
<HEAD><TITLE>Prueba PHP con ODBC sobre Access</TITLE></HEAD>
<BODY>
<CENTER>
<FONT COLOR='blue'><H1> Tabla de Consulta de Datos</H1></FONT>
<HR><BR><BR>
<TABLE BORDER=1 WIDTH=90%>
<TR><TD ALIGN='center'><FONT COLOR='blue'>Código</FONT></TD>
<TD ALIGN='center'><FONT COLOR='blue'>Nombre</FONT></TD>
<TD ALIGN='center'><FONT COLOR='blue'>Categoría</FONT></TD>
<TD ALIGN='center'><FONT COLOR='blue'>Sueldo</FONT></TD>
<TD ALIGN='center'><FONT COLOR='blue'>Departamento</FONT></TD>
</TR>
<?php
// Se establece la conexión con la fuente de datos
$conex = odbc_connect("empresa", "afg", "afg");
$consulta = "SELECT * FROM Empleados;";
$resultado = odbc_do($conex, $consulta);
$Num_Campos = odbc_num_fields($resultado);
$Num_Filas = 0;
// Se recorre el cursor
while (odbc_fetch_row($resultado))
{
$Num_Filas++;
echo "<TR>";
for ($i = 1; $i <= $Num_Campos; $i++)
{
echo "<TD ALIGN='center'>";
if (odbc_result($resultado, $i))
echo odbc_result($resultado, $i);
echo "</TD>";
} //de los campos de una tupla: el for
echo "</TR>";echo "\n";
} // de todas las tuplas respuesta: el while

Docente: Ing. MSc. Anaximandro Fernández Guerrero 10


Manejo de Base de Datos en PHP con Ms Access

// Si noy hay datos se indica


if ($Num_Filas == 0)
{
echo "<TR><TD COLSPAN=9><CENTER>";
echo "No hay empleados";
echo "</CENTER></TD></TR>\n";
}
echo "</TABLE>\n";
echo "<BR><HR><BR>\n";
echo "<B>Número de filas: $Num_Filas<BR>\n";
echo "Número de campos: $Num_Campos</B>\n";
echo "</CENTER>";
//Se liberan recursos y se cierra la conexión
odbc_free_result($resultado);
odbc_close($conex);
?>
</BODY>
</HTML>

En el ejemplo se compone la instrucción SQL y se solicita su ejecución. El resultado se introduce en una


estructura cuyo identificador se almacena en una variable $resultado. Los Datos en la estructura se recorren
de arriba hacia abajo, lo cual viene hacer un recorrido habitual de una tabla relacional.

Como puede observar se muestra todo el contenido de la tabla, el número de Filas recuperadas y el número
de columnas.

Docente: Ing. MSc. Anaximandro Fernández Guerrero 11


Manejo de Base de Datos en PHP con Ms Access

FUNCIONES UTILIZADAS EN EL SCRIPT RECORRIDOCURSOR.PHP

ODBC_FETCH_ROW

Busca un registro.

Descripción

int odbc_fetch_row (int result_id [, int row_number])


Si odbc_fetch_row() fue satisfactoria retorna las filas ) es TRUE, si no hay ninguna fila retorna FALSE.

odbc_fetch_row() busca un registro de datos que fue devuelta por odbc_do() / odbc_exec(). Después de que
odbc_fetch_row() sea llamado, se puede acceder a los campos de este registro con odbc_result().
Si no se especifica row_number, odbc_fetch_row() intentara buscar el siguiente registro en los resultados.
Lamar a odbc_fetch_row() con o sin row_number puede ser mezclado.

Para pasar a través del resultado mas de una vez, se puede llamar a odbc_fetch_row() con row_number 1, y
después continuar haciendo odbc_fetch_row() sin row_number para revisar el resultado. Si un driver no
admitiese búsquedas de registros por número, el parámetro row_number seria ignorado.

ODBC_RESULT

Coge información de un campo.

Descripción

string odbc_result (int result_id, mixed field)


Devuelve el contenido de un campo.

field puede ser cualquier contenido del campo que queramos; o puede ser una cadena que contenga el
nombre del campo; Por ejemplo:

$item_3 = odbc_result($Query_ID, 3 );
$item_val = odbc_result($Query_ID, "val");

La primera sentencia odbc_result() devuelve el valor del tercer campo dentro del registro actual de la cola
resultante. La segunda función llama a odbc_result() y devuelve el valor de un campo cuyo nombre es "val"
en el registro actual de la cola resultante. Ocurre un error si un número de columna para un campo es menor
que uno o excede el número de campos en el registro actual. Similarmente, ocurre un error si un campo con
un nombre que no sea uno de los nombres de campo de una tabla o tablas que sea o sean encoladas.

Los índices de campo comienzan en 1. Recordando el método binario de campos con gran información, es
devuelto con referencia a odbc_binmode () y odbc_longreadlen().

ODBC_FREE_RESULT

Recursos libres asociados con un resultado.

Descripción
int odbc_free_result (int result_id)

Docente: Ing. MSc. Anaximandro Fernández Guerrero 12


Manejo de Base de Datos en PHP con Ms Access

Siempre Retorna TRUE.

odbc_free_result() solo necesita ser llamado en caso de preocupación por demasiado uso de memoria cuando
se ejecuta un script. Toda la memoria resultante quedara automáticamente liberada cuando el script finalice.
Pero si es seguro que no se vaya a necesitar la información nada mas que en un script, se deberá llamar a la
función odbc_free_result(), y la memoria asociada con result_id sera liberada.

Nota: Si la auto-entrega no esta activada la (ver odbc_autocommit()) y se ejecuta odbc_free_result() antes de


la entrega, todo queda pendiente de las transacciones que estén en lista.

EJEMPLO 05

CONSULTA DE TABLAS

La siguiente consulta muestra una consulta de la tabla Empleados, observe que al final contiene un error -1,
resultado obtenido a través de la función odbc_num_rows, como puede observar en el gráfico no funciona
adecuadamente.

<!-- constablaSQL.php -->


<HTML>
<HEAD><TITLE>Prueba PHP con ODBC sobre Access</TITLE></HEAD>
<BODY>
<CENTER>
<FONT COLOR='blue'><H1> Tabla de Consulta de Datos</H1></FONT>
<HR><Br><Br>
<TABLE BORDER=1 WIDTH=90%>
<TR><TD ALIGN='Center'><FONT COLOR='blue'>Código</FONT></TD>
<TD ALIGN='Center'><FONT COLOR='blue'>Nombre</FONT></TD>
<TD ALIGN='Center'><FONT COLOR='blue'>Categoría</FONT></TD>
<TD ALIGN='Center'><FONT COLOR='blue'>Sueldo</FONT></TD>
<TD ALIGN='Center'><FONT COLOR='blue'>Departamento</FONT></TD>
</TR>
<?php
// Se establece la conexión con la fuente de datos
$conex = odbc_connect("empresa", "afg", "afg");
// Se almacena la consulta en $consulta
$consulta = "SELECT * FROM empleados;";
// Se ejecuta la consulta
$resultado = odbc_do($conex, $consulta);
// Se obtiene el número de atributos de la tabla
$Num_Campos = odbc_num_fields($resultado);
// Se obtiene el número de filas de la tabla
$Num_Filas = odbc_num_rows($resultado);
// Se recorre el cursor
while (odbc_fetch_row($resultado))
{
echo "<TR>";
for ($i = 1; $i <= $Num_Campos; $i++)
{

Docente: Ing. MSc. Anaximandro Fernández Guerrero 13


Manejo de Base de Datos en PHP con Ms Access

echo "<TD ALIGN='CENTER'>";


if (odbc_result($resultado, $i) != NULL)
echo odbc_result($resultado, $i);
echo "</TD>";
} //de los campos de una tupla: el for
echo "</TR>\n";
} // de todas las tuplas respuesta: el while
// Si noy hay datos se indica
if ($Num_Filas == 0)
{
echo "<TR><TD COLSPAN=9><CENTER>";
echo "No hay empleados";
echo "</CENTER></TD></TR>\n";
}
echo "</TABLE\n>";
echo "<BR><HR><BR>\n";
// Código que obtiene el número de filas resultante del SQL
// anterior basándose en la función COUNT de SQL
$instruccion = "SELECT Count(*) FROM empleados;";
$Primera_Cuenta = odbc_do($conex, $instruccion);
//El count es el único atributo del resultado
$Num_Tuplas = odbc_result($Primera_Cuenta, 1);
echo "<B>El número de filas con count() es: <FONT COLOR='red'>";
echo "$Num_Tuplas</FONT><BR>\n";
echo "El número de filas con odbc_num_rows: <FONT COLOR='red'>";
echo "$Num_Filas</FONT>\n";
echo "<BR></B></CENTER>\n";
//Se liberan recursos y se cierra la conexión
odbc_free_result($resultado);
odbc_free_result($Primera_Cuenta);
odbc_close($conex);
?>
</BODY>
</HTML>

Docente: Ing. MSc. Anaximandro Fernández Guerrero 14


<!-- consform.php -->
<HTML>
<HEAD><TITLE>ODBC sobre Access</TITLE>
</HEAD> Manejo de Base de Datos en PHP con Ms Access
<BODY>
<CENTER>
<FONT COLOR='blue'><H1>Consulta de datos en Microsoft Access</H1>
</FONT><HR> EJEMPLO 06
<FORM NAME="formulario" METHOD='post' ACTION="consform.php">
<TABLE BORDER=1> El siguiente
<?php programa tiene como
// Se establece la conexión con la fuente de datos función de producir
$conex = odbc_connect("empresa", "afg", "afg"); una pantalla de
consulta con aspectos
if (!empty($CodEmp) ) de formulario en la
{ que el usuario puede
$consultaSQL = "SELECT * FROM empleados introducir un código
WHERE CodEmp = '$CodEmp';"; de empleado y el
$resultado = odbc_do($conex, $consultaSQL); programa PHP, busca
if (odbc_fetch_row($resultado)) el registro cuyo
{ código coincida con
$CodEmp = odbc_result($resultado, 1); el introducido y
$Nombre = odbc_result($resultado, 2); genera el formulario
$Categoria = odbc_result($resultado, 3); con los valores de los
$Sueldo = odbc_result($resultado, 4); campos.
$CodDpto = odbc_result($resultado, 5);
echo "<TR><TD>Código:</TD><TD>";
echo "<INPUT TYPE='Text' NAME='CodEmp' VALUE='$CodEmp'";
echo " SIZE=2></TD><TD>Nombre:</TD>\n<TD>";
echo "<INPUT TYPE='Text' NAME='Nombre' VALUE='$Nombre'";
echo " SIZE=30></TD></TR>\n<TR><TD>Categoria:</TD><TD>";
echo "<INPUT TYPE='Text' NAME='Categoria' ";
echo "VALUE='$Categoria' SIZE=15></TD><TD>Sueldo:</TD>";
echo "<TD><INPUT TYPE='Text' NAME='Sueldo' VALUE=$Sueldo ";
echo "SIZE=10></TD></TR>\n<TR>";
echo "<TD>Departamento:</TD><TD>";
echo "<INPUT TYPE='Text' NAME='CodDpto' ";
echo "VALUE='$CodDpto' SIZE=2></TD></TR>\n";
}
else //No encuentra el código introducido
{
echo "<TR>";
echo "<TD COLSPAN=2><B><CENTER>Código:";
echo $CodEmp,"</B></CENTER></TD></TR>";
echo "<TR><TD COLSPAN=2><B><CENTER>NO EXISTENTE";
echo "</CENTER></B></TD></TR>";
} // de si no existe el código introducido
} // del 1 if: si se ha introducido código
Else
{ // Se genera el formulario por primera vez
?>
<TR>
<TD>Código:</TD>
<TD><INPUT TYPE='Text' NAME='CodEmp' SIZE=2></TD>
<TD>Nombre:</TD>
<TD><INPUT TYPE='Text' NAME='Nombre' SIZE=30></TD>
</TR>
<TR>
Docente: Ing. MSc. Anaximandro Fernández Guerrero 15
<TD>Categoria:</TD>
<TD><INPUT TYPE='Text' NAME='Categoria' SIZE=15></TD>
<TD>Sueldo:</TD>
Manejo de Base de Datos en PHP con Ms Access

Este formulario sirve para realizar consultas individuales de registro a registro y se basa en las mismas
funciones expuestas en este programa, pero variando la instrucción SQL con una determinada condición de
búsqueda y así generar la pantalla con aspecto de formulario en vez de una tabla.

FUNCIONES UTILIZADAS PARA CONSULTAR DE DATOS

ODBC_NUM_FIELDS

Número de campos de un resultado.

Descripción

Docente: Ing. MSc. Anaximandro Fernández Guerrero 16


Manejo de Base de Datos en PHP con Ms Access

int odbc_num_fields (int result_id)


odbc_num_fields() devolverá el numero de campos dentro de un ODBC. Esta función devolverá -1 en caso
de error. El argumento es un identificador valido devuelto por odbc_exec().

ODBC_NUM_ROWS

Número de campos en un resultado.

Descripción

int odbc_num_rows (int result_id)


odbc_num_rows() devolverá el numero de registros de un ODBC. Esta función devolverá -1 en caso de
error. Para declaraciones INSERT, UPDATE y DELETE odbc_num_rows() devolverá el numero de registros
afectados. Para una cláusula SELECT esta puede ser el número de registros permitidos.

Nota: El uso de odbc_num_rows() para determinar el numero de registros permitidos después de un


SELECT devolverá -1.

ACTUALIZACION DE DATOS

La programación de una actualización de datos en PHP se realiza básicamente de igual manera que las
consultas, encontrando la diferencia en la consulta SQL, se debe utilizar la instrucción UPDATE,
evidentemente la lógica del programa debe realizar la comprobación de que fila se desea actualizar.

EJEMPLO 07

En este ejemplo se muestra todos los registros de la tabla empleado, como puede apreciar hay una
columna (Modificar), que contiene un enlace a un programa en donde mostrará los datos del registro
seleccionado.

Docente: Ing. MSc. Anaximandro Fernández Guerrero 17


Manejo de Base de Datos en PHP con Ms Access

<!-- MuestraTodos.php -->


<HTML>
<HEAD><TITLE>Prueba PHP con ODBC sobre Access</TITLE></HEAD>
<BODY><CENTER>
<FONT COLOR='blue'><H1> Listado de Empleados</H1></FONT>
<HR><BR><BR>
<TABLE BORDER=1 WIDTH=90%>
<TR><TD ALIGN='center'><FONT COLOR='blue'>Código</FONT></TD>
<TD ALIGN='center'><FONT COLOR='blue'>Nombre</FONT></TD>
<TD ALIGN='center'><FONT COLOR='blue'>Categoría</FONT></TD>
<TD ALIGN='center'><FONT COLOR='blue'>Sueldo</FONT></TD>
<TD ALIGN='center'><FONT
COLOR='blue'>Departamento</FONT></TD>
<TD ALIGN='center'><FONT COLOR='blue'>Modificar</FONT></TD>
<TD ALIGN='center'><FONT COLOR='blue'>Eliminar</FONT></TD>
</TR> <?php
// Se establece la conexión con la fuente de datos
$conex = odbc_connect("empleados", "afg", "afg");
$resultado = odbc_do($conex, "SELECT * FROM empleados;");
// Se recorre el cursor
while (odbc_fetch_row($resultado)){
$Campo1=odbc_result($resultado,1);
$Campo2=odbc_result($resultado,2);
$Campo3=odbc_result($resultado,3);
$Campo4=odbc_result($resultado,4);
$Campo5=odbc_result($resultado,5);
echo
"<TR><TD>$Campo1</TD><TD>$Campo2</TD><TD>$Campo3</TD>
<TD>$Campo4</TD><TD>$Campo5</TD>";
print "<TD><a href=Modificar.php?
codigo=$Campo1>Modificar</a></TD>";
print "<TD><a href=Eliminar.php?
codigo=$Campo1>Eliminar</a></TD></TR>";
} // de todas las tuplas respuesta: el while
echo "</TABLE>\n";
echo "</CENTER>";
//Se liberan recursos y se cierra la conexión
odbc_free_result($resultado);
odbc_close($conex);
?></BODY></HTML>

Docente: Ing. MSc. Anaximandro Fernández Guerrero 18


Manejo de Base de Datos en PHP con Ms Access

EJEMPLO 08

Como observa en este formulario muestra los datos del registro seleccionado, el usuario podrá cambiar los
datos de dicho registro y luego deberá hacer click en el Botón Grabar.

<!-- Modificar.php -->


<HTML><HEAD><TITLE>Trabajando con Access - Modificar
Cliente</TITLE></HEAD><BODY><CENTER>
<FONT COLOR='blue'><H1> Datos del Empleado</H1></FONT>
<HR><BR><?php
// Se establece la conexión con la fuente de datos
$conex = odbc_connect("empleados", "afg", "afg");
$resultado = odbc_do($conex, "SELECT * FROM empleados where
CodEmp='$codigo';");
// Se recorre el cursor
while (odbc_fetch_row($resultado))
{
$Campo1=odbc_result($resultado,1);
$Campo2=odbc_result($resultado,2);
$Campo3=odbc_result($resultado,3);
$Campo4=odbc_result($resultado,4);
$Campo5=odbc_result($resultado,5);}
//Se cierra la conexión
odbc_close($conex);
?><BR>
<FORM NAME="miformulario" ACTION="ModificarCliente.php">
<table border=1>
<tr> <td>Código:</td>
<td><input type="Text" name="t1" value="<?echo $Campo1?>" size=6

Docente: Ing. MSc. Anaximandro Fernández Guerrero 19


Manejo de Base de Datos en PHP con Ms Access

maxlength=6></td>
</tr> <tr> <td>Apellidos y Nombres:</td>
<td><input type="Text" name="t2" value="<?echo $Campo2 ?>" size=40
maxlength=40></td></tr>
<tr> <td>Categoría:</td>
<td><input type="Text" name="t3" value="<?echo $Campo3 ?>" size=40
maxlength=40></td></tr>
<tr> <td>Sueldo:</td>
<td><input type="Text" name="t4" value="<?echo $Campo4 ?>" size=40
maxlength=40></td></tr>
<tr> <td>Departamento:</td>
<td><input type="Text" name="t5" value="<?echo $Campo5 ?>" size=40
maxlength=40></td></tr>
</tr> </table> <p>
<input type="submit" value="Grabar">
<input type="reset" value="Cancelar">
</p></FORM> <br>
<a href=MuestraTodos.php>Mostrar Registros</a><p>
</CENTER></BODY></HTML>

Después de hacer clic en el botón Grabar, mostrará la siguiente pantalla, indicando que el registro ha sido
Actualizado.

<!-- ModificarCliente.php -->


<?php
// Se establece la conexión con la fuente de datos
$conex = odbc_connect("empleados", "afg", "afg");
$consultaSQL ="update Empleados set Nombres='$t2',Categoria='$t3',
Sueldo='$t4', CodDpto='$t5' where CodEmp='$t1';";
echo "<BR><B>\n",$consultaSQL;
$resultado = odbc_do($conex, $consultaSQL);
if ($resultado)
{ echo "<BR>Tupla Actualizada</B><BR>"; }
else
{ echo "Erro de Transacción ...........!!!!!!!</B>"; }
odbc_close ($conex);
print "<HR>"; print "<br>";
print "<a href=MuestraTodos.php>Regresar al Listado</a><p>";
?>

Docente: Ing. MSc. Anaximandro Fernández Guerrero 20


Manejo de Base de Datos en PHP con Ms Access

ELIMINACIÓN

Las operaciones de borrado se efectúan exactamente igual al programa anterior, con su correspondiente
instrucción de eliminación (delete)

EJEMPLO 08

Observe el último registro (E7, Campos Olivos Juan, Administrador, 1800, D2), será eliminado con el
siguiente programa Eliminar.php

<!-- Eliminar.php -->


<?php
// Se establece la conexión con la fuente de datos
$conex = odbc_connect("empleados", "afg", "afg");
$consultaSQL ="delete from Empleados where CodEmp='$codigo';";
echo "<BR><B>\n",$consultaSQL;
$resultado = odbc_do($conex, $consultaSQL);
if ($resultado) {
echo "<BR>Tupla Eliminada</B><BR>";
}
else { echo "<B>Error a Procesar la Transacción ...!!!!</B>";
} odbc_close ($conex);
print "<HR>"; print "<br>";
print "<a href=MuestraTodos.php>Regresar al Listado</a><p>";
?>

Al igual del programa anterior, mostrará la siguiente pantalla, indicando que el registro ha sido eliminado.

Docente: Ing. MSc. Anaximandro Fernández Guerrero 21


Manejo de Base de Datos en PHP con Ms Access

Como puede observar en la siguiente figura el registro ya no se encuentra en la tabla.

Docente: Ing. MSc. Anaximandro Fernández Guerrero 22

Anda mungkin juga menyukai