|
10-Entrada
y salida en PHP
Las
operaciones de entrada/salida en PHP tienen una gran importancia
en cualquier lenguaje de programacion ya que no tiene sentido
que un lenguaje de programacion no pueda escribir,leer,actualizar
datos de una base de datos,etc. En este capitulo nos centraremos
basicamente en las operaciones de entrada y salida con archivos
y posteriormente explicaremos las operaciones con bases de
datos.
Supongamos
que deseamos hacer una tienda de compra online, imaginemos
el gran esfuerzo que supondria tener que modificar todas las
paginas HTML de aquellos productos en los cuales en la temporada
de oferta su precio se viera afectado. La solucion mas primitiva
para el almacenamiento de datos es un fichero de texto, el
contenido del fichero de texto puede ser cualquiera.
¿Como
abrimos un fichero?
Para
abrir un fichero PHP pone a disposicion una funcion.Su sintaxis
es la siguiente:
fopen(fichero,modo); la ruta del fichero se indica en fichero
:P y modo determina los diferentes modos de lectura de un
archivo:
Atributo
Efecto
r Solo lectura
r+ Lectura y escritura
w Solo escritura.Borra el contenido anterior
w+ Lectura y escritura.Borra el contenido anterior.
a Solo escritura.Conserva el contenido anterior.
a+ Lectura y escritura.Conserva el contenido anterior
¿Como
se recorre un fichero?
Para
leer un fichero logicamente la operacion es muy sencilla(consiste
en ir leyendo todos los caracteres hasta llegar al EOF(end
of file... final del archivo) el cual determina el final del
texto). Al igual que en las matrices los ficheros poseen un
cursor interno que indica su posicion actual con respecto
a todo el texto. Para comprobar si se ha llegado al final
del archivo PHP pone a nuestra disposicion de la funcion feof(fichero);
que se encarga de comprobar si la posicion actual del fichero
es la marca del final. La funcion mas generica de lectura
es fread(fichero,nº_bytes); que se encarga de leer un
numero determinado de bytes del fichero y delvolvernoslo en
una cadena de caracteres, en cambio, si lo que pretendemos
es leer el fichero caracter a caracter debemos usar la funcion
fgetc(fichero); . Otras de las funciones mas caracteristicas
son: fgets(fichero,nº bytes); que nos devuelve una cadena
de caracteres con la informacion leida. fgetss(fichero,nº
bytes,[mostrar_tags]); nos lee un fichero HTML omitiendo las
etiquetas caracteristicas del codigo, en mostrar tags debemos
introducir las etiquetas que deseamos que se muestren.
Si
al realizar la lectura lo que se pretenden leer los valores
que siguen un determinado formato de entrada nos podemos ahorrar
un gran trabajo usando la funcion fscanf(fichero,formato,variables);
esta funcion obtiene los datos de entrada de un fichero siguiendo
un formato determinado, posteriormente dicha informacion debe
ser tratada por el programador.
La ultima funcion que vamos a estudiar para abrir ficheros
es la funcion file(nombre_fichero); con esta funcion no es
necesario usar las funciones fopen() y fclose() ya que se
ejecutan de forma implicita.
¿Como
se cierra un fichero?
Cerrar
es la ultima operacion que se debe realizar al manipular un
fichero y permite cerrar la referencia que se hace al fichero
en el script ejecutado. Para poder cerrar un fichero usamos
la funcion fclose(fichero);
Escritura
en ficheros
Para
escribir en un fichero basicamente debemos realizar tres operaciones:
abrir el fichero en modo escritura, realizar la operacion
de escritura realizada, cerrar el fichero. Las funciones que
empleamos para escribir en un fichero son fputs(fichero,cadena);
y fwrite(fichero,cadena); que nos permiten añadir una
cadena de caracteres al texto anterior contenido en el texto.
Acceso
directo en ficheros
Existen
un conjunto de funciones que nos permiten situarnos en una
determinada posicion del fichero para leer a partir de ahi.
La funcion fseek(fichero,posicion); Nos permite empezar a
leer un fichero a partir de una posicion segun se determine:
seek_set(se toma con el principio del fichero),seek_cur(posicion
actual),seek_end(posicion final).
Existen
dos funciones basicas que nos posicionan al principio del
fichero -> rewind(fichero); o que nos devuelven el valor
actual de la posicion-> ftell(fichero);
Funciones
variadas para el manejo de ficheros
fpassthru(fichero);
Nos muestra el contenido referenciado por manejador de fichero.Devuelve
el numero de bytes mostrados si no se produce ningun fallo.
set_file_buffer(fichero,tamaño); Determina el tamaño
del buffer de ese archivo que usara PHP
readfile(fichero); Lee un fichero y lo muestra por el metodo
de salida estandar
|