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:
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:
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.