Scan dir nutzen wie?

EddieG

Erfahrenes Mitglied
hi,

ich habe mir ne php Erweiterung Installiert das Problem ist ich weiß jetzt nicht wie ich diese mit scandir verbinde.
Die erweterung emöglicht es daten aus einer .rep datei auszulesen.
allerdings zu mir einem Absoluten Pfad . Ich wollte es jetzt Dynamsicher machen und zwar. via scandir alle dateien Auflisten die .rep enden und dazughörige daten ebenfals auslesen. und wenn ich drauf klicke auf den dateinamen soll die gesamten daten zu der einen .rep datei anzeigen.
PHP:
<?php
    $info = php_bw_load_replay("C:\\Programme\\StarCraft\\maps\\replays\\ffow udn fun gebasht.rep");
    if($info->ErrorCode != 0)
        die("Could not load the replay ! Message : " . $info->ErrorString);

	echo "<br>Date :"	. $info->GameDate;
		echo "<br>Number of Players :"	. $info->NumPlayer;
	echo "<br>Teams :"	. $info->Teams;
	echo"<br>Observer:" . $info->IsObserver;
	echo "<br>matchup :"	. $info->Matchup; 
    echo "<br>Duration : " . $info->GameLength;
	echo"<br>Type: " .$info->GameType;
    echo "<br>Players info : <br>";
    foreach($info->Players as $player)
        echo $player->Name . " : " . $player->RaceName . ", " . $player->IsObserver   . ","  . $player->ColorName  . "," . $player->APM . "APM.<br>";
?>
das is das script für den absoluten pfad jetzt würde er mir den Spielernamen , Das Datum die anzahl der Spieler was für ein typ etc. anzeigen.

wenn ich scandir jetzt einbinden möchte. wen ich es so mache geht es aber nicht
PHP:
<?php
$dir = "replays/";
$dh  = opendir($dir);
while (false !== ($filename = readdir($dh))) {
    $files[] = $filename;
}

sort($files);


print_r($files);

for($i=2;$i<sizeof($files);$i++){
    $info = php_bw_load_replay($files[$i]);
    if($info->ErrorCode != 0)
        die("Could not load the replay ! Message : " . $info->ErrorString);

    echo "<br>Date :"    . $info->GameDate;
     echo "<br>matchup :"    . $info->Matchup; 
    echo "<br>Duration : " . $info->GameLength;
    echo"<br>Type: " .$info->GameType;
    echo "<br>Players info : <br>";
    foreach($info->Players as $player)
        echo $player->Name . " : " . $player->RaceName . ", " . $player->IsObserver   . ","  . $player->ColorName  . "," . $player->APM . "APM.<br>";
}
?>

so sollte er mir alle Dateien untereinander anzeigen und folgende daten auslesen Spieldatum und den Matchup aber irgendwie geht nicht ;)
 
Hallo!

In dem fall geht es auch einfacher um alle dateien eines verzeichnisses auszuwählen... guckstu hier: http://de.php.net/glob

d.h. um alle Rep-Dateien in einem Verzeichnis durchzulaufen, genügt folgendes

PHP:
<?php 

chdir('/hier/replay/verzeichnis/angeben');
$repfiles = glob("*.rep");

foreach($repfiles as $repfile)
{
 $info = php_bw_load_replay($repfile); 
 // ... weitere bearbeitung
}

?>
 
Zuletzt bearbeitet:
ne geht leider nicht
es kommt
Parse error: syntax error, unexpected T_VARIABLE in C:\xampp\htdocs\reps\replay\liste.php on line 5
das heisst die zeile $repfiles = glob("*.rep"); is wohl falsch. liegts am sternchen?
 
mhh ich hät jetzt gesagt nach chdir kommt noch n Semikolon ";"

Ist immer so das dann die nächste Zeile als Fehler ausgegeben wird.
 
jo das war auch der grund habs auch bemerkt aber das teil meint jetzt er Could not load the replay ! Message : No such file or directory
wasaber komisch ist da es das verzeichnis replays genau einoder unten drunter ist wo die dateien drinen sind
PHP:
<?php 

chdir('replays/');
$repfiles = glob("*.rep");

foreach($repfiles as $repfile)
{
 $info = php_bw_load_replay($repfile); 
.....
}
?>
ich habe gelesen das das dings nur absolute pfade annimmt
der support von der erweiterung hat mir auch nur das geantwortet
The "*rep" part cannot work... RepASM can only take existing absolute paths and will not resolve wildcards for you. Plus, it's like 3-4 lines of code in PHP to browse a whole directory recursively (see the scandir() function).
mehr nicht udn mehr sagen se auch nicht :/
aber wenn ich so gucke es gibt seiten die habens gebacken bekommen :/ wie hier bsp. http://www.clan-sl.com/index.php?to=replay ich raffs einfach net
 
Hallo ... ist auch kein Problem für den absoluten pfad ...

anstatt
PHP:
<?php 

chdir('replays/');
$repfiles = glob("*.rep");

foreach($repfiles as $repfile)
{
 $info = php_bw_load_replay($repfile); 
.....
}
?>

schreibst du:

PHP:
<?php 

chdir('replays/');
$repfiles = glob("*.rep");

foreach($repfiles as $repfile)
{
 $aktueller_pfad = getcwd();
 $info = php_bw_load_replay($aktueller_pfad."/".$repfile); 
.....
}
?>
 
danke hat funktioniert wie kann ich das jetzt so machen das wenn ich drauf klicke auf eines der aufgelistet das ich ein detail dokument öffnet wo ich alle daten zu der datei auslese?
also sagen wir mal durch das script wird es jetzt so aufgelistet


1v1Sieg zzvpp melee
2v2Sieg ttvpz tvb
3v3 low ttpvzzp melee

wenn ich jetzt z.b. auf 2v2 sieg klicke öffnet sich das dokument Replay Details
oder gar es runter laden will müssen ja imprinzip noch zwei schaltfläschen dazu
einmal details und einmal download
aber irgendwie geht es nicht
habe es so gemacht echo"<br> Download: <a href=replays/$repfile.rep> Download</a>";
echo"<br> Details: <a href=php_bw_load_replay.php?replays/$repfile$$.rep=$path>Details</a>";
aber mir is eingefallen das bei details das dokument gar nicht weiß welches replayes laden soll somit muss ich doch noch irgendwie mit post arbeiten oder?
 
Zuletzt bearbeitet:
Hallo,

Möglich wäre z.B. via GET den Dateinamen übergeben? also in richtung
PHP:
echo "<a href=\"details.php?datei=".$info['dateiname'],"\">2v2 Sieg ttvpz tvb</a>";

Achtung: Prüf aber unbedingt das ein .rep file angefordert wurde -- sonst könnte ein malicious user auch die "../../../../../../../etc/htpasswd" anfordern ;)
 
Zurück