PHP lectura de directoris

De Cacauet Wiki
Dreceres ràpides: navegació, cerca

Realitzar programes és de poca utilitat si no podem fer res amb les dades de forma persistent, és a dir, si no les emmagatzemem al disc dur o a la base de dades. Farem una aproximació al sistema d'arxius amb les funcions OPENDIR i READDIR, amb les que podrem llegir els continguts d'una carpeta.

Llegeix el manual de PHP.NET sobre la funció readdir.

En realitat necessitem 3 funcions per poder llegir el directori:

  • opendir (obre carpeta)
  • readdir (llegeix un nom d'arxiu)
  • closedir (tanca la carpeta per si la vols obrir de nou).


Solució simplificada pel readdir[modifica]

El manual de PHP.NET proposa un bucle WHILE una mica enrevessat per començar. Potser l'entendràs més d'aquesta manera (creem una llista ordenada):

<ol>
	<?php
		$dir = opendir("carpeta1");
		$arxiu = readdir($dir);
		while( $arxiu!==false )
		{
			echo "<li>$arxiu</li>";
			$arxiu = readdir($dir);
		}
 
		closedir($dir);
	?>
</ol>

Fixa't en què:

  • Obrim el directori amb OPENDIR.
  • Llegim el primer nom d'arxiu abans d'entrar al bucle WHILE.
  • Un cop dins el WHILE imprimim el nom de l'arxiu i llegim després el següent nom d'arxiu.
  • Ens quedem dins el WHILE sempre i quan el nom de l'arxiu sigui diferent de false (voldrà dir que hem acabat de llegir el directori).

Propostes de millora:

  • Podríem crear un enllaç (link) a cada arxiu llistat. Com ho faries?
  • I per crear un enllaç a la pròpia pàgina actual afegint el nom de l'arxiu com a paràmetre GET?
  • Si ho proves veuràs que apareixen els elements "." i ".." (directori actual i directori pare).
    Com els eliminaries?

Formularis amb menús desplegables[modifica]

L'exercici que es proposa més avall de "selector de skins" es pot resoldre amb links o amb menús desplegables. Aquests es construeixen de la següent manera (l'exemple proposa 3 opcions):

<FORM>
	<SELECT name="skinfile">
		<OPTION value="foc.css">FOC!</OPTION>
		<OPTION value="aigua.css">~aIGuA~</OPTION>
		<OPTION value="terra.css">terra</OPTION>
	</SELECT>
 
	<BR />
	<INPUT type="submit" />
</FORM>

El que ens donaria un resultat d'aquest estil:

Desplegable.png

Exercicis[modifica]

  1. Implementa l'exemple que surt al manual: fes un llistat d'arxius del directori on està el teu propi arxiu .php
    • Si no tens més arxius copia alguns per comprovar-ho.
    • Elimina del llistat els arxius "." i ".." (ho explica al manual).
  2. Implementa un formulari per introduir el nom de la carpeta a llistar.
  3. Farem un selector de skins (amb fulles d'estil CSS).
    1. Fes un directori "css" al mateix lloc on tindràs l'arxiu PHP.
    2. Crea una pàgina PHP amb el títol i un paràgraf i crea una fulla d'estil CSS a part dins de la carpeta "css" (canvia el color de la lletra H1 com a mínim).
    3. Crea 2 pàgines més .css dins de la carpeta "css" amb variacions del tema (canvi de color de la lletra, background, tipografia, ...). En total han d'haver 3 arxius CSS com a mínim.
    4. Fes un formulari amb un menú desplegable amb tantes opcions com arxius hi ha a la carpeta CSS. El llistat d'opcions s'ha de crear de forma dinàmica, llegint els arxius de la carpeta "css".
    5. Enllaça la fulla d'estils que havies posat segons el nom d'arxiu que l'usuari hagi seleccionat.