 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
18.03.2005, 18:44
|
#1
|
|
TP-Member
Registriert seit: Feb 2005
|
[PHP] Fehler in Script (Dateien zählen mit aktuellem Datum)
Bei folgendem Script liegt irgendwo ein Feheler. Ich weiß aber nicht wo. Normalerweise sollten alle Dateien gezählt werden, deren Erstellungsadatum mit dem aktuellem Datum übereinstimmt. Es wird immer 1 zurückgegeben. Vielleicht könnt ihr mir helfen.
PHP-Code:
function countJpgRecursiv( $pfad = null )
{
if( is_null( $pfad ) ) $pfad = dirname( __FILE__ );
$result = null;
if( !file_exists( $pfad ) )
die( $pfad . " existiert nicht" );
$opendir = opendir( $pfad );
while( $file = readdir( $opendir ) )
if( $file != '.' && $file != '..' ):
$file = $pfad. "/" . $file;
if( is_Dir( $file ) )
{
$tmp = countJpgRecursiv( $file );
if( is_null( $result ) || date("d.m.Y",filemtime($file))==date("d.m.Y", $datum) )
$result += $tmp;
}else{
if( substr(strtolower( $file ), -4) == ".jpg" )
if( is_null( $result ) || date("d.m.Y",filemtime($file))==date("d.m.Y", $datum) )
$result++;
}
endif;
closedir( $opendir );
return $result;
}
|
|
|
18.03.2005, 19:01
|
#2
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
Der Haken liegt an $result.
Was nutzt z.B. die Rekursion, wenn $result dann wieder NULL gesetzt wird.
so funktioniert es:
PHP-Code:
$result=0;
echo countJpgRecursiv("/images");
function countJpgRecursiv( $pfad = null )
{
global $result;
if( is_null( $pfad ) ) $pfad = dirname( __FILE__ );
if( !file_exists( $pfad ) )
die( $pfad . " existiert nicht" );
$opendir = opendir( $pfad );
while( $file = readdir( $opendir ) )
if( $file != '.' && $file != '..' ):
$file = $pfad. "/" . $file;
if( is_Dir( $file ) )
{
$tmp = countJpgRecursiv( $file );
if( date("d.m.Y",filemtime($file))==date("d.m.Y", $datum) )
$result += $tmp;
}else{
if( substr(strtolower( $file ), -4) == ".jpg" )
echo "$file - ".date("d.m.Y",filemtime($file))."<br>";
if( date("d.m.Y",filemtime($file))==date("d.m.Y", $datum) )
$result++;
}
endif;
closedir( $opendir );
return $result;
}
Geändert von steffenk (18.03.2005 um 19:03 Uhr).
|
|
|
18.03.2005, 19:16
|
#3
|
|
TP-Member
Registriert seit: Feb 2005
|
nee,das geht noch nicht.
erstmal was soll das da am Anfang, vor der Funktion?
2. Es werden jetzt alle Dateien ausgegeben mit dem Datum aufgrund des Echos das du eingefügt hast, aber zählen tut das Script nicht.
|
|
|
18.03.2005, 21:22
|
#4
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
bei mir geht das schon.
Der Anfang - da wird die Variabel $result initialisiert.
Das echo ist nur aus Debuggründen drin, das kannst Du auch löschen.
Da $result auch in der Rekursion bekannt ist, wird immer weiter hochgezählt - ich bekomme das korrekte Ergebnis geliefert.
|
|
|
19.03.2005, 12:42
|
#5
|
|
TP-Member
Registriert seit: Feb 2005
|
Geändert von samuelshp (19.03.2005 um 12:53 Uhr).
|
|
|
19.03.2005, 13:02
|
#6
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
Wenn da 0 steht, dann liegt das daran, dass filemtime einen anderen Wert als "heute" liefert.
$datum ist bei Dir auch nicht angegeben.
Also:
1. nimm das $datum raus oder definiere es
2. benutze z.B. fileatime
|
|
|
20.03.2005, 17:50
|
#7
|
|
TP-Member
Registriert seit: Feb 2005
|
Ich habs mal etwas anders gemacht, so gehts bei mir.
PHP-Code:
function countJpgRecursiv($path)
{
$result = 0;
$handle = opendir($path);
if ($handle)
{
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..")
{
$name = $path . "/" . $file;
if (is_dir($name))
{
$result += countJpgRecursiv($name);
}
else
{
if (substr(strtolower($name), -4) == ".jpg" && date("d.m.Y",filemtime($name))==date("d.m.Y", time()))
$result++;
}
}
}
}
closedir($handle);
return $result;
}
echo countJPGRecursiv("../wallpaper");
|
|
|
20.03.2005, 19:12
|
#8
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
aha, also das undefinierte $datum
übrigens, date("d.m.Y", time()) geht auch einfacher mit date("d.m.Y")
|
|
|
20.03.2005, 20:56
|
#9
|
|
TP-Member
Registriert seit: Feb 2005
|
Danke, für die Hilfe die ihr mir gegeben habt, aber das mit der Variable $datum war nur ein Fehler. Es ging trotzdem nicht.
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:56 Uhr.
|
 |