Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Gelesene Dateien kennzeichnen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Gelesene Dateien kennzeichnen

    Liebe Experten im Forum!
    Als kleiner privater Reitstallbetreiber stehe ich vor folgendem Problem: Jedes unserer Mitglieder kann sich auf unserer Homepage einlogen und persönliche Dokumente aus "seinem" Ordner abrufen. (funkt -> Dateien werden zum anklicken aufgelistet) Jetzt möchte ich die Dokumente (rot) kennzeichnen, die noch nicht gelesen wurden und nach dem Lesen zurücksetzen. Gibt es da einfache Funktionen, oder muss ich für jedes Dokument einen timestamp fabrizieren. Und wenn, wie?
    Danke für Eure Hilfe im Voraus,
    Sigi


  • #2
    Nicht unbedingt über einen timestamp, in der Datenbank irgendwie kennzeichnen. Oder eine Datei im Verzeichnis anlegen, je nachdem wie du das angehen möchtest.
    Relax, you're doing fine.
    RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

    Kommentar


    • #3
      Wenn die Dokumente als Link auf der Seite stehen, hat PHP keine Möglichkeit einen Abruf des Dokumentes zu erkennen ( fileatime eignet sich in vielen Fällen nicht dafür). Du musst ein Script zwischenschalten, welches den Abruf geeignet registriert und dann das Dokument ausliefert.
      PHP-Klassen auf github

      Kommentar


      • #4
        Danke für Deine Anregung! Ich habe mein Problem aber nicht ausführlich genug geschildert: Die Dokumente, die einem User angezeigt werden, stammen nicht aus einer Datenbank, sondern aus einem personalisierten Ordner. Von diesem Ordner werden sie nach Datum sortiert (umgekehrt) ausgelesen und zum Anklicken bereitgestellt. Liest ein User nun ein solches Dokument, müsste bei seinem nächsten Login dieses Dokument als gelesen markiert sein.
        Danke im Voraus, Sigi

        Kommentar


        • #5
          Das ändert nix daran was VPh und jspit geschreiben haben.
          1. musst du feststellen das der User ein Dokument abgerufen hat
          2. musst du das irgendwo Speichern

          Alternativ kannst du auch eine einfache Lösung mit CSS oder Javascript versuchen. Also a:visteted, ist zwar dann nur auf den Rechner gültig und das auch nur solange die History nicht gelöscht wird, aber das wäre nur ein paar Zeilen CSS und/oder Javascript.

          Kommentar


          • #6
            Mit fileatime war mein erster Gedanke; aber alle stat - Versuche schlagen fehl oder liefern mir nur Jänner 1970. Werde mich wohl oder übel mit einem Script befassen müssen; trotzdem danke!

            Kommentar


            • #7
              Hi
              Ich weiß jetzt grad net, ob des mit action im Link evtl geht, das Du den Usernamen oder UserID mit dem Dateinamen in eine Tabelle einschreiben lässt. Bei laden des Verzeichnisses fragst Du aus dieser Tabelle ab, welche Dateien der User gelesen hat und lässt sie dann in rot oder anderen Farben darstellen. So ist jetzt mal meine Denkweise. Kann allerdings zu einer ziemlich großen Tabellen werden.

              Kommentar


              • #8
                Danke für die Postings! Speziell @jspit! Mit fileatime() lässt sich schon etwas anfangen; beim Zugriff auf die Datei setze ich mit touch() die aktuelle Systemzeit. Damit ist das Problem gelöst! Danke, Sigi

                Kommentar


                • #9
                  Das ist dann aber mitgliederübergreifend. Sprich wenn du dich einloggst und die Datei liest, wird sie bei mir auch als gelesen markiert.

                  Kommentar


                  • #10
                    Das sinnvollste ist immer noch die Datenbank oder alternativ eine Datei.

                    Du sagst, Du hast für jeden Benutzer ein personalisierten Ordner, wo die jeweiligen Dateien drin sind, die er laden/lesen kann?!
                    Dann erstell einfach im selben Verzeichnis eine Datei, in der alle gelesenen Zeilen orientiert drin stehen.
                    Beim Aufruf mußt Du dann nur einmal schauen, ob die aktuelle Datei drin steht oder nicht.
                    PHP-Code:
                    $aReadDocuments file'gelesene-dateien.txt'FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES );

                    // ... wie auch immer Du die Ausgabe machst, muß Du das in etwa so anpassen:
                    $sStatus in_arraybasename($current_file), $aReadDocuments )? 'read''unread';
                    echo 
                    '<a href="" target="_blank" class="' $sStatus '">Dokumentenname</a>'
                    Der Rest ist dann reines CSS...

                    Wobei DB natürlich immer noch die sinnvollste Umsetzung wäre, meiner Meinung nach...
                    Competence-Center -> Enjoy the Informatrix
                    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                    Kommentar


                    • #11
                      logfiles auswerten?

                      Kommentar


                      • #12
                        Zitat von horseman Beitrag anzeigen
                        Mit fileatime() lässt sich schon etwas anfangen; beim Zugriff auf die Datei setze ich mit touch() die aktuelle Systemzeit. Damit ist das Problem gelöst!
                        Und standardmäßig setzt du die atime auf ein Datum in der Zukunft? Oder inwieweit kann das auf die Weise eine Lösung sein?

                        Kommentar


                        • #13
                          Danke für die reichlichen Anregungen! Über die DB ist sicher die eleganteste und sinnvollste Variante; da aber verschiedene Dokumente sehr einfach in den personalisierten Ordner zu stellen sind, ohne über die DB gehen zu müssen, habe ich meine Lösung über touch() bevorzugt. Funktioniert recht gut. Markiere damit als "erledigt" und bedanke mich! Sigi [horseman]

                          Kommentar


                          • #14
                            Zur Ergänzung @mermshaus: Wenn Dateien auf den Server geladen werden bleibt auch bei jedem Zugriff atime auf 01.01.1970 (warum entzieht sich meiner Kenntnis!), damit reicht der Unterschied von 1970 zu einem beliebigen Datum.

                            Kommentar


                            • #15
                              Angenommen, Du hast 10 User, die jeweils 5 Dokumente in Ihren personalisierten Ordnern haben.
                              Darf man davon ausgehen, daß es Dokumente gibt, die für jeden User inhaltlich gleich sind?
                              Dann hast Du 10 Ordner, in denen Du diese Datei jeweils lagerst.
                              Ich kenne Deine Dokumente nicht, aber ich halte das für Humbug!

                              1. Ein Verzeichnis mit allen Dokumenten
                              2. Eine klare Regelung, wer welche Datei lesen darf ( Datenbank )
                              3. Speichern des "Gelesen"-Kennzeichens pro Dokument zu Usern ( Datenbank )

                              Wenn Du wächst ( ich weiß nicht wie gut Dein Reitstall läuft ), hast Du da mehr von, als das was Du jetzt gerade treibst...
                              Competence-Center -> Enjoy the Informatrix
                              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                              Kommentar

                              Lädt...
                              X