UNIDAD 6: LINUX PHP REGISTROS Y ARCHIVOS DIRECTOS

TEMA 4: BUSQUEDA ARCHIVOS PHP

En este tema se analiza la busqueda de un registro o renglon determinado.

En este proceso el usuario del programa quiere que se despliegue un y solo un registro de informacion proporcionando un dato de busqueda generalmente la clave del registro.

Recordar que en esta operacion se muestra la diferencia fundamental entre archivos secuenciales y archivos directos, es decir aqui se puede accesar directamente un registro n cualesquiera.

Prog29.php

<HTML>
<FORM ACTION=prog29.php METHOD=post>
DAME CLAVE A BUSCAR:<INPUT TYPE=text NAME=CLAVE><BR>
<INPUT TYPE=submit NAME=OK VALUE="BUSCAR"><BR>
</FORM></HTML>
<?php
if ($OK == "BUSCAR") {
// 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>";
// colocandonos en byte de registro a leer
if ( $CLAVE * $TR < filesize('datos.dat') )
{
fseek($archivo, $CLAVE * $TR);
// 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:

image117.jpg

El if() antes de la instruccion FSEEK() se esta usando para evitar que se intente leer un renglon del archivo que se encuentre despues del EOF (end of file) del archivo.

Como se desprende del programa usando fseek() es posible posicionarse en cualquier byte del archivo.

El formato completo de fseek() es:

seek(apuntador, clave*tamanoregistro);

donde los parametros son:

  1. apuntador al archivo en disco
  2. El segundo parametro es el BYTE donde se quiere que empieze la lectura o grabacion al archivo en disco.
  3. Como va a estar dificil que se le atine a un byte determinado, es por eso que en el programa mejor se deja que sea el propio servidor quien calcule el byte donde empieza un registro determinado con clave * tamano de registro.
  4. Un tercer parametro que no se ocupo en este programa es a partir de donde se quiere posicionar el apuntador interno del archivo, los valores pueden ser:

SEEK_SET principio del archivo.

SEEK_CUR posicion actual.

SEEK_END fin del archivo.

TAREAS PROGRAMACION LINUX PHP MYSQL

Construirles programas de busquedas a los archivos ya construidos.

Politica de Privacidad