Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » PHP - findet Variable nicht, obwohl diese deklariert ist Antworten
PHP - findet Variable nicht, obwohl diese deklariert ist

seth
Pixelschubser


Beiträge: 11


Also das Problem ist, das die Funktion Unterverzeichnis_Suche($dir), der die Funktion read_tree($dir) included wird, die globale Datei $dateien nicht kennt. Wenn jemand eine Ahnung hat, warum, bitte melden. Ach ja, Unterverzeichnis_Suche wird später noch aufgerufen, der Aufruf ist nicht hier, weil er nichts zur Sache tut.

READ_TREE FUNKTION
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20:
<?php

function read_tree ($dir)
{
    global $dateien;
    $fp = opendir($dir);
    while($datei = readdir($fp)) {
        if (is_dir("$dir/$datei") && $datei!="." && $datei!="..") {
            read_tree("$dir/$datei");
        } else {
            if (preg_match("/^index/", $datei)) continue;
            if (preg_match("/\.\.?$/", $datei)) continue;
            $dateien[] = "$dir/$datei";
        }
    }
    closedir($fp);
}


?>


UNTERVERZEICHNIS_SUCHE FUNKTION
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:
<?php
	 	 include "dateisuche.php";
	 	 global $verzeichnisse;
	 	 $verzeichnisse = array();		 
		
		 function Unterverzeichnis_Suche($dir)
     {
		 	 read_tree($dir);
       $temp = array();
       $pos = 0;
	
			 /*leert den Array $verzeichnisse, sollte dieser bereits Werte enthalten
			 for($i = 0; $i < count($verzeichnisse); $i++)
			 			 unset($verzeichnisse[$i]);*/
			
			 
       /*durchläuft alle gefundenen Verzeichnisse*/		  
       for($n = 0; $n < count($dateien); $n++)
       {
       	$tok = strtok($dateien[$n],"/");
      	/*teilt die Verzeichnisse in die Bestandteile auf $temp[0]="Galerie", $temp[1]="on-stage", ...*/
      	for($i = 0; $tok; $i++) 
      	{
       		 $temp[$i] = $tok;
       		 $tok = strtok ("/");
      	}
      	/*sucht die 1. Unterverzeichnisse heraus und schreibt diese in einen Array, jedes Unterverzeichnis wird nur 1x aufgelistet*/
      	if($n > 0)
      	{
      	 if($temp[1] != $verzeichnisse[$pos-1])
      	 {
      	 	$verzeichnisse[$pos] = $temp[1];
      		$pos++;
      	 }			 
      	}
      	/*beim 1. Durchlauf wird auf jeden Fall ein neues Unterverzeichnis gefunden und geschrieben*/
      	else
      	{
      	 $verzeichnisse[$pos] = $temp[1];
      	 $pos++;
      	}
       }
		 }
 ?>

  Profil   E-Mail   Editieren   Zitieren

seth
Pixelschubser


Beiträge: 11


hab vergessen, die Fehlermeldung:

Notice: Undefined variable: dateien in C:\daten\Rudi Mangst homepage\WEB\PHP\Unterverzeichnis-Suche.php on line 18

  Profil   E-Mail   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


Erst mal war das leider das falsche Forum ;)

Pack doch mal in die Funktioen read_tree testweise ein echo "test" und lass das Script dann noch mal ausführen. Wenn dann auf der Seite irgendwo ein Test oder halt mehrere erscheinen weißt du schon mal, ob er die Funktion überhaupt ausführt oder nicht.

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

seth
Pixelschubser


Beiträge: 11


ok hab ich gemacht, und siehe da, die funktion wird ausgeführt, gleich 7x (weil sie sich ja selbst aufruft) was nun?

  Profil   E-Mail   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


setz mal ganz an den anfang der zweiten Datei ein

$dateien = array();

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

seth
Pixelschubser


Beiträge: 11


ok, ich weiß mitlerweilen was das problem ist, nur nicht ,wie es so was geben kann. die globale variable $dateien, die in der 1. funktion deklariert wird, ist in der 2. nicht mehr vorhanden, in der 3. funktion schon wieder. nun ist es aber so, das:
funktion 1 in funktion 2 included ist
funktion 2 in funktion 3 included ist
d.h. in funktion 2 lässt sich der wert von $dateien nicht abfragen, bleibt aber zwischengespeichert, in funktion 3 geht wieder alles. ich bin radlos, das widerspricht allem was ich bis jetzt über globale variablen und programmiern überhaupt weiß. HILFE!!!!

  Profil   E-Mail   Editieren   Zitieren

seth
Pixelschubser


Beiträge: 11


übrigens, wenn ich die funktion 2 nicht mehr als funktion lass sonder direkt die zu durchsuchende datei eingeb, funzts. also so gesehen problem behoben, ich werd aber niemanden daran hindern die anomalie der globalen variable $dateien nochmal zu durchdenken

  Profil   E-Mail   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


ach *g* du musst in der zweiten Funktion auch ganz oben ein

global $dateien;

einfügen, dann gehts ;)

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren
 

Antworten
Nach oben