[PHP] parse error

Mike Lowrey

Commodore
Registriert
Juni 2005
Beiträge
4.978
Hallo liebe CB Gemeinde

im Moment werkel ich an einem Script welches Verzeichnisse ausliest... das klappt auch alles da ich jetzt jedes Verzeichniss einzelnd auslese diesen Vorgang aber für einige Verzeichnisse
machen muss wollte ich die Pfade per Variable setzen allerdings gibt es dabei folgenden Fehler

Parse error: parse error, unexpected T_VARIABLE in D:\xampp\xampp\htdocs\MyAudio\Music\db_3 doors down\include_3doorsdown.php on line 11

die interessanten Zeilen sind wohl
PHP:
<?
	// Band Namen setzen
	$band = "3 doors down";
        //Alben Namen setzen
        $album1 = "away from the sun";
	//Alben Namen setzen 2
	$album2 = "seventeen days";
         //Alben Namen setzen 3
         $album3 = "the better life"
// Verzeichnis einlesen
$files = getFiles("./Music/db_$band/$album1");

// Datei öffnen/anlegen
$fp = fopen("db_$band/$band_$album1.html", 'w');
als ich die Pfade von Hand eingegeben habe funktionierte noch alles wie es soll...

schon einmal vielen Dank
MfG Mike
 
poste doch mal die Funktion getFiles ;)
 
also das ist die index in der wird ein Array erstellt
PHP:
<?
function getFiles($directory) {
   // Try to open the directory
   if($dir = opendir($directory)); {
       // Create an array for all files found
       $tmp = Array();

       // Add the files
       while($file = readdir($dir)) {
           // Make sure the file exists
           if($file != "." && $file != ".." && $file[0] != '.') {
               // If it's a directiry, list all files within it
               if(is_dir($directory . "/" . $file)) {
                   $tmp2 = getFiles($directory . "/" . $file);
                   if(is_array($tmp2)) {
                       $tmp = array_merge($tmp, $tmp2);
                   }
               } else {
                   array_push($tmp, $directory . "/" . $file);
               }
           }
       }

}
       // Finish off the function
       closedir($dir);
       return $tmp;
}
include 'db_3 doors down/include_3doorsdown.php';
include 'db_apocalyptica/include_apocalyptica.php';
?>
die include erstellen dann dateien für jeweils 1 verzeichniss
PHP:
<?
	// Band Namen setzen
	$band = "3 doors down"
         //Alben Namen setzen
         $album1 = "away from the sun"
// Verzeichnis einlesen
$files = getFiles("./Music/$band/$album1");

// Datei öffnen/anlegen
$fp = fopen("db_$band/$album1/$band_$album1.html", 'w');

// existiert ein gültiger Datei-Handle?
if($fp)
{
	// Array-Elemente einlesen und mit Zeilenumbruch in Datei schreiben
	for($i=0; $i<count($files); $i++)
		fwrite($fp,'<a href="'.$files[$i]. '">'.$files[$i].'</a><br>');
	// Datei-Handle schließen
	fclose($fp);

?>

komischerweise klappen die jetzt "plötzlich" garnicht mehr...
naja vielleicht findest du ja den fehler
 
bei
$album3 = "the better life"
fehlt ein ;

ebenfalls bei:
$album1 = "away from the sun"

Hier haben sich ebenfalls fehler eingeschlichen:
<?
function getFiles($directory) {
// Try to open the directory
if($dir = opendir($directory)); {
// Create an array for all files found
$tmp = Array();

// Add the files
while($file = readdir($dir)) {
// Make sure the file exists
if($file != "." && $file != ".." && $file[0] != '.') {
// If it's a directiry, list all files within it
if(is_dir($directory . "/" . $file)) {
$tmp2 = getFiles($directory . "/" . $file);
if(
is_array($tmp2)) {
$tmp = array_merge($tmp, $tmp2);
}
} else {
array_push($tmp, $directory . "/" . $file);
}
}
}

}
// Finish off the function
closedir($dir);
return
$tmp;
}
include
'db_3 doors down/include_3doorsdown.php';
include
'db_apocalyptica/include_apocalyptica.php';
?>

richtig wärs so meiner meinung nach:
<?
function getFiles($directory) {
// Try to open the directory
if($dir = opendir($directory)) {
// Create an array for all files found
$tmp = Array();

// Add the files
while($file = readdir($dir)) {
// Make sure the file exists
if($file != "." && $file != ".." && $file[0] != '.') {
// If it's a directiry, list all files within it
if(is_dir($directory . "/" . $file)) {
$tmp2 = getFiles($directory . "/" . $file);
if(
is_array($tmp2)) {
$tmp = array_merge($tmp, $tmp2);
}
} else {
array_push($tmp, $directory . "/" . $file);
}
}
}

}
// Finish off the function
closedir($dir);
return
$tmp;
}
include
'db_3 doors down/include_3doorsdown.php';
include
'db_apocalyptica/include_apocalyptica.php';
?>
 
Die Variablen bei fopen und getfiles sind falsch eingebaut, und if ist nicht geschlossen. ^^


PHP:
<?
// Band Namen setzen
$band = "3 doors down";

//Alben Namen setzen
$album1 = "away from the sun";

// Verzeichnis einlesen
$files = getFiles("./Music/".$band."/".$album1);

// Datei öffnen/anlegen
$fp = fopen("db_".$band."/".$album1."/".$band."_".$album1.".html", 'w');

// existiert ein gültiger Datei-Handle?
if($fp)
{
    // Array-Elemente einlesen und mit Zeilenumbruch in Datei schreiben
    for($i=0; $i<count($files); $i++)
        fwrite($fp,'<a href="'.$files[$i]. '">'.$files[$i].'</a><br />');
    // Datei-Handle schließen
    fclose($fp);
}
?>
 
ich habe die Dateien jetzt so verbessert wie ihr geschrieben habt dafür auch schon einmal vielen dank leider kommt weiterhin eine Fehlermeldung
Code:
Warning: opendir(./Music/3 doors down/away from the sun) [function.opendir]: failed to open dir: Invalid argument in D:\xampp\xampp\htdocs\MyAudio\Music\index.php on line 4

Warning: readdir(): supplied argument is not a valid Directory resource in D:\xampp\xampp\htdocs\MyAudio\Music\index.php on line 9

Warning: closedir(): supplied argument is not a valid Directory resource in D:\xampp\xampp\htdocs\MyAudio\Music\index.php on line 26

Zeile 9 war
PHP:
while($file = readdir($dir)) {
und 26
PHP:
closedir($dir);

tschuldigung für die wahrscheinlich dämlichen Fehler bin leider noch Anfänger...

MfG Mike
 
na ich würd jetzt einfach mal sagen, dass es an den leerzeichen in dem Ordnername liegt.. mach statt leerzeichen unterstriche o.ä. und es sollte funktionieren
 
oder probier mal die Funktion urlencode auf die Dateinamen :rolleyes: (wenn's daran liegt, habe jetzt nur den letzten Satz gelesen ;)).
 
Hab es mittlerweile schon selbst hinbekommen war nur nen bischen rum spielen an den Verzeichnissen nötig.

Also mal vielen Dank für die wie immer schnelle Hilfe!

MfG Mike
 
Kleiner Tipp zu den Fehlermeldungen in PHP (generell in Interpretern und Parsern):

Sie geben nicht umsonst die Zeilennummer mit an!

Und "unexpected T_VARIABLE" sagt uns: es war etwas anderes erwartet, als eine Variable. Also gucke ich in diesem Fall in Zeile 11 nach, wo die Variable steht = 1. Stelle nach den Whitespaces, okay...
Zeile hoch: Kommentar = zählt nicht
Zeile hoch: Zuweisung einer Variable = Anweisung
...und wie enden Anweisungen in PHP: richtig, mit einem Semikolon!

Der Interpreter gibt Euch viel, was das Debuggen erleichtert (ja nicht sogar die Fehlerstelle eindeutig einkreist) !

-----------------------------------

Und beim "Rumprobieren" sträuben sich bei mir als erfahrener Programmierer alle Nackenhaare: sicher, vieles lässt sich durch Trial & Error herausfinden, nur: Nachvollziehen ist Trumpf!
Wie oft höre ich den Satz: "Hauptsache es funktioniert!" SCHRECKLICH! :freak:
Ich entgegne dann den Satz, den ich zum ersten Mal in Matrix:Reloaded gehört habe: "Niemanden interessiert, wie es funktioniert, solange es funktioniert!"

Entwicklungskosten: $1
Wartungskosten: $2


Denkt mal darüber nach.
 
Zurück
Oben