Indexverzeichnis

Neben diesem Blog will ich noch eine WebSeite aufbauen. Diese soll Arbeiten, Lösungen von Übungsblätter und Ähnliches beinhalten. Aber um diese Daten schön und übersichtlich präsentieren zu können, braucht es mehr als nur einen Seitenindex.
Leider ist das letzte Mal als ich mich mit WebDesign auseinandergesetzt hab, schon sehr sehr lange her. Erfahrungen in PHP, CSS, xml habe ich nur wenig.

In diesem Blog könnt ihr (unteranderem) verfolgen, wie ich langsam meine Seite aufbaue, verfolständige und verbessre.
Beginnen möchte ich heute mit dem erstellen eines Indexes.

Here we go:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
function createFileIndex( $start = '.')
{
    //catch error
    if(! is_dir($start))
		return false;
 
	//initalize stuff
	echo "<table cellpadding=0 cellspacing=0 border=1 rules=rows>";
	$dirs = array( $start);
 
	echo "<tr><th>NAME</th>
		<th style='width:50px'></th>
		<th align=center>SIZE</th>
		<th style='width:20px'></th>
		<th align =center>TYPE</th>
		<th style='width:20px'></th>
		<th align=center>DATE CREATED</th>
		</tr>";
 
	//search iterative
	while( NULL !== ($dir = array_pop( $dirs)))
	{
		$dh = opendir($dir);
		while( $file = readdir($dh) )
		{
			//skip current directory and php-files
			if( $file == '.' || $file == '..' || substr($file,-3)=="php")
				continue;
			$path = $dir . '/' . $file;
			/*
			if path is an directory
			=> write into array
			else
			write the files attributes into the table
			*/
			if( is_dir($path) )
				$dirs[] = $path;
			else
			{
				//get file infos
				$ftime = gmdate("d.M.y",filemtime($path))
					. "&nbsp;&nbsp;&nbsp;"
					. gmdate("H:i:s",filemtime($path));
				$fsize = round(filesize($path) * .0009765625);
				$ftype = strtolower(substr(strrchr($file,'.'),1));
 
				//to table
				$output = "<tr>
				<td><a href='$path'>$file</a></td>
				<td></td>
				<td align=center>$fsize KB</td>
				<td></td>
				<td align=center>$ftype</td>
				<td></td>
				<td align=right>$ftime</td>
				</tr>";
				echo $output;
			}
		}
		closedir($dh);
	}
	echo "</table>";
}

Der Algorithmus funktioniert wie folgt:

  1. Es wird ein Array “dirs” erstellt, in welches der Startpunkt (root) geschrieben wird.
  2. Das letzte Element aus “dirs” (ein Verzeichnis) wird herausgeholt und dabei entfernt, sollte das Entnehmen eines Elementes aus dem Array nicht möglich sein, wird der Algorithmus beendet.
  3. Das entnommene Verzeichnis wird nun auf der Suche nach Inhalten durchlaufen. Dabei wird unterschieden, ob es sich bei dem gefundenen Eintrag um ein Verzeichnis oder eine Datei handelt.
    • Fall 1 (Verzeichnis): Das gefundene Verzeichnis wird mit kompletten Pfad in das Array “dirs” geschrieben, um später auch in diesem Verzeichnis nach Datein zu suchen.
    • Fall 2 (kein Verzeichnis): Es wurde eine Datei gefunden. Also holen wir uns von der Datei alle Attribute, die wir wünschen (Name, Größe, Typ, Erstelldatum), und schreiben alles in eine Tabelle.
  4. Wenn das Verzeichnis komplett durchlaufen wurde, geht es wieder zu Punkt 2.

Als Ausgabe erhält man zum Beispiel:

Das wars erstmal. Sobald alle Änderungen an dem Blog erledigt sind, geht es weiter. Dann wird hoffentlich an der Optik des Indexes gefeilt.

So long,
Seb

Download Code

Share and Enjoy:

  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Technorati
  • Print this article!
  • E-mail this story to a friend!
, , , , ,
Trackback

no comment untill now

Sorry, comments closed.