14. Lectura de fitxers línia a línia

Índex

 

Introducció

El PHP permet desar dades estructurades en fitxers de text (.txt o millor .php); posteriorment aquestes dades són recuperades i aprofitades amb finalitats diverses. La lectura de les dades es fa línia a línia; l'escriptura es pot fer línia a línia, per la càrrega de tot el fitxer en bloc, o pot formar part del web amb caràcter fix.

Les actuacions línia a línia sobre un fitxer sempre comporten tres operacions:

La funció fopen() fa servir dos arguments: en el primer s'indica l'arxiu sobre el qual s'actua, i en el segon s'indica el mode. Hi ha tres modes, "r" (lectura), "w" (escriptura) i "a" (escriptura afegida al contingut anterior).

La funció fopen() s'usa així:

L'identificador $ctrl (de nom arbitrari) és una variable que es fa servir com referència en la resta del programa fins al moment de tancar-lo. Podem concebre-la com el nom del fitxer un cop obert.

 

Estructura per a la lectura de documents línia a línia

Un cop obert el fitxer en mode r, la lectura es fa amb la funció fgets(), que s'aplica tantes vegades com línies tingui el fitxer:

Es pot afegir un segon argument a fgets() que indiqui la mida màxima de cada lectura:

fa que els fragments llegits tinguin com a màxim 99 bytes.



Vegeu-ne el resultat

Fer una lectura d'un fitxer coneixent-ne el nombre de línies és, en realitat, de molt poca utilitat. En el cas més general no coneixem el nombre de línies; aleshores cal establir un programa de lectura en bucle, combinant while(), que controla l'execució reiterada, amb la funció feof(), que detecta el final del fitxer:





Vegeu-ne el resultat

 

Aplicació a petites bases de dades

Cada una de les línies del fitxer de text pot ésser estructurada en diverses seccions, mitjançant un caràcter - o seqüència de caràcters - de separació. D'aquesta manera el fitxer pot equivaldre a una taula de dades: cada línia és un registre i cada secció un camp.



Vegeu-ne el resultat

Si, mitjançant un formulari o un altre recurs, introduïm en el programa un valor $valor d'un camp, podem seleccionar només els registres que ccompleixen un determinat requisit

Són possibles moltes combinacions:

Cal advertir però que aquest mètode resulta molt poc eficient, i només s'hauria de fer servir en bases de dades molt petites. Per a les bases de dades grans es fa servir el MySQL.