ich verzweifle bald

TR-medien

Grünschnabel
ich habe folgendes Programiert (newbe) warum bekomme ich keine Ausgabe und kann ich die Funktionen vereinen damit sie von einer Seite aus abgerufen werden können.

Code:
<?php
  function datein($ordner, $datei)
  {
  // prüft ob nach allen Dateien gesucht werden soll
  	if($datei == '')
  	{
  		$anw = '';
  	}
  // prüft ob nach bestimten Endungen gesucht werden soll
  	elseif(strtok($datei, ".") == "")
  	{
  		$anw = "$datei";
  	}
  // durchsucht den bestimten ordner gemäß der Vorgabe	
  	$path = "$ordner";  
  	$files = array();
  	$fv = opendir($path);
  	while($file = readdir($fv))
  	{
  		if($file != '.' && $file!='..' && is_file($path.$file))
  		{
  			array_push($files,$file);
  		}
  	}
  	sort($files);
  	foreach($files as $file)
  	{
  		if($anw = '')
  		{
  			echo "$path.$file<br>";
  		}
  		if(strstr($file, ".") == "$anw")
  		{
  			echo "$path.$file<br>";
  		}
  	}
  }
  
  
  function list_dir($folder) 
  {
  // Funktion zum ermitteln aller verfuegbaren Ordner
  	global $folders;
  	$handle = opendir($folder);
  	while ($dir = readdir($handle))
  	{
  		if (is_dir($folder.$dir) && $dir != '.' && $dir != '..')
  		{
  			$folders[] = $folder.$dir."/";
  			list_dir( $folder.$dir."/" );
  		}
  	}
  }
  //Ausgabe
  $folders[0] = "../../";
  list_dir($folders[0]);
  $laenge = strlen($folders[0]);
  sort($folders);
  for($i=1;$i<count($folders);$i++) 
  {
  	$text = substr($folders[$i], $laenge);
  	echo "im Ordner <b>:".$text."</b> befinden sich folgende Dateien<br>\n";
  	datein($ordner[$i], "")
  }
  ?>
 
Ich frage mich ob du diesen Script auch wirklich brauchst, um sich Dteien auflisten zu lassen. Da gibt es auch kürzere Lösungen. Aber was mir besonders ins Auge gestochen ist folgendes:

PHP:
if($datei == '')
 {
 $anw = '';
 }

versuche da einfachmal
if (!isset($datei))
prüft ob eine Variable gestzt ist.

oder aber
if (strlen($datei) == 0)
prüft aus wieviel Zeichen der String besteht.

und anstatt $anw = ''; würde ich dir
unset($anw);
empfehlen.

Grüsse!
 
Lukasz hat gesagt.:
und anstatt $anw = ''; würde ich dir
unset($anw);
empfehlen.

Dir ist aber schon der Unterschied zwischen eine initialisierten, leeren Variable und einer ungesetzten klar? Ausserdem würdest du in dem Script versuchen, auf eine nicht vorhandene Variable mittels [phpf]unset[/phpf] zuzugreifen..
 
Timbonet hat gesagt.:
Dir ist aber schon der Unterschied zwischen eine initialisierten, leeren Variable und einer ungesetzten klar? Ausserdem würdest du in dem Script versuchen, auf eine nicht vorhandene Variable mittels [phpf]unset[/phpf] zuzugreifen..

Also ich kann es so herauslesen, dass $anw für eine Kopie der $datei vorgesehen ist.

PHP:
$anw = "$datei";

Back to topic
ausserdem sehe ich noch einen Fehler
PHP:
if($anw = '')
{

statt = == weil sonst das = einzig einen neuen Wert zuweist.
 
Zuletzt bearbeitet von einem Moderator:
zunächst danke für eure antworten

Zum Sinn des scriptes ich möchte damit die komplette Verzeichnisstrucktur ab dem wert "$ordner" durchsuchen. Dabei soll es möglich sein die art der Datei zu bestimmen.

$anw ist der übergabewert der bestimt nach was gesucht werden soll (ich dachte das währe durch die kommentare sichtbar)

PHP:
 // prüft ob nach allen Dateien gesucht werden soll
	if($datei == '')
	{
		$anw = '';
	}
// prüft ob nach bestimten Endungen gesucht werden soll
	elseif(strtok($datei, ".") == "")
	{
		$anw = "$datei";
	}

nehmen wir an $datei ist .css so würde es nach all den daten suchen welche mit .css enden!
-------- Richtig ?------------

mein problem ist das die unterordner nicht mit durchsucht werden!
Warum nur?
 
Zurück