Verzeichnis Variablen includen

Scriba

Grünschnabel
Ich möchte, die aus einem Verzeichnis ausgelesenen Dateien in die Seite includen. Wie kann ich das mit der Variable $file machen?
Jetzt sieht mein Code so aus:

<?php
$handle=opendir('songtxts');
while ($file = readdir ($handle)) {
if ($file != "." && $file != "..") {
echo "<a href='index.php?action=$file'><b>$file\n</b></a><br>";
}
}
closedir($handle);


if ($action == "$file")
{
include("$file");
}


?>
 
Hi,

der obere Teil sollte funktionieren, ist aber trotzdem nicht ganz korrekt. Richtig:
PHP:
$handle=opendir('songtxts');
while (false !== ($file = readdir ($handle))) {
	if ($file != "." && $file != "..") {
	echo "<a href='index.php?action=$file'><b>$file\n</b></a><br>";
	}
}
closedir($handle);

Siehe dazu: http://de.php.net/manual/en/function.readdir.php

Beim zweiten Teil sind erstens die Anführungszeichen um $file falsch, da du ja die Variable ansprechen möchtest, nicht den String "$file". Zweitens fehlt der Pfad (songtexts), und drittens ist das egal, weil ja gar nicht die Valiable $file deinen Dateinamen enthält, sondern die Variable $_GET["action"]. So sollte es funktionieren:

PHP:
if (isset($_GET["action"])) {
   include("songtxts/".$_GET["action"]);
}

Dazu wäre aber noch anzumerken, dass dir die Zeilenumbrüche verloren gehen, so es sich bei den Dateien tatsächlich um Textfiles handelt, die keine HTML Formatierungen enthalten. In diesem Fall solltest du die Dateien lieber einlesen, etwa so:

PHP:
if (isset($_GET["action"])) {
$zeilen=file("songtxts/".$_GET["action"]);
for($i = 0; $i < count($zeilen); $i++) {
	echo $zeilen[$i]."<br />";
	}	
}
 
Danke für die schnelle Antwort aber mit dem Code:

<?php

$handle=opendir('songtxts');
while (false !== ($file = readdir ($handle))) {
if ($file != "." && $file != "..") {
echo "<a href='index.php?action=$file'><b>$file\n</b></a><br>";
}
}
closedir($handle);

if (isset($_GET["action"])) {
$zeilen=file("songtxts/".$_GET["action"]);
for($i = 0; $i < count($zeilen); $i++) {
echo $zeilen[$i]."<br />";
}
}


?>

Steht da nun:

test.txt

Warning: file(songtxts/songtexte) [function.file]: failed to create stream: No such file or directory in /www/htdocs/screy/2.0/songtexte.php on line 12
 
Ich hab das mal eben bei mir nachgebaut, funktioniert einwandfrei...

Deine Fehlermeldung legt nahe, dass die file Funktion ihr file nicht findet :rolleyes:

file(songtxts/songtexte)... <- wo kommt denn das "songtexte" auf einmal her, wenn deine Datei "test.txt" heißt, und im Verzeichnis "songtxts" liegt?
 
Also ich hab jetzt was herausgefunden: *g*

Das "Songtexte" kam von der Browser-URL von mir:
"index.php?action=songtexte"

Dann hab ich das "action" im Script mit "goto" ersetzt!

Nun zeigt er zwar keine Fehlermeldung mehr an, aber wenn ich auf den Link klicke springt er zur normalen index.php!

index.php?goto=test.txt
 
Hast du $_GET["action"] mit 'goto' ersetzt, oder mit $_GET["goto"]? Letzteres wäre natürlich richtig. Und hast du es beide male ersetzt? Das Script hört nicht auf zu funktionieren, nur weil du den Namen einer Variable änderst...
 
Also mein aktueller Code sieht so aus:

<?php

$handle=opendir('songtxts');
while (false !== ($file = readdir ($handle))) {
if ($file != "." && $file != "..") {
echo "<a href='index.php?goto=$file'><b>$file\n</b></a><br>";
}
}
closedir($handle);

if (isset($_GET["goto"])) {
$zeilen=file("songtxts/".$_GET["goto"]);
for($i = 0; $i < count($zeilen); $i++) {
echo $zeilen[$i]."<br />";
}
}

?>
 
Zurück