Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

[php] verzeichnisse auslesen

Diskussion: [php] verzeichnisse auslesen im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Hallo liebe Leute, ich könnte ein wenig hilfe benötigen, bin in php nicht gerade erfahren und würde gerne via ...

Antwort
Alt 14.02.11, 14:41   #1 (permalink)
 
Registriert seit: 27.10.09
selig Leistung: Facit NTK
selig eine Nachricht über ICQ schicken
Likes: 0
Post [php] verzeichnisse auslesen

Anzeige

Hallo liebe Leute,
ich könnte ein wenig hilfe benötigen, bin in php nicht gerade erfahren und würde gerne via php ein verzeichniss auslesen, in welchem Unterordner vorhanden sind, in welchen wiederrum Bilder gespeichert sind...

die Daten /Verzeichniss/dateiname.jpg
sollen in einer MySQL Datenbank gespeichert werden, wodurch ich mir erhoffe die Bilder dann auf der Homepage anzeigen lassen zu können.

Ich benötige "nur" Hilfe beim auslesen der Verzeichniss und beim speichern deren Inhalt dann in der DB zu speichern.

Wäre richtig toll wenn ihr mir am besten schon so eine art fertiges Script übermitteln könntet oder wenigstens ein paar brauchbare referenzen (wobei ich brauchbar als anfänger eher anderst definiere )

Vielen Dank im Vorraus


Geändert von selig (14.02.11 um 14:45 Uhr)
selig ist offline   Mit Zitat antworten
Alt 14.02.11, 14:52   #2 (permalink)
 
Registriert seit: 06.06.09
Thunderb0lt Leistung: 8086
Likes: 6
Standard

Ein fertiges Script wird dir hier wohl keiner vor die Nase setzten. Aber du kannst dir einmal die Funktionen opendir() und readdir() anschauen. Allgemein ist das Handbuch unter php.net eigentlich eine sehr gute Referenz, die einem die meisten einfachen Fragen schon beantwortet.

Wenn dir das nicht weiter hilft, dann wäre es ganz nützlich, wenn du deinen bisherigen Code einmal posten würdest und genau erklärst, wo du Probleme hast.
__________________
A good programmer looks both ways before crossing a one-way street.

Die Politik kann uns nur für so dumm verkaufen, wie wir sind.
Thunderb0lt ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 14.02.11, 15:34   #3 (permalink)
 
Benutzerbild von she3p
 
Registriert seit: 07.05.07
she3p Leistung: 8086
Likes: 19
Standard

http://ch.php.net/glob
she3p ist offline   Mit Zitat antworten
Alt 14.02.11, 19:51   #4 (permalink)
Themenstarter
 
Registriert seit: 27.10.09
selig Leistung: Facit NTK
selig eine Nachricht über ICQ schicken
Likes: 0
Standard

ein fertiges script wäre auch zu schön gewesen aber ich hab auf den fall gebaut das jemand lange Weile und das nötige Wissen bereits besitzt

danke, werde mir die links noch genauer anschauen, sieht aufjedenfall ziemlich gut aus
selig ist offline   Mit Zitat antworten
Alt 14.02.11, 21:18   #5 (permalink)
 
Benutzerbild von BasicAvid
 
Registriert seit: 17.03.04
BasicAvid Leistung: Facit NTK
Likes: 2
Standard

Zum auslesen eines Verzeichnisses könntest Du Dir auch noch den DirectoryIterator der SPL anschauen.
__________________
Mfg Basic Avid
- Use it or be used! -
BasicAvid ist offline   Mit Zitat antworten
Alt 15.02.11, 12:47   #6 (permalink)
Moderator
 
Benutzerbild von sTEk
 
Registriert seit: 02.10.01
sTEk Leistung: Pentium IIIsTEk Leistung: Pentium IIIsTEk Leistung: Pentium IIIsTEk Leistung: Pentium IIIsTEk Leistung: Pentium III
sTEk eine Nachricht über ICQ schicken
Likes: 162
Standard

Und denke daran zu bendenken, ob Du einen Linux- oder Windowsserver hast.
__________________


Steigerung des Luxus: eigenes Auto, eigene Villa, eigene Meinung.

Wieslaw Brudzinski

Würden die Menschen verstehen, wie unser Geldsystem funktioniert, hätten wir eine Revolution – und zwar schon morgen früh.
Henry Ford

Ich mag den Himmel blau - was will ich da mit ner Cloud?!
sTEk ist offline   Mit Zitat antworten
Alt 15.02.11, 22:52   #7 (permalink)
Themenstarter
 
Registriert seit: 27.10.09
selig Leistung: Facit NTK
selig eine Nachricht über ICQ schicken
Likes: 0
Standard

danke an alle bis jetzt,... hab nun ein kleines problem!
und zwar hab ich das script so mehr oder weniger zusammen gebastelt bekommen, es liest mir das komplette verzeichnis aus und zeigt mir die dateien auch in einem <img> container an,...
zuerst habe ich in meine datenbank 1 geschrieben (verzeichnisnamen und dateinamen(pfade)) in eine tabelle -> hat funktioniert

jetzt würde ich gerne in db2 schreiben und zwar besitzt diese db eine tabelle namens index in der die verzeichnisnamen gespeichert werden, um später als links verwendet werden zu können! Aus jedem Verzeichnisnamen soll noch zusätzlich eine tabelle in db 2 erstellt werden in welche alle Dateipfäde gespeichert werden um diese dann später auf der page anzeigen zu können.

mein code:
PHP-Code:
<html>
<head></head>
<body>
<?php
  


function vzread($pfad "."$dirname)
    {
$verbindung mysql_connect("localhost""meinname" "meinpw")
or die(
"Verbindung zur Datenbank konnte nicht hergestellt werden");
mysql_select_db("meinedvb") or die ("Datenbank konnte nicht ausgewählt werden");


        
$dir dir($pfad);
        
        while(
false !== ($file $dir->read()))
        {
            if((
"."  == $file) OR
               (
".." == $file))
                continue;
            if(
is_dir($pfad."/".$file)) {
                


//Tabelle mit Verzeichnisnamen erstellen
$eintrag "CREATE TABLE $file (id int(255) NOT NULL auto_increment, pfad varchar(255) NOT NULL, PRIMARY KEY (id) )";
$eintragen mysql_query($eintrag);






//Verzeichnis eintragen                
$eintrag "INSERT INTO index (typ, pfad) VALUES ('dir', '$file')";
$eintragen mysql_query($eintrag);


                
                echo(
$pfad."/".$file."<br >\n");
                
vzread($pfad."/".$file$file);
                 
            } else {

//Bilder Pfad eintragen
$eintrag "INSERT INTO $dirname (pfad) VALUES ('$pfad/$file')";
$eintragen mysql_query($eintrag);

                echo(
$pfad."/".$file."<br >\n");
                echo
"<img src=\"$pfad/$file\" width=120 height=130><br>";
            }
        }
        
$dir->close();
    }
?>


<?php
    
    
echo "In /Bilder liegt: <br />\n";
    
vzread('Bilder''blubb');
?>
</body>
</html>
Fazit: Keine Fehlermeldung, die Bilder werden korrekt angezeigt, die Pfäde werden ausgegeben,... aber mySql technisch keine Reaktion, weder in Form einer Fehlermeldung noch in Form eines Wertes in der db *hmmpf*

Bin absolut ratlos,... und versuche schon seit 3 stunden so ziemlich alles was mir so einfällt,...
selig ist offline   Mit Zitat antworten
Alt 15.02.11, 23:36   #8 (permalink)
 
Registriert seit: 06.06.09
Thunderb0lt Leistung: 8086
Likes: 6
Standard

Ich verstehe noch nicht so ganz, was du überhaupt erreichen willst. Warum legst du z.B. für jedes Unterverzeichnis eine neue Tabelle an? Schilder doch bitte noch einmal, welches Problem du genau lösen möchtest, dann können wir dir zunächst einmal mit einer geeigneten Datenbankstruktur helfen.

Um dir den MySQL-Fehler ausgeben zu lassen schau dir einmal mysql_error() an.
__________________
A good programmer looks both ways before crossing a one-way street.

Die Politik kann uns nur für so dumm verkaufen, wie wir sind.
Thunderb0lt ist offline   Mit Zitat antworten
Alt 16.02.11, 11:12   #9 (permalink)
Moderator
 
Benutzerbild von sTEk
 
Registriert seit: 02.10.01
sTEk Leistung: Pentium IIIsTEk Leistung: Pentium IIIsTEk Leistung: Pentium IIIsTEk Leistung: Pentium IIIsTEk Leistung: Pentium III
sTEk eine Nachricht über ICQ schicken
Likes: 162
Standard

Ich hab Deinen Code mal geordnet...
Als erstes: Du benutzt nur eine DB - obwohl Du von zweien sprichst.
Dann willst Du die Bilder in eine Tabelle mit dem Wert $dirname eintragen - existiert die denn überhaupt?
Bei der Erstellung der Tabelle(n) für die einzelnen Verzeichnisse solltest Du beachten, dass sich Sonderzeichen, Freizeichen etc. nicht besonders gut in Tabellennamen machen.

PHP-Code:
<?php
function vzread($pfad "."$dirname)
{
$verbindung mysql_connect("localhost""meinname" "meinpw") or die("Verbindung zur Datenbank konnte nicht hergestellt werden");

mysql_select_db("meinedvb") or die ("Datenbank konnte nicht ausgewählt werden");

$dir dir($pfad);
        
while(
false !== ($file $dir->read()))
{
     if((
"."  == $file) OR (".." == $file))
        continue;

     if(
is_dir($pfad."/".$file))
     {
        
//Tabelle mit Verzeichnisnamen erstellen
         
$eintrag "CREATE TABLE $file (id int(255) NOT NULL auto_increment, pfad varchar(255) NOT NULL, PRIMARY KEY (id) )";
        
$eintragen mysql_query($eintrag);

        
//Verzeichnis eintragen                
         
$eintrag "INSERT INTO index (typ, pfad) VALUES ('dir', '$file')";
         
$eintragen mysql_query($eintrag);

       
        echo(
$pfad."/".$file."<br >\n");
        
vzread($pfad."/".$file$file);
                 
     }
     else
     {
        
//Bilder Pfad eintragen
        
$eintrag "INSERT INTO $dirname (pfad) VALUES ('$pfad/$file')";
         
$eintragen mysql_query($eintrag);

        echo(
$pfad."/".$file."<br >\n");
        echo
"<img src=\"$pfad/$file\" width=120 height=130><br>";
     }
}

$dir->close();
}

    
echo 
"In /Bilder liegt: <br />\n";
vzread('Bilder''blubb');
?>
__________________


Steigerung des Luxus: eigenes Auto, eigene Villa, eigene Meinung.

Wieslaw Brudzinski

Würden die Menschen verstehen, wie unser Geldsystem funktioniert, hätten wir eine Revolution – und zwar schon morgen früh.
Henry Ford

Ich mag den Himmel blau - was will ich da mit ner Cloud?!
sTEk ist offline   Mit Zitat antworten
Alt 16.02.11, 13:04   #10 (permalink)
Themenstarter
 
Registriert seit: 27.10.09
selig Leistung: Facit NTK
selig eine Nachricht über ICQ schicken
Likes: 0
Standard

ich spreche von zweien da ich auf meiner kompletten homepage 2 datenbanken benutze.

beim rest hab ich selbst noch nen kleinen fehler, stimmt schon, hier nochmal korrigiert bzw offensichtlicher($dirname soll ja erst erstellt werden)

das Problem ist nachwievor das sich eben nix tut in meiner zweiten datenbank - nichts :/

danke für den Hinweis mit den leerzeichen usw. werde ich heute abend sobald ich zuhause bin in angriff nehmen
PHP-Code:
 <?php
function vzread($pfad "."$dirname)
{
$verbindung mysql_connect("localhost""meinname" "meinpw") or die("Verbindung zur Datenbank konnte nicht hergestellt werden");

mysql_select_db("meinedb") or die ("Datenbank konnte nicht ausgewählt werden");

$dir dir($pfad);
        
while(
false !== ($file $dir->read()))
{
     if((
"."  == $file) OR (".." == $file))
        continue;

     if(
is_dir($pfad."/".$file))
     {
         
$dirname $file;
        
//Tabelle mit Verzeichnisnamen erstellen
         
$eintrag "CREATE TABLE $dirname (id int(255) NOT NULL auto_increment, pfad varchar(255) NOT NULL, PRIMARY KEY (id) )";
        
$eintragen mysql_query($eintrag);

        
//Verzeichnis eintragen                
         
$eintrag "INSERT INTO index (typ, pfad) VALUES ('dir', '$file')";
         
$eintragen mysql_query($eintrag);

       
        echo(
$pfad."/".$file."<br >\n");
        
vzread($pfad."/".$file$dirname);
                 
     }
     else
     {
        
//Bilder Pfad eintragen
        
$eintrag "INSERT INTO $dirname (pfad) VALUES ('$pfad/$file')";
         
$eintragen mysql_query($eintrag);

        echo(
$pfad."/".$file."<br >\n");
        echo
"<img src=\"$pfad/$file\" width=120 height=130><br>";
     }
}

$dir->close();
}

    
echo 
"In /Bilder liegt: <br />\n";
vzread('Bilder''blubb');
?>
selig ist offline   Mit Zitat antworten
Alt 16.02.11, 15:22   #11 (permalink)
 
Registriert seit: 06.06.09
Thunderb0lt Leistung: 8086
Likes: 6
Standard

Das Problem ist nach wie vor, dass du uns nicht sagst, was du vor hast. Du hast weder meine noch sTEks Fragen beantwortet. Wie sollen wir dir da helfen? Also nochmal die Frage, was du genau erreichen willst? Scheinbar ja nicht nur die Pfade der Bilder in eine Datenbank schreiben.
Dein Code benutzt nur eine DB, aber du redest immer von zweien. Wie hängen die zusammen und in welche soll was geschrieben werden?
Existiert die Tabelle blubb überhaupt? Denn nur für Unterverzeichnisse von /Bilder wird ja eine neue Tabelle mit dem Verzeichnisnamen angelegt, sodass die Infos zu Dateien, die direkt in /Bilder liegen nach blubb geschrieben werden.
__________________
A good programmer looks both ways before crossing a one-way street.

Die Politik kann uns nur für so dumm verkaufen, wie wir sind.
Thunderb0lt ist offline   Mit Zitat antworten
Alt 16.02.11, 15:32   #12 (permalink)
Themenstarter
 
Registriert seit: 27.10.09
selig Leistung: Facit NTK
selig eine Nachricht über ICQ schicken
Likes: 0
Standard

okay,... das blubb ist schwachsinn, da diese tabelle nicht existiert, allerdings werden auch keine dateien direkt in /bilder vorhanden sein....
ich will die ordnernamen die sich in /bilder befinden in die tabelle index schreiben sodas ich mir später diese namen als link auf der homepage ausgeben lassen kann. Die Ordner die sich in /Bilder befinden sollen jeweils eine Tabelle mit dem Namen des Ordners bekommen. Dort möchte ich die Dateipfäde der, in den Ordnern befindlichen Dateien speichern...
Und später möchte ich eben auf der Homepage den Ordnernamen ausgeben lassen als link, und wenn dieser aufgerufen wird sollen dann die Daten (Bilder) auf der seite ausgegeben werden.

-> Will ein script das mir den Inhalt des Verzeichnisses Bilder nach Ordnern sortiert ausgibt, jedoch immer nur einen Ordner der vom User ausgewählt wird. Ein Foto-Archiv sozusagen...

Ich hoffe das ich nun alle Fragen beantworten konnte...

PS: Ich rede von zweien weil andere Script's auf der page eine andere Datenbank benutzen
selig ist offline   Mit Zitat antworten
Alt 16.02.11, 16:34   #13 (permalink)
 
Registriert seit: 06.06.09
Thunderb0lt Leistung: 8086
Likes: 6
Standard

Gut, da sind wir doch schon mal einen großen Schritt weiter

Für jedes Verzeichnis eine eigene Tabelle anzulegen halte ich dann für keine gute Idee. Erzeuge dir lieber einmalig zwei Tabellen. In die eine speicherst du deine Verzeichnisse zusammen mit einer ID. In die Zweite speicherst du die Dateinamen und die ID des Ornders in dem sie liegen, so dass du anhand dieser ID den Verzeichnisnamen aus der ersten Tabelle auslesen kannst.
Wenn du dann alle Bilder aus einem bestimmten Verzeichnis haben möchtest, holst du dir zuerst dessen ID und liest dann alle Bilder zu dieser ID aus.

Wenn man möchte, kann man in der Tabelle mit den Verzeichnissen auch die Verzeichnisstruktur mit abbilden, indem man eine dritte Spalte einfügt und jeweils die ID des übergeordneten Verzeichnisses dort ablegt.
__________________
A good programmer looks both ways before crossing a one-way street.

Die Politik kann uns nur für so dumm verkaufen, wie wir sind.
Thunderb0lt ist offline   Mit Zitat antworten
Alt 16.02.11, 19:11   #14 (permalink)
Themenstarter
 
Registriert seit: 27.10.09
selig Leistung: Facit NTK
selig eine Nachricht über ICQ schicken
Likes: 0
Standard

Okay herzlichen dank, werde ich nachher gleich mal in angriff nehmen,...

Zwei Fragen hätte ich noch:
1. wie bekomm ich hin das mein script nur bestimmte dateitypen einliest (jpg, gif, png)?

2. Ich würde gerne die Bilder die nachher auf der page angezeigt werden anklicken können, sodas diese dann im großformat erscheinen,... ohne das die seite neugeladen werden muss, und ohne auf eine andere seite weitergeleitet zu werden,... wie funktioniert sowas?
selig ist offline   Mit Zitat antworten
Alt 16.02.11, 19:37   #15 (permalink)
 
Registriert seit: 06.06.09
Thunderb0lt Leistung: 8086
Likes: 6
Standard

Zitat:
Zitat von selig Beitrag anzeigen
1. wie bekomm ich hin das mein script nur bestimmte dateitypen einliest (jpg, gif, png)?
Die einfachste Möglichkeit wäre du überprüfst die Dateiendung. Das lässt sich natürlich relativ leicht manipulieren, denn mich hindert nichts daran diese einfach zu ändern.
Eine weitere Möglichkeit wäre, den MIME-Typ zu ermitteln. Dazu kannst du dir einmal finfo_file() anschauen. Ich habe dunkel im Hinterkopf, dass man sich auch darauf nicht wirklich verlassen konnte, bekomme aber gerade nicht mehr zusammen, warum.

Zitat:
Zitat von selig Beitrag anzeigen
2. Ich würde gerne die Bilder die nachher auf der page angezeigt werden anklicken können, sodas diese dann im großformat erscheinen,... ohne das die seite neugeladen werden muss, und ohne auf eine andere seite weitergeleitet zu werden,... wie funktioniert sowas?
Hier ist wohl AJAX das Stichwort. Es gibt dafür bereits einige recht mächtige Bibliotheken, für die eine Menge Beispiele im Netz existieren und dir etwas Arbeit abnehmen. Ein recht bekannter Kandidat wäre jQuery. Gibt aber noch eine Reihe mehr MooTools, QooXDoo, etc.
Vielleicht reicht es aber auch schon, wenn du dich ein wenig in JavaScript einließt und dir diese spezielle Funktionalität kurz selber schreibst. Ich habe nicht wirklich Erfahrung mit AJAX...
__________________
A good programmer looks both ways before crossing a one-way street.

Die Politik kann uns nur für so dumm verkaufen, wie wir sind.
Thunderb0lt ist offline   Mit Zitat antworten
Antwort

Stichworte
hilfeeee, php, verzeichnisse
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » [php] verzeichnisse auslesen
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



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