Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Ich komme irgendwie nicht weiter!

Mitglied: Toro

Toro (Level 1) - Jetzt verbinden

13.01.2006, aktualisiert 14:23 Uhr, 3970 Aufrufe, 6 Kommentare

PHP- Countfunktion!

Hallo @ all,
ich hab eine Frage und zwar möchte ich das auf einer Seite angegeben wird wieviele Dateien in einem Ordner sind. Ich habe eine Suchfunktion programmiert der mir alle index.html seiten raussucht und mir auf der Seite den letzten Ordner anzeigt wo diese Index.html drin ist und diesen auch an die index.html seite verklinkt. Ich habe alles mit Tabellen gemacht und möchte bei der 2 Spalte die zahl ausgeben lassen wiviele Dateien in dem Unterordner Documente drin sind!
Ich weiss es ist etwas schwer zu verstehen bzw. schwer zu erklären.
Ich wäre sehr dankbar auf die Lösung den ich bin schon leicht verzweifelt...!
Vielen Dank schonmal im voraus!

Ich poste mal mein Queltext er ist zwar etwas lang hab ihn aber etwas kommentiert! Bin noch ein noob!:

echo "<table border=1 width=50% align=center bordercolor=#009900>";
echo "<tr>\n";
echo "<td width=50% align=CENTER &#160;>";


echo "Thema ";
echo "</td>\n";
echo "<td width=50% align=CENTER &#160;>";
echo "Anzahl der Dateien";
echo "</td>\n";
echo "</tr>\n";

echo "</table>";

START der Funktion
function travelDirectorys($DIR) {
in der Variable "output" werden die Verzeichnisnamen gespeichert
in denen die Datei "index.html" vorkommt
$output = array();

Wenn das letzte Zeichen des angegebenen Directorys kein Slash
ist, dann fuege diesen hinzu
Das ist noetig weil weiter unten im Code die Anweisung "$DIR .
$entry" kommt. Wenn in $DIR also
zB. "/var/www" gespeichert waehre und $entry "irgendwas"
enthaelt, dann wuerde dadurch "/var/wwwirgendwas"
entstehen, deshalb wird an das $DIR noch ein Slash angehaengt
damit "/var/www/irgendwas" entsteht...
if(substr($DIR, -1) != "\\") $DIR .= "\\";

erzeuge eine Liste aller Eintrage in einem Verzeichnis
$d = @dir($DIR);

gehe jeden Eintrag in dieser Liste durch
if (!is_object($d)) return NULL;

while (false !== ($entry = $d->read()))
{
die Verzeichniseintraege "." und ".." werden auch mit
aufgelistet, deshalb muessen diese ausgeschlossen werden
if($entry != "." && $entry != "..") {

Wenn der Verzeichniseintrag selbst ein Verzeichnis ist...
if( is_dir($DIR.$entry)) {
dann durchsuche dieses Verzeichnis ebenfalls komplett
und haenge dessen Ergebnisse an die bereits
vorhandene Ergebnisliste an
$h = travelDirectorys($DIR.$entry);

if (is_array($h) && is_array($output))
$output = array_merge($output, $h);

Wenn ein Eintrag "index.html" heisst
(ignoriere gross/kleinschreibung indem die Funktion
"strtolower" einfach alles in kleinschreibung umwandelt )
} elseif( strtolower($entry) == "index.html") {

Haenge das aktuelle Verzeichnis an die Ergebnisliste an
$output[] = $DIR.$entry;
}
}
}
schliesse die Verzeichnisliste wieder
$d->close();



Gebe die Ergebnisliste zurueck
return $output;
}
ENDE der Funktion

* Benutzen der Funktion

Aufrufen der Funktion mit dem Verzeichnis das durchsucht werden soll
$result = travelDirectorys("D:\\");

Sorge dafuer dass in der Ergebnisliste kein Eintrag mehrfach
vorkommt
$result = array_unique($result);


durchwandere die Ergebnisliste und zeige jeden Eintrag an
foreach($result AS $entry) {
trenne den Eintrag an den Slashes auf.
$name = explode("\\", $entry);



drehe das Array einfach um...
$name = array_reverse($name);

schneide das index.html aus
$name = array_slice($name, 1);



sollte der erste Eintrag leer sein (sollte so sein, wenn man nur die Pfade zurück bekommt), nimm den nächsten.
if (!empty($name[0])) $name = $name[0];
else $name = $name[1];

$entry = substr ($entry,2);

$stat= stat($entry);

$link = "<a href=\.$entry. >$name</a>\n";



echo "<table border=1 width=50% align=center bordercolor=#009900 >";


Aufruf der Funktion count file
$dir=".";
$atest=count_file($dir);

echo "<tr>\n";
echo "<td width=50% align=center &#160;>";
echo $link;
echo "</td>\n";
echo "<td width=50% align=center &#160;>";
echo "<br />FILES: ".$atest[file];
echo "</tr>\n";
echo "</td>\n";

}
echo "</table>";

function count_file($dir)
{

Ueberprueft ob das angegebene Verzeichnis existiert
if(is_dir($dir))
{
-- $afile[directory]=0;
$afile[file]=0;



chdir($dir);
$handle=opendir($entry);

$handle=opendir("D:\\CISCO\Documente");
while($file=readdir($handle))
{

Handelt es sich bei $file um ein Unterverzeichnis?
if(is_dir($file) && $file!="." && $file!="..")
{

directory um eins erhoehen
-- $afile[directory]++;


rekursiver Aufruf mit aktuellem Verzeichnis
$y=count_file($file);

Ergebnisse des rekursiven Aufrufs der Funktion zu
directory und file aufaddieren
-- $afile[directory]+=$y[directory];
$afile[file]+=$y[file];
}

Handelt es sich bei $file um eine Datei?
if(is_file($file))
{

file um eins erhoehen
$afile[file]++;

}
}

// Verzeichnisstruktur zurueck gehen
if(stristr($dir,"../")) chdir($_SERVER["DOCUMENT_ROOT"].substr($_SERVER["PATH_INFO"],0,strrpos($_SERVER["PATH_INFO"],"/")));
elseif($dir!=".") chdir("../");

closedir($handle);
}

return $afile;
}



?>
</body>
</html>
Mitglied: Schrottie
13.01.2006 um 14:00 Uhr
ok damit ich dir helfen kann brauche ich noch eine bestätigung:

- Alle Ordner durchsuchen inklusive unter ordner
- Anzahl der Daten pro Ordner auflisten/zusammenrechen
- Die Index.html soll nicht mit an gegeben werden


Schrottie

EDIT:

Ich sehe garde du willst eine Festplatte durchsuchen! Ist das absicht? Eigendlich ist PHP dafür nicht gedacht, dafür gibt es freeware Programme. Auserdem kann es zu problemen kommen wenn du auserhalb des "htdocs"-Ordners arbeitest.
Bitte warten ..
Mitglied: Toro
13.01.2006 um 14:10 Uhr
nur die daten zählen die im Unterordner Documente drin sind!


---Ordner
-------\Ordner1
-----------------\index.html
---------- \Documente
------------------------\bild.jpg
-------------------------\bildbla.jpg
-------\Ordner2
-----------------\index.html
---------- \Documente
------------------------\blub.jpg




Es soll so angezeigt werden

Ordner1------2------------
Ordner2------1------------
und des Ordner1 soll verlinkt wrden auf die index.html




Edit:Ja ich will eine andere Festplatte durchsuchen und bis jetzt hat er keine probleme gemacht!
Bitte warten ..
Mitglied: Schrottie
13.01.2006 um 14:12 Uhr
ist in jedem Ordner eine index datei?
Bitte warten ..
Mitglied: Toro
13.01.2006 um 14:18 Uhr
Es sind nicht in jedem Ordner index.html dateien drin!
Bitte warten ..
Mitglied: Schrottie
13.01.2006 um 14:21 Uhr
worrauf soll dann verwiesen werden?
Bitte warten ..
Mitglied: Toro
13.01.2006 um 14:23 Uhr
angegeben soll der Ordnername und verwiesen soll auf die index.html die darunter ist!
Das funktioniert ja schon, das problem ist das mit dem zählen!
Bitte warten ..
Ähnliche Inhalte
Festplatten, SSD, Raid
OCZ defekt und irgendwie wiederbeleben?
Frage von 85807Festplatten, SSD, Raid5 Kommentare

Hallo Leute, Ja die Überschrift verrät schon alles. Auch ich wurde leider Opfer einer verlockend günstigen OCZ Agility 2 ...

VB for Applications

Makro in Schnellzugriffsleiste tut irgendwie nicht so richtig

Frage von JuckieVB for Applications2 Kommentare

Hallo zusammen, für eine Excel Vorlage habe ich ein Makro geschrieben. Für dieses Makro habe ich auch ein Symbol ...

Windows Server

Terminalserver Hintergrund erzwingen funktioniert irgendwie nicht

gelöst Frage von mfernauWindows Server3 Kommentare

Hallo! Ich habe einen Windows Server 2012 R2 als TS und möchte den Usern gern einen fest eingestellten Desktop ...

Windows 10

Laufwerksbuchstaben - Kriege das Problem irgendwie nicht los

Frage von EstefaniaWindows 106 Kommentare

Hallo Ich bin schon ein wenig am verzweifeln. Das Problem verfolgt mich schon seit Windows 7. Mittlerweile setze ich ...

Neue Wissensbeiträge
Microsoft

Neuigkeiten zu Server und Office 365 was läuft mit was und was nicht

Tipp von AlFalcone vor 17 StundenMicrosoft

Server Betriebssysteme auf dem die verschiedenen Offices nicht supported sind: • Office 365 ist und wird nicht supported auf Windows ...

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 18 StundenSpeicherkarten1 Kommentar

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Sicherheit

Diverse D-Link-Router durch drei Schwachstellen kompromittierbar

Information von kgborn vor 20 StundenSicherheit

Hat jemand D-Link-Router in Verwendung? Einige Modelle sind sicherheitstechnisch offen wie ein Scheunentor. Äußerst unschöne Sache, aber nichts neues ...

Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 1 TagHardware1 Kommentar

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Heiß diskutierte Inhalte
Windows 10
Sysprep Fehler im Log kann nicht starten
Frage von grillinator95Windows 1022 Kommentare

Hallo, kann leider SYSPREP nicht mehr starten, Win10 64bit. Logfile sagt folgendes: 2018-10-17 13:44:56, Info SYSPRP 2018-10-17 13:44:56, Info ...

Sicherheitsgrundlagen
EuGH-Urteil - Internetanschluss für die ganze Familie - Filesharer haften trotzdem
Frage von StefanKittelSicherheitsgrundlagen19 Kommentare

Hallo, In diesem Artikel geht es darum, dass Jemand aus der Familie ein Hörbuch illegal hochgeladen hat. Der Vater ...

Apple
MacBook Pro 2018 mit 8 GB oder 16 GB
Frage von SysAdm81Apple14 Kommentare

Hallo zusammen, ich steh vor der Überlegung mir ein MacBook Pro 13 (2018) zu kaufen. Bzgl. SSD habe ich ...

Outlook & Mail
Outlook schiebt Mails aus Posteingang sofort in den Papierkorb
Frage von hermesOutlook & Mail13 Kommentare

Hallo Outlook Fachleute, wir haben hier das Problem, dass Outlook 2010 alle ankommenden Mails seit zwei Tagen einfach in ...