Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Verzeichnis einlesen und Datei suchen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Verzeichnis einlesen und Datei suchen

    Hallo Leute,
    wie kann ich ein Verzeichnis nach einem bestimmten Dateinamen durchsuchen
    lassen?
    Das Verzeichnis ist auf einem Server und der Dateiname kommt aus einer
    MySQL-Datenbank.

    Folgender Hintergrund:
    Ich bin Ausbilder und arbeite viel mit elektronischen Materialien. Meine
    Kollegen haben auch etliche Dokumente, Grafiken und Folien.
    Nun habe ich eine Seite (htaccess-Schutz) gebastelt, wo jeder Dozent
    nach Eingabe seines Namens auch eine Datei hochladen kann.
    Nach dem Upload wandert der Dozentenname und der Dateiname in eine
    MySQL-Datenbank.
    Eine Downloadseite liest dann die MySQL-Datenbank aus und zeigt an,
    welche Dozent welche Daten hochgeladen hat. Hinter jedem Dateinamen
    ist dann ein Download-Link.
    Bis hier keine große Sache und funktioniert einwandfrei.

    Was aber ist, wenn ein Dozent möchte, dass Daten gelöscht werden?
    Als Admin würde ich die Datei von Hand auf dem Server löschen.
    Aber in der DB steht der Eintrag dann natürlich immer noch.

    Nun kam ich auf folgende Idee:
    Bevor die Download-Seite generiert wird, muss jeder Eintrag bezüglich des
    Dateinamens auf Vorhandensein geprüft werden. Steht in der DB z.B. der
    Dateiname 'ssl.ppt' und ist diese Datei auf dem Server gar nicht vorhanden,
    dann darf dieser Eintrag nicht angezeigt werden. Zudem muss er dann
    natürlich auch gelöscht werden.
    Das ist aber keine Schwierigkeit.

    Ich weiss nur nicht, wie ich einen Dateinamen aus der DB mit den Dateien
    im Serververzeichnis vergleiche.
    Wie lese ich ein Verzeichnis ein?

    THX
    Dickus

  • #2
    Das würde ich ganz anders anfassen. Wenn ein Dozent eine Datei gelöscht haben will. Dann schreibe doch ein kleines Skript dass dir diese Arbeit abnimmt. Entweder darf der Dozent selbst die Datei löschen oder du machst es eben.

    Das Skript löscht den Eintrag in der Datenbank UND löscht zusätzlich die Datei auf dem Server. Das geht alles recht einfach und sollte doch dein Problem beheben wenn ich dich richtig verstanden habe.

    Kommentar


    • #3
      [MAN]glob[/MAN]
      [COLOR="#F5F5FF"]--[/COLOR]
      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
      [COLOR="#F5F5FF"]
      --[/COLOR]

      Kommentar


      • #4
        Hi Flor1an,
        das setzt dann aber schon eine Dozenten-Liste voraus.
        Ich wollte eigentlich keine 'Benutzer-Konten' anlegen.
        Dass sich jeder mit Namen und Passwort einloggt, ist
        (man glaubt es kaum) für einige Kollegen schon zu viel.


        Mit so einem System wäre das Problem in der Tat, so wie Du schreibst,
        aus der Welt geschaffen.

        Der Hinweis von nikosch77-new scheint aber auch nicht ohne zu sein.
        Werde mir das gleich mal reinziehen.

        Vielen Dank Euch Beiden
        Dickus

        Kommentar


        • #5
          Und wenn du das Skript nur für dich zugänglich machst? Das geht ja ganz einfach mit ner .htaccess Datei. Dann würdest du auch nicht immer extra die Datei vom Server löschen müssen.

          Kommentar


          • #6
            Moinsen,
            ich glaub' das hat sich gerade erledigt.
            Die Funktion glob() macht genau das, was ich gesucht habe.
            Das ist echt ziemlich abgefahren. Kommt davon, wenn man zwar mit
            PHP und MySQL aber so gut wie nie mit Dateien unter PHP arbeitet. *g*

            Dickus

            Kommentar


            • #7
              Zitat von Dickus Beitrag anzeigen
              Ich weiss nur nicht, wie ich einen Dateinamen aus der DB mit den Dateien
              im Serververzeichnis vergleiche.
              Wie lese ich ein Verzeichnis ein?
              Warum eigentlich, du kannst doch mit file_exists pruefen ob die Datei ueberhaupt existiert, oder nimmst du das Verzeichnis als Grundlage und schaust ob die DB konsistent ist?

              Ich markier den Thread mal als markiert.
              "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

              Kommentar


              • #8
                Hi Chriz,
                genau so ist es. Ich prüfe die Konsistenz der DB anhand der verfügbaren
                Dateien aus dem Serververzeichnis.

                Habe es aber gestern mit der glob() Funktion hinbekommen.

                Falls eine Datei gelöscht wurde und dann die Download-Übersicht
                aufgerufen wird, prüft das Skript vor der Ausgabe, ob der jeweilige
                Dateiname in der Datenbank auch wirklich auf dem Server existiert.
                Sollte die Datei nicht vorhanden sein, wird die gelöschte Datei nicht
                nur nicht ausgegeben, sondern der Eintrag in der Datenbank über eine
                ID auch gelöscht.

                Vielen Dank
                Dickus

                Kommentar


                • #9
                  Verstehe ich nicht wieso du das so rum machst. Eigentlich gehört es sich anders rum. Das du von vorne rein checkst dass alles konsistent bleibt. Warum umständlich eine Datei per FTP löschen, dann das PHP Skript im live Betrieb die Konsistenz zur Datenbank wiederherstellen??? Sinnvoller wäre es direkt ein Skript zu benutzen dass die die Datei + den DB Eintrag löschst. Somit hast du nie Probleme mit inkonsistenten Daten. Und auslesen würde ich die Dateien anhand der Datenbank. Somit hast du keinen einzigen Filezugriff beim generieren der Liste.

                  Angenommen du hast da ein paar hundert Dateien in der Liste, dann müsstest du bei jedem Aufruf der Liste alle Dateien prüfen ob sie in der Datenbank existieren ... was glaubst du wie viel Performance das kostet so viele Filezugriffe zu machen??

                  Kommentar


                  • #10
                    Ich markier den Thread mal als markiert.
                    Ähm okeeee....

                    Kommentar


                    • #11
                      Hi Flor1an,
                      ich mache das so, weil ich nicht erst noch ein weiteres Skript
                      erstellen wollte, das mir die Dateien löscht.
                      Dort müsste ich, wie Du ja auch schon angedacht hast, einen
                      htaccess-Schutz einrichten. Auf dem Server treibe ich mich
                      eh öfter herum, so dass das Löschen der Dateien direkt auf dem
                      Server nicht so der Aufwand ist.

                      Dickus

                      Kommentar

                      Lädt...
                      X