Autor |
Beitrag |
Roadrunner116
      
Beiträge: 89
Win XP Home, Ubuntu Linux 6.06
Delphi 7, Java, PHP
|
Verfasst: Mo 05.02.07 22:33
Da hier wohl auch php-fragen gepostet werden düren tu ich dies auchmal
ich möchte die unterordner eines ordners auflisten lassen, indem ich für jeden ordner eine neue tabelle erstelle, wo ich in die erste Zeile den Ordnername und in die 2. zeile die enthaltenen PDF-Dokumente (link) ausgebe.
Ich würde das mit "opendir" und "readdir" machen, weiß jedoch nicht, wie ich immer eine neue tabelle erstellen soll und da die inhalte direkt dazu packen muss ......
ordnerinhalte ausgeben klappt und ordnernamen ausgeben auch, hatte ich beides schon in verschiedenen projekten!
aber, wenn meine Ordnerstrucktur so aussieht:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| <Ordner1 -->Datei1.pdf -->Datei2.pdf -->Datei3.html
<Ordner2 -->Datei1.pdf -->Datei2.jpg -->Datei3.php -->Datei4.pdf |
Soll das script folgendes ausgeben
___________________________________
| |
| Ordner1 |
|__________________________________|
| |
| Datei1 |
| Datei2 |
| |
| |
|__________________________________|
___________________________________
| |
| Ordner2 |
|__________________________________|
| |
| Datei1 |
| Datei4 |
| |
| |
|__________________________________|
Und dieses script soll halt immer automatisch auf änderungen der dateien und der struktur reagieren
Ich hoffe ihr versteht mich .....
Hat jemand ne Idee?
Gruß Roadrunner116
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Di 06.02.07 16:05
Was hältst Du davon, Mit OpenDir\ReadDir das Verzeichnis auszulesen und Dateien in ein Array, Unterverzeichnisse in ein anderes Array einzulesen ...
Dann das aktuelle Verzeichnis als Tabelle auszugeben UND anschließend die Funktion für jedes der Unterverzeichnisse aufzurufen???
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
blackbirdXXX

      
Beiträge: 1077
Erhaltene Danke: 1
Ubuntu Dapper
|
Verfasst: Di 06.02.07 18:22
Ich hab dir jetzt mal schnell etwas zusammengebastelt, dass das tun sollte (sofern ich dich richtig verstanden habe). Hab das jetzt allerdings nicht testen können weil ich keinen PHP Interpreter auf diesem System habe: paste.pocoo.org/show/927/
_________________ Klein, schwarz und ärgert Techniker? Jumper!
|
|
wunsiedler
      
Beiträge: 506
Erhaltene Danke: 4
Win7
|
Verfasst: Di 06.02.07 19:41
hier was einfaches von mir was ich auf meiner platte gefunden habe. das skript listet dir die verzeichnisse auf und auf klick auf eines davon die dateien in diesem verz. kannst ja an deine bedürfnisse anpassen.
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: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64:
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <html> <head> <title>Suche</title> <style><!-- body{font-family:verdana;font-size:12px;} --></style> </head> <body bgcolor="white" text="black" link="blue" vlink="purple" alink="red"> <? error_reporting(E_ALL); class Verzeichnisse { //============================================================================= function hauptverzeichnisse() { $haupt = glob('*',GLOB_ONLYDIR); foreach($haupt as $verzeichnis) { $zaehler=0; $dirhandle = opendir($verzeichnis); while($datei = readdir($dirhandle)) { if($datei != "." and $datei != "..") { $zaehler++; } } closedir($dirhandle); echo "<a href='suchen.php?dat=$verzeichnis'>$verzeichnis</a><br>"; } } //============================================================================ function dateien($verz) { $g=0; $d = opendir($verz); while($dat=readdir($d)) { if($dat != "." and $dat != "..") { echo "<a href='$verz/$dat'>$dat</a><br>"; $g=$g + filesize($dat); //clearstatcache(); } } closedir($d); echo $g; } } //================================================================================= $v = new Verzeichnisse; if (isset($_GET['dat'])) { echo"<a href='suchen.php'>Zurück</a><br>"; $v->dateien($_GET['dat']); } else { $v->hauptverzeichnisse(); } ?> </body> </html> |
|
|
blackbirdXXX

      
Beiträge: 1077
Erhaltene Danke: 1
Ubuntu Dapper
|
Verfasst: Di 06.02.07 20:46
wunsiedler hat folgendes geschrieben: | hier was einfaches von mir was ich auf meiner platte gefunden habe. das skript listet dir die verzeichnisse auf und auf klick auf eines davon die dateien in diesem verz. kannst ja an deine bedürfnisse anpassen. |
AUA. Gleich ein paar Probleme in dem Skript.
1.) readdir Rückgabewert immer mit === oder !== gegen false testen. Sonst stoppt das Skript beispielsweise wenn eine Datei oder Ordner "0" etc. heißt.
2.) nirgendwo im Skript wird escaped. Nur weil man Windows gewohnt ist heißt es nicht, dass andere Dateisysteme kein <, > oder & im Dateinamen erlauben.
3.) Das übergebene Verzeichniss im URL Parameter wird nicht gegen Directory Traversals geprüft
_________________ Klein, schwarz und ärgert Techniker? Jumper!
|
|
wunsiedler
      
Beiträge: 506
Erhaltene Danke: 4
Win7
|
Verfasst: Di 06.02.07 20:53
deswegen hab ich auch gesagt dass es was einfachen ist. war auch nur für mich gedacht und funktioniert prima bei mir lokal(win) und auf dem webspace(denk mal linux) ebenso.
|
|
Roadrunner116 
      
Beiträge: 89
Win XP Home, Ubuntu Linux 6.06
Delphi 7, Java, PHP
|
Verfasst: Di 06.02.07 21:49
@blackbirdXXX: Dank dir werd gleich mal kukken, .... und zu dem system unterschied: wenn man einmal auf linux eingeschossen is ist windows teilweise echt nervig
@wunsiedler: werd deins auchmal anschauen, ich bastle mir aus euren skrips was DANKE .... wenn ichs net vergesse lad ich das auchmal hier hoch
Gruß Roadrunner116
|
|
Roadrunner116 
      
Beiträge: 89
Win XP Home, Ubuntu Linux 6.06
Delphi 7, Java, PHP
|
Verfasst: Mi 07.02.07 17:31
soooo...... hab mir jetz was gebastelt
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: 45: 46: 47: 48: 49: 50:
| <?php $num = 1; $ordner = 'data/ergebnisse/'; chdir($ordner); $ordner='.'; $handle = opendir($ordner); while (false !== ($directory = readdir($handle))) { if($directory != "." && $directory != ".." && is_dir($directory)) { $pfad = $directory; $titel = $directory; $num = $num + 1; ?> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td class="titel_left"> </td> <td class="titel_middle" style="text-align:left;"><?php echo $titel; ?></td> <td class="titel_right"> </td> </tr> <tr> <td colspan="3" class="text"> <?php //$pfad = readdir($handle); chdir($pfad); $pfad='.'; $handel2 = opendir($pfad); while ($file = readdir ($handel2)) { if($file != "." && $file != "..") { if(is_dir($directory."/".$file)) { echo "/".$file."<br/>"; } else { // kompletter Pfad $compl = $directory."/".$file; echo " <a href=\"data/ergebnisse/".$compl."\" target=\"_Blank\">".$file."</a><br/>"; } } } closedir($handle); ?>
</td> </tr> </table> <br> <?php } } ?> |
Dies funioniert imt dem ersten ordner einwandfrei, nur dann bekomme den fehler:
Zitat: | Warning: readdir(): 3 is not a valid Directory resource in C:\Programme\xampp\htdocs\PHP-Test\pages\ergebnisse.php on line 7 |
das hat wohl damit zutun ob man im richtigen oder falschen ordner ist, weil wenn ich den php-code in der "text-zelle" der tabelle auskomentiere, dann zeigt er alle ordnernamen in der titelzeile einer neuen tabelle an....
wenn ich den ordner nach dem einfügen in die text-zelle wieder zurückstelle bringt er als nur die gleiche tabelle und hört nichtmehr auf
|
|
Roadrunner116 
      
Beiträge: 89
Win XP Home, Ubuntu Linux 6.06
Delphi 7, Java, PHP
|
Verfasst: Mi 07.02.07 19:06
die fehlermeldung liegt an dem "closedir"!
habe es weggemacht, geht jetz also......
Bleibt nohc das Problem, dass nur der 1. Ordner angezeigt wird!
wie kann ich vor dem erneuten abfragen der Schleife eine Ordnerstruktur zurück gehen?
Gruß Roadrunner116
|
|
wunsiedler
      
Beiträge: 506
Erhaltene Danke: 4
Win7
|
Verfasst: Mi 07.02.07 20:17
So, dieser Code liest mir vom Stammverzeichnis aus alle Ordner und die darin enthaltenen Dateien und schreibt dies in jeweils eine tabelle wie du es willst. Probiers mal.
Achtung!!! Dies ist ein LÖSUNGSVORSCHLAG. Dies ist keine 100% ig korrekte Lösung. Benutzung auf eigene Gefahr.
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:
| <? error_reporting(E_ALL); class Verzeichnisse { function hauptverzeichnisse() { $haupt = glob('*',GLOB_ONLYDIR); // verzeichnisse suchen foreach($haupt as $verzeichnis) // schleife durchläuft die verzeichnisse { echo"<table border=1>"; echo"<tr><td>$verzeichnis</td></tr>"; // überschrift der tabelle $dirhandle = opendir($verzeichnis); echo"<tr><td>"; while(false !== ($datei = readdir($dirhandle))) // schleife durchläuft dateien im ordner { if($datei != "." and $datei != "..") // hier noch nach pdf suchen lassen { echo $datei."<br>"; } } echo "</td></tr>"; closedir($dirhandle); echo "</table><br>"; } } } $v = new Verzeichnisse; $v->hauptverzeichnisse(); ?> |
Zuletzt bearbeitet von wunsiedler am Mi 07.02.07 20:50, insgesamt 2-mal bearbeitet
|
|
Roadrunner116 
      
Beiträge: 89
Win XP Home, Ubuntu Linux 6.06
Delphi 7, Java, PHP
|
Verfasst: Mi 07.02.07 20:21
danke! ich probier es später nochmal aus.......
Un nochmla dickes lob an dieses forum!
Ich bin parallel in einem "PHP-Forum" angemeldet, da konnte/wollte mir keiner so richtig helfen, kamen nur hilfen die mir nix gebracht haben und es dauerte 1 tag bis überhaupt etwas kam.....
Danke an alle 
|
|
blackbirdXXX

      
Beiträge: 1077
Erhaltene Danke: 1
Ubuntu Dapper
|
Verfasst: Mi 07.02.07 20:27
Mir reichts. Ich werd ignoriert... Evtl. würde sich der Herr Fragensteller nochmal meinen Beitrag genauer durchlesen. Da hab ich bereits ein paar Dinge an wunsiedlers Skript kritisiert...
_________________ Klein, schwarz und ärgert Techniker? Jumper!
|
|
Roadrunner116 
      
Beiträge: 89
Win XP Home, Ubuntu Linux 6.06
Delphi 7, Java, PHP
|
Verfasst: Mi 07.02.07 20:59
tut mir leid wannd as so rüberkam als würd ich dich ignorieren!
ich habe acuh mein script selbst zusammen gebaut,.......!
ich schriebe lieber selbst als lösungen vona nderen zu übernehmen!
mein script ist ja auch ok bis auf die tatsache, dass er wieder aus der shclefe aussteigt weil er keine einträge fidnet!
das problem liegt meinermanug da, dass er im falschen ordner sucht,a lso wollte ich nur einen tip, wie man dort nachhelfen kann.
und nochaml ich hab keien ignoroert...... les bitte mal meinen letzten post..... 
|
|
blackbirdXXX

      
Beiträge: 1077
Erhaltene Danke: 1
Ubuntu Dapper
|
Verfasst: Mi 07.02.07 21:46
Roadrunner116 hat folgendes geschrieben: | ich schriebe lieber selbst als lösungen vona nderen zu übernehmen! |
Darum geht es nicht.
Zitat: | mein script ist ja auch ok bis auf die tatsache, dass er wieder aus der shclefe aussteigt weil er keine einträge fidnet! |
Eben nicht. In deinem Skript wird an keiner Stelle ein Wert maskiert. Tut mir leid wenn es falsch rüber kam aber sowas kann mich jedes mal aufs neue Aufregen 
_________________ Klein, schwarz und ärgert Techniker? Jumper!
|
|
Roadrunner116 
      
Beiträge: 89
Win XP Home, Ubuntu Linux 6.06
Delphi 7, Java, PHP
|
Verfasst: Mi 07.02.07 22:01
OK...
würdest du mir bitte erklären, was du meinst.....
Zitat: | In deinem Skript wird an keiner Stelle ein Wert maskiert |
|
|
blackbirdXXX

      
Beiträge: 1077
Erhaltene Danke: 1
Ubuntu Dapper
|
Verfasst: Mi 07.02.07 22:15
_________________ Klein, schwarz und ärgert Techniker? Jumper!
|
|
Roadrunner116 
      
Beiträge: 89
Win XP Home, Ubuntu Linux 6.06
Delphi 7, Java, PHP
|
Verfasst: Fr 09.02.07 18:44
also ich hab mir das durchgelesen und kann keine wirkliche verbindung zu meinem script finden,
könntest du mir bitte erklärenw ass ich besser mahcen sollte
Gruß Roadrunner116
|
|
blackbirdXXX

      
Beiträge: 1077
Erhaltene Danke: 1
Ubuntu Dapper
|
Verfasst: Sa 10.02.07 13:51
Roadrunner116 hat folgendes geschrieben: | also ich hab mir das durchgelesen und kann keine wirkliche verbindung zu meinem script finden,
könntest du mir bitte erklärenw ass ich besser mahcen sollte |
Jeder String der ein ein HTML Dokument geschrieben wird und nicht hardcoded ist muss durch htmlspecialchars gelassen werden (ausnahme: man weiß, dass html code drin ist und der sicher ist).
_________________ Klein, schwarz und ärgert Techniker? Jumper!
|
|
Roadrunner116 
      
Beiträge: 89
Win XP Home, Ubuntu Linux 6.06
Delphi 7, Java, PHP
|
Verfasst: So 11.02.07 15:04
Ja, so habe ich das auch verstanden, aber es hat ja kein user Einfluss auf den gesendeten Text, von daher ist er ja sicher, da ich ihn ja geschrieben habe! Oder nicht?
Gruß Roadrunner116
|
|
blackbirdXXX

      
Beiträge: 1077
Erhaltene Danke: 1
Ubuntu Dapper
|
Verfasst: So 11.02.07 17:03
Roadrunner116 hat folgendes geschrieben: | Ja, so habe ich das auch verstanden, aber es hat ja kein user Einfluss auf den gesendeten Text, von daher ist er ja sicher, da ich ihn ja geschrieben habe! Oder nicht? |
Kannst du ausschließen, dass die Dateinamen auf deinem Dateisystem keine HTML Enitäten enthalten? Also ich kann das zumindest mal nicht.
_________________ Klein, schwarz und ärgert Techniker? Jumper!
|
|