miércoles, 13 de noviembre de 2013

Conoce acerca delectura de archivos directosdiscos php



Grabar y lectura de registros o estructuras a renglones o registros de archivos en disco.
Estos dos procesos son los casos mas comunes y frecuentes que se pueden realizar con un archivo de disco.
GRABACION DE UNA ESTRUCTURA A UN ARCHIVO EN DISCO
Prog28.php
<HTML>

<FORM ACTION=prog28.php METHOD=post>

<INPUT TYPE=submit NAME=OK VALUE="consulta"><BR>

</FORM></HTML>

<?php

if ($OK == "consulta") {

// tamano registro y cantidad de registros

$TR=47;$CR=filesize('datos.dat') / $TR;

// creando y abriendo archivo

$archivo=fopen('datos.dat','a+') or die("no puedo abrir archivo");

//empezando una tabla html

echo "<HTML><TABLE Border=10 CellPadding=5><TR>";

echo"<th bgcolor=Green>CLAVE</th><th bgcolor=White>NOMBRE</th><th bgcolor=Red>EDAD</th><th bgcolor=YellowRed>ESTATURA</th></TR>";

// abriendo en lectura el registro

for($x=1; $x<=(int)$CR; $x=$x+1)

{

// leyendo y desempacando el registro

$reg=fread($archivo,$TR);

$reg= unpack("iclave/A30nombre/iedad/destatura/A1bandera", $reg);

// desplegando

if ($reg[bandera] == "A"){

echo"<tr>";

echo "<td>".$reg[clave]."</td>";

echo "<td>".$reg[nombre]."</td>";

echo "<td>".$reg[edad]."</td>";

echo "<td>".$reg[estatura]."</td>";

echo"</tr>"; };

};

//cerrando archivo y tabla

echo "</table>";

fclose($archivo);

};

?>

corrida:
image116.jpg
El archivo se abre tambien en “a+”.
Los datos se desplieganen una tabla html.
Se usa un ciclo de lectura for( 1 to cantidad de renglones) observar que el tamano del registro 47 BYTES se debera calcular con la tabla dada en el tema anterior, para este caso es entero 4bytes+ string 30bytes+ entero 4bytes+ float 8bytes+ string 1byte=47, pero si tienen dudas, solo grabar un registro y ver su tamano desde la consola.
La cantidad de registros se calculo usando una funcion de php filesize($archivo) que regresa la cantidad de bytes que tiene en total el archivo.
Se usa fread(archivo, cantidad de bytes a leer) para cargar la variable que contendra la informacion leida del archivo en disco.
Despues se tendra que desempacar la informacion, se esta usando la misma variable para obtener la informacion desempacada.
Observar primero:
1.- unpack regresa un ARREGLO ASOCIATIVO(ver este tema en la unidad de arreglos), si en la parte de marcadores de unpack no se ponen los nombres de los campos, el arreglo quedara cargado con indices numericos 1,2,3…n
2.- En la parte de marcadores ahora si se tiene que incluir el separador / entre cada marcador, recordar que aparte del marcador se tendra que incluir el nombre del campo o tendran que usar indices numericos.
3.- Por suspuesto que el empacado pack(int,int,float,string) tiene que corresponder con el desempacado unpack(int,int,float,string) o se va a tener un monton de problemas.
Se esta usando un if(bandera) para solo desplegar los registros que estan en ALTA.
Y cada campo se debera procesar con el formato normal de ARREGLOS ASOCIATIVOS es decir $nomarreglo[campo]
No olvidar cerrar la tabla html y el archivo.
TAREAS PROGRAMACION PHP
1.- Cargar y Leer los archivos de disco pedidos en el tema anterior.

Fuente:enlace



"Desarrolla tus ideas con los Cursos, Diplomados y Maestría en Uneweb www.uneweb.edu.ve"

No hay comentarios:

Publicar un comentario

Entradas populares