ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

33
ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados

Transcript of ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

Page 1: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

ECOM-6030CAPÍTULO 2

STORING & RETRIEVING DATA

Prof. Nelliud D. Torres© - Derechos Reservados

Page 2: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

CONTENIDO• USO DE ARCHIVOS• MANEJO DE ARCHIVOS• ABRIENDO ARCHIVOS• FUNCIÓN fopen()• PARÁMETROS (FILE MODE)• ESCRIBIR A UN ARCHIVO fwrite()• CERRANDO UN ARCHIVO fclose()• LABORATORIOS

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 2

Page 3: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

CONTENIDO• FUNCIÓN feof()• FUNCIONES fgets(), fgetss(), fgetcsv()• LECTURA DE CARACTERES• FUNCIONES ADICIONALES

– file_exists()– filesize()– unlink()– rewind()– ftell()– fseek()

• HACIENDO LOCKS DE ARCHIVOS• PROBLEMAS DE ARCHIVOS SECUENCIALES

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 3

Page 4: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

USO DE ARCHIVOS• En este capítulo vamos a aprender a escribir los

datos que se obtienen de la forma del laboratorio pasado en un archivo secuencial.

• Más adelante vamos a ver como leer de nuevo esos datos.

• Aunque no es buena idea escribir datos en archivos provenientes de una forma (form) que pueden utilizar muchos clientes a la vez (Bases de datos), existen situaciones en donde conviene utilizarlos.

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 4

Page 5: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

MANEJO DE ARCHIVOS - 1• Existen dos formas de leer archivos en PHP.

1. Archivos flats (secuenciales)2. Bases de Datos.

• La forma de manejar archivos en PHP es muy similar a la que se utiliza en C. Por lo tanto aquellos que estén familiarizados en el manejo de archivos en C, no deben tener problema de trabajarlos en PHP.

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 5

Pag. 57

Page 6: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

MANEJO DE ARCHIVOS - 2• Escribir datos a un archivo requiere 3 pasos:

1. Abrir el archivo, si el archivo no existe, se crea.2. Escribir los datos al archivo.3. Cerrar el archivo.

• Por otro lado, leer los archivos también requieren 3 pasos.1. Abrir el archivo, si no existe, abortar la operación.2. Leer los datos del archivo.3. Cerrar el archivo.

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 6

Pag. 59

Page 7: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

ABRIENDO ARCHIVOS• Para abrir archivos en PHP se utiliza la función

fopen().

• Existen tres opciones cuando se abre un archivo:1. Se puede abrir un archivo únicamente para leer, escribir o

ambas operaciones.2. Si se desea escribir, se puede hacer en un archivo que ya existe

(reemplazar) o se puede añadir (append) al final del archivo si ya tiene datos. También se puede abortar la operación si el archivo existe y no se desea modificarlo.

3. Si el sistema operativo trabaja con archivos binarios y de texto, hay que indicarlo al momento de abrirlo.

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 7

Pag. 59-60

Page 8: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

FUNCIÓN fopen()• Para abrir un archivo, se utiliza el siguiente formato.• $fp = fopen(“$DOCUMENT_ROOT/../orders/orders.txt”, ’w’);

1. fopen() puede utilizar hasta cuatro parámetros, en el ejemplo sólo utiliza dos.

2. El primer parámetro es el path en donde va a estar el archivo que deseamos abrir.

3. El segundo parámetro indica (file mode) el modo de acceder.4. Como el directorio puede cambiar, se utiliza una variable built-

in en PHP y el formato para guardarla y abreviarla es:• $DOCUMENT_ROOT = $_SERVER[‘DOCUMENT_ROOT’];

5. Los dos puntos se utilizan para separar el directorio principal del directorio final y documento. A mi me trabajo con uno.

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 8

Pag. 60-61

Page 9: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

RESUMEN PARÁMETROS FILE MODEMODE MODE NAME MEANING

r Read Abre el archivo para leer comenzando desde el principio.

r+ Read Abre el archivo para leer y escribir desde el principio.

w Write Abre el archivo para escribir. Si existe borra el contenido. Si no existe, trata de crearlo en blanco.

w+ Write Abre el archivo para escribir y leer. Si existe borra el contenido. Si no existe, trata de crearlo en blanco.

x Cautious write Abre para escribir. Si el archivo existe, no lo abre.

x+ Cautious write Abre para escribir y leer. Si el archivo existe, no lo abre.

a Append Abre para escribir (append) al final del archivo. Si no existe, trata de crearlo.

a+ Append Lo mismo que el anterior solo que escribe y lee.

b Binary Se incluye con una de las otras, indica archivo binario.

t Text Indica archivo de texto.8/12/2007 © - Derechos Reservados - Prof. Nelliud D.

Torres9

Pag. 61

Page 10: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

USOS DEL fopen()• El siguiente ejemplo muestra como se puede abrir un

archivo y corroborar si abrió exitosamente.

@ $fp = fopen(“$DOCUMENT_ROOT/../orders/orders.txt”, ‘ab’);

if (!$fp)

{

echo ‘<p><strong> Your order could not be processed at this time. ‘

.’Please try again later.</strong></p></body></html>’;

exit;

}

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 10

Pag. 64

La @ evita que salga un mensaje de error al usuario.

Coteja si no se abrió el archivo exitosamente.

Aborta el script.

Este mensaje de error controlado es más fácil para que el usuario lo entienda que el mensaje de error que tira PHP.

Page 11: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

ESCRIBIR A UN ARCHIVO fwrite()• Hay dos funciones: fwrite() y fputs() (alias).• Ejemplo para escribir: fwrite ($fp,

$outputstring);• $fp – Pointer del archivo abierto.• $outputstring – String con lo que queremos

guardar en el archivo (línea).• Ejemplo de cómo generar un string como record:

$outputstring = $date.”\t”.$tireqty.” tires \t”.$oilqty.” oil\t”.$sparkqty.” spark plugs\t\$”.$totalamount.”\t”.$address.”\n”;

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 11

Pag. 65-66Al principio de la página 67 hay un ejemplo de un posible output de esta instrucción.0

Page 12: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

CERRANDO UN ARCHIVO fclose()• La función para cerrar un archivo es fclose():• Ejemplo: fclose($fp)• $fp – Pointer del archivo abierto.• Esta función devuelve true si el archivo pudo

cerrarse exitosamente.

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 12

Pag. 65-66

Page 13: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

FUNCIÓN fopen()• Para leer de un archivo secuencial utilizamos la

siguiente directiva:$fp = fopen(“$DOCUMENT_ROOT/../orders/orders.txt”, ‘rb’);

• rb – Significa que se va a leer del archivo desde el principio y que está en formato binario.

• Cualquier duda adicional, favor de cotejar los parámetros de file mode (página 61).

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 13

Pag. 70

Page 14: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

FUNCIÓN feof() (Cont.)•feof() – Devuelve true si el pointer llegó al final del archivo y no hay mas datos que leer. El siguiente ejemplo muestra como se puede crear un ciclo que permita leer datos de un archivo hasta llegar al final.

while (!feof($fp))

while (!feof($fp))

{

$order= fgets($fp, 999);

echo $order.'<br />';

}

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 14

Pag. 71

Mientras no se ha llegado al final del archivo.

Lee la próxima línea del archivo y muéstrala en el Browser al cliente.

Page 15: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

FUNCIONES fgets(), fgetss(), fgetcsv()• fgets()– Lee una línea a la vez. En el siguiente ejemplo se lee una

línea del archivo hasta que se encuentra un carácter tipo newline (\n) o un EOF ó se hallan leído 998 bytes (siempre uno menos).

$order = fgets($fp, 999)

• fgetss() – Funciona igual al fgets() con la diferencia de que elimina cualquier tag de HTML o de PHP que encuentre en el string.

• fgetcsv() – Divide las líneas del archivo de acuerdo al delimitador que se especifique. Normalmente se utiliza el tab (\t) y la coma (,). Por ejemplo:

$order = fgetcsv($fp,100,”\t”);

• Aquí el delimitador es el TAB o hasta que lea a 99 caracteres. La variable order se convierte en arreglo ya que esta función devuelve un arreglo con las diferentes líneas.

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 15

Pag. 71

Page 16: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

FUNCIONES readfile(), fpassthru(), file()• readfile()– Abre el archivo, envía el contenido al standar output

(browser) y finalmente cierra el archivo. Ejemplo:readfile(“DOCUMENT_ROOT/../orders/orders.txt”);

• fpassthru() – Hay que abrir primero el archivo utilizando fopen() y se pasa el pointer del archivo como argumento de esta función. Finalmente se pasa el output al browser y se cierra el archivo automáticamente. Ejemplo:

$fp = fopen(“DOCUMENT_ROOT/../orders/orders.txt”);

fpassthru($fp);

• file() – Idéntica a readfile() con la diferencia de que el contenido del archivo no se muestra en el browser, sino que se almacena en un arreglo. Por ejemplo:

$filearray = file(“DOCUMENT_ROOT/../orders/orders.txt”);

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 16

Pag. 72

Page 17: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

LECTURA DE CARACTERES• fgetc()– Permite leer un archivo de carácter en carácter. Ejemplo:while (!feof($fp))

{

$char = fgetc($fp);

if (!feof($fp))

echo ($char==“\n” ? ‘<br />’ : $char);

}

• Aquí se lee carácter por carácter en el archivo y al encontrarse el carácter de newline (\n) se cambia por el que utiliza HTMl (<br />).

• fread() – Lee una cantidad arbitraria de caracteres que indica el programador. Termina la lectura cuando llegue a esa cantidad de caracteres o se encuentre el final de archivo. Ejemplo:

fread($fp,100); // Lee 100 caracteres

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 17

Pag. 73

Page 18: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

FUNCIONES ADICIONALES• file_exists()– Coteja si el archivo indicado existe o no.

Ejemplo:if (file_exists(“DOCUMENT_ROOT/../orders/orders.txt”))

echo ‘existen órdenes que tienen que ser procesadas’;

else

echo ‘No hay ordenes para procesar’;

• filesize() – Devuelve el tamaño del archivo en bytes, se puede utilizar con la función fread() para leer todo el archivo. Ejemplo:

$fp = fopen(“DOCUMENT_ROOT/../orders/orders.txt”);echo n12br(fread($fp,filesize(“DOCUMENT_ROOT/../orders/orders.txt”)));

fclose($fp)

• La función n12br convierte los (\n) a (<br />).8/12/2007 © - Derechos Reservados - Prof. Nelliud D.

Torres 18

Pag. 72

Page 19: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

FUNCIONES ADICIONALES (Cont.)• unlink()– Elimina físicamente un archivo. Devuelve falso si no

pudo eliminarlo por alguna razón. Ejemplo:unlink(“DOCUMENT_ROOT/../orders/orders.txt”);

• rewind() – Cambia la posición del cursor al principio del archivo. Ejemplo: rewind($fp)

• ftell() – Indica cuan lejos a llegado el cursor desde el principio del archivo en términos de bytes. Ejemplo: ftell($fp)

• fseek() – Posiciona el pointer en la posición que le indique el programador. Ejemplo: fseek($fp,200). Esto mueve el cursor 200 bytes hacia delante. Se puede utilizar en conjunto con la función filesize().

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 19

Pag. 74-75

Page 20: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

HACIENDO LOCKS DE ARCHIVOS• Si utilizamos la técnica de almacenar órdenes en archivos

secuenciales, nos puede traer muchos problemas.• Primero si dos más usuarios a la vez están llenando órdenes, hay un

problema ya que una vez que el archivo lo abre un usuario para escribir, el otro o no puede utilizarlo o escribe encima de lo que escribió el cliente anterior.

• Aunque la mejor solución es utilizar Bases de Datos, para este ejemplo vamos a mostrar técnicas de trancar el archivo (lock).

• La función que “tranca” un archivo se llama flock().• Al trancar el archivo, los demás usuarios que quieren utilizarlo

tienen que esperar hasta que se libere.• Ojo – Si son muchos los usuarios que tienen que trabajar el archivo,

esta técnica puede poner lento al servidor, sin embargo para ciertas situaciones esta técnica puede ser viable.

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 20

Pag. 76

Page 21: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

FUNCIÓN flock()• Utiliza dos argumentos, los cuales son: el

pointer del archivo y la acción a tomar. A continuación se muestra una tabla de las diferentes acciones:

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 21

Pag. 76-77

ARGUMENTO SIGNIFICADO

LOCK_SH Reading log. El archivo puede ser compartido para leer.

LOCK_EX Writing lock. Sólo un usuario puede escribir en el archivo a la vez.

LOCK_UN Quita el lock al archivo.

LOCK_NB Se previene el bloqueo en lo que se adquiere el lock.

Page 22: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

FUNCIÓN flock() (Cont.)• A continuación se muestran dos ejemplos del uso

del lock:Lectura:$fp = fopen(“$DOCUMENT_ROOT/../orders/orders.txt”, ‘r’);

flock($fp, LOCK_SH); // Hace un lock para leer

// Aquí se escriben las instr. para leer del archivo

flock($fp, LOCK_UN); // Libera el lock

fclose($fp);

Escritura:$fp = fopen(“$DOCUMENT_ROOT/../orders/orders.txt”, ‘ab’);

flock($fp, LOCK_EX); // Hace un lock para escribir

fwrite($fp, $outputstring);

flock($fp, LOCK_UN); // Libera el lock

fclose($fp);

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 22

Pag. 76-77

Page 23: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

USO DE ARCHIVOS SECUENCIALESProblemas al utilizar archivos secuenciales

1. Según crece el archivo, se va poniendo lento el acceso.2. Buscar un record o grupos de record es difícil.3. Trabajar con accesos concurrentes es complicado.4. No se pueden crear niveles para acceder los datos

(seguridad).

Ventajas de utilizar un RDBMS1. Rapidez al acceder los datos (MySQL).2. Se puede extraer fácilmente porciones de los datos.3. EL RDBMS tiene mecanismos para manejar varios

usuarios simultáneamente (no hay que programarlo).4. Acceso random a la data y manejo de privilegios.

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 23

Pag. 77-78

Page 24: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

LABORATORIO - 1• Utilizando el código HTML del laboratorio pasado pero

incluyendo la dirección del cliente como se ve a continuación: (se puede bajar de la página)

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 24

Pag. 67

Page 25: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

LABORATORIO – 1 – CÓDIGO - A<?php

// create short variable names

$tireqty = $_POST['tireqty'];

$oilqty = $_POST['oilqty'];

$sparkqty = $_POST['sparkqty'];

$address = $_POST['address'];

$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];

?>

<html>

<head>

<title>Bob's Auto Parts - Order Results</title>

</head>

<body>

<h1>Bob's Auto Parts</h1>

<h2>Order Results</h2>

<?php

$date = date('H:i, jS F');

echo '<p>Order processed at ';

echo $date;

echo '</p>';

echo '<p>Your order is as follows: </p>';

$totalqty = 0;

$totalqty = $tireqty + $oilqty + $sparkqty;

echo 'Items ordered: '.$totalqty.'<br />';

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 25

Pag. 67

Page 26: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

LABORATORIO – 1 – CÓDIGO - Bif( $totalqty == 0)

{

echo 'You did not order anything on the previous page!<br />';

}

else

{

if ( $tireqty>0 )

echo $tireqty.' tires<br />';

if ( $oilqty>0 )

echo $oilqty.' bottles of oil<br />';

if ( $sparkqty>0 )

echo $sparkqty.' spark plugs<br />';

}

$totalamount = 0.00;

define('TIREPRICE', 100);

define('OILPRICE', 10);

define('SPARKPRICE', 4);

$totalamount = $tireqty * TIREPRICE

+ $oilqty * OILPRICE

+ $sparkqty * SPARKPRICE;

$totalamount=number_format($totalamount, 2, '.', ' ');

echo '<p>Total of order is '.$totalamount.'</p>';

echo '<p>Address to ship to is '.$address.'</p>';

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 26

Pag. 67

Page 27: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

LABORATORIO – 1 – CÓDIGO - C$outputstring = $date."\t".$tireqty." tires \t".

$oilqty." oil\t".$sparkqty." spark plugs\t\$".$totalamount."\t". $address."\n";

// open file for appending

@ $fp = fopen("$DOCUMENT_ROOT/./Ejemplo-2/orders.txt", 'ab');

flock($fp, LOCK_EX);

if (!$fp)

{

echo '<p><strong> Your order could not be processed at this time. '

.'Please try again later.</strong></p></body></html>';

exit;

}

fwrite($fp, $outputstring, strlen($outputstring));

flock($fp, LOCK_UN);

fclose($fp);

echo '<p>Order written.</p>';

?>

</body>

</html>

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 27

Pag. 67

Me corre de esta manera

Tiene el path hasta llegar a www

Page 28: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

LABORATORIO - 2• Antes de seguir con este laboratorio, corra la forma con el

código que permite guardar las ordenes de compra y asegúrese de que incluye por lo menos cinco solicitudes (de cinco clientes). Entre direcciones diferentes.

• Al terminar, se supone que se cree el archivo secuencial con los datos que usted entro en la forma.

• Ahora se va a crear el código en PHP que se muestra en el siguiente slide que va a leer el archivo creado y lo va a mostrar en la forma:

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 28

Pag. 67

Page 29: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

LABORATORIO – 2 – CÓDIGO<?php

//create short variable name

$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];

?>

<html>

<head>

<title>Bob's Auto Parts - Customer Orders</title>

</head>

<body>

<h1>Bob's Auto Parts</h1>

<h2>Customer Orders</h2>

<?php

 @ $fp = fopen("$DOCUMENT_ROOT/./Ejemplo-2/orders.txt", 'rb');

 

if (!$fp)

{

echo '<p><strong>No orders pending.'

.'Please try again later.</strong></p>';

exit;

}

while (!feof($fp))

{

$order= fgets($fp, 999);

echo $order.'<br />';

}

 

echo 'Final position of the file pointer is '.(ftell($fp));

echo '<br />';

rewind($fp);

echo 'After rewind, the position is '.(ftell($fp));

echo '<br />';

 

 

fclose($fp);

 

?>

</body>

</html>

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 29

Pag. 67

Este directorio fue creado por mi dentro de www.

Page 30: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

EJEMPLO DE CORRIDA DE LA FORMA

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 30

Page 31: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

EJEMPLO DE LA CORRIDA DE PHP

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 31

Page 32: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

EJEMPLO DE LA CORRIDA QUE LEE LOS DATOS

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 32

Page 33: ECOM-6030 CAPÍTULO 2 STORING & RETRIEVING DATA Prof. Nelliud D. Torres © - Derechos Reservados.

REFERENCIAS

• PHP and MySQL Web Development, Third Edition, Luke Welling, and Laura Thomson

• http://www.easyphp.org/

8/12/2007 © - Derechos Reservados - Prof. Nelliud D. Torres 33