phpbar.de logo

Mailinglisten-Archive

[php] Nur die nächste Datei im Verzeichnis verlinken - Wie?

[php] Nur die nächste Datei im Verzeichnis verlinken - Wie?

Kirsten Bohlig kiboh at web.de
Fre Nov 9 12:56:57 CET 2007


Hallo Achim, hallo Yannik,
hallo an die anderen,

danke erstmal, ich komme weiter, lese interessiert im Handbuch und 
entdecke Neues!

Das ist aus Euren gesammelten Anregungen bisher rausgekommen: 
Verzeichnis und h2 als Linktext auslesen und die 
vorwärts-/rückwärts-Links auf den Folgeseiten (die aber noch endlos, 
siehe unten...).

(Ich habe die ein oder andere Variable umbenennen müssen: "$content" ist 
bereits belegt, die Dateien sind in einem Konstrukt mit includes usw. 
abgelegt -> es gibt so gut wie kein "echo", kein "return".)

(Sorry, wenn der Code hier doof aussieht (das kann man sicher besser 
machen?!))

### in einer index-Datei ###
$dir = "xy";
$verzeichnis = openDir($dir);
$i = 1;
while ($file = readDir($verzeichnis))
{
	if ($file != "." && $file != ".." && $file != "index.php")
	{   	  	
	if (substr_compare($file, ".php", -4, 4,true)==0)
		{
		  $datei = fopen($dir . "/" . $file, "r");
		  $inhalt = fread($datei, 2000);
		  fclose($datei);
			
		  $files[$i] = $file;
			
		$h2pos 	= strpos($inhalt,'<h2>');
		$titel 	= substr($inhalt, $h2pos+4, 
strpos($inhalt,'</h2>',$h2pos)-4-$h2pos);
				
		// das ist nicht ganz korrekt mit dem rawurlencode
		// $links[] = "<a href=\"".rawurlencode($dir."/" .$file 
)."?nr=".$i."\">[".$i."] ".htmlspecialchars($titel)."</a>";
		// weil: der slash wird mit %2F ersetzt
		// und dann so kein Link mehr gehen kann
				
		// das geht:
		$links[] = "<a href=\"".rawurlencode($dir)."/" .rawurlencode($file) 
."?nr=".$i."\">[".$i."] ".htmlspecialchars($titel)."</a>\n";

		$i++;
		}
	}
}
closeDir($verzeichnis);

session_start();
$_SESSION['seiten'] = $files;

### auf einer Folgeseite: ###
session_start();
$links = $_SESSION['seiten'];
$nr = $_GET['nr'];
$nr_next = $nr+1;
$nr_prev = $nr-1;
$next_page = $links[$nr_next];
$prev_page = $links[$nr_prev];
(...)

$content .= "\n
<a href=\"".$prev_page."?nr=".$nr_prev."\">vorherige Seite</a>&nbsp;\n
<a href=\"".$next_page."?nr=".$nr_next."\">nächste Seite</a>";
###

Sehr schön, das hat mich schon viel weiter gebracht:
Danke für die guten, ausführlichen und verständlichen Ausführungen.
Hab ich's halbwegs ordentlich/richtig umgesetzt?

Bleibt aber, wie wohl zu befürchten war, die Sache mit dem Anfang und 
dem Ende des arrays.
Wie prüfe ich das? Ich krieg's nicht hin.
Wohin mit sowas, wie Sebastian es vorgeschlagen hat?
Und überhaupt: Funktioniert das Ganze denn, wenn man nicht mit der 
Index-Seite in das Verzeichnis einsteigt?

Danke im Voraus für Eure weitere Unterstützung!


@Norbert: Danke für Dein Angebot und den Link auf Deine Sammlungen.
Ich habe nicht mit objektorientierten php-Sachen angefangen, manchmal 
scheint sogar mir ;-) das klar zu sein, manchmal gar nicht... Ich schau 
mir das gerne mal näher an, wollte aber erstmal diese Sachen 
ausprobieren. (Ich hoffe ich bin im "Marketing" besser als im 
Programmieren ;-)

Grüße

(muss in aller Hektik weg)

Kirsten

php::bar PHP Wiki   -   Listenarchive