Autor Beitrag
Roadrunner116
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 89

Win XP Home, Ubuntu Linux 6.06
Delphi 7, Java, PHP
BeitragVerfasst: 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: 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
ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 506
Erhaltene Danke: 4

Win7

BeitragVerfasst: 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.

ausblenden volle Höhe Quelltext
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

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: Di 06.02.07 20:46 
user profile iconwunsiedler 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
ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 506
Erhaltene Danke: 4

Win7

BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 89

Win XP Home, Ubuntu Linux 6.06
Delphi 7, Java, PHP
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 89

Win XP Home, Ubuntu Linux 6.06
Delphi 7, Java, PHP
BeitragVerfasst: Mi 07.02.07 17:31 
soooo...... hab mir jetz was gebastelt
ausblenden volle Höhe Quelltext
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 89

Win XP Home, Ubuntu Linux 6.06
Delphi 7, Java, PHP
BeitragVerfasst: 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
ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 506
Erhaltene Danke: 4

Win7

BeitragVerfasst: 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.

ausblenden volle Höhe Quelltext
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 89

Win XP Home, Ubuntu Linux 6.06
Delphi 7, Java, PHP
BeitragVerfasst: 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

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 89

Win XP Home, Ubuntu Linux 6.06
Delphi 7, Java, PHP
BeitragVerfasst: 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

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: Mi 07.02.07 21:46 
user profile iconRoadrunner116 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 89

Win XP Home, Ubuntu Linux 6.06
Delphi 7, Java, PHP
BeitragVerfasst: 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

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: Mi 07.02.07 22:15 

_________________
Klein, schwarz und ärgert Techniker? Jumper!
Roadrunner116 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 89

Win XP Home, Ubuntu Linux 6.06
Delphi 7, Java, PHP
BeitragVerfasst: 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 :oops:

Gruß Roadrunner116
blackbirdXXX

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: Sa 10.02.07 13:51 
user profile iconRoadrunner116 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 :oops:


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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 89

Win XP Home, Ubuntu Linux 6.06
Delphi 7, Java, PHP
BeitragVerfasst: 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

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: So 11.02.07 17:03 
user profile iconRoadrunner116 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!