Einträge nach und nach einblenden - wechsel nach x Stunden - Wie?

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

  • Einträge nach und nach einblenden - wechsel nach x Stunden - Wie?

    Hallo zusammen!

    Ich möchte mir ein kleines PHP-Tool basteln bei dem nach und nach die Einträge aus einer MySQL-Datenbank ausgelesen und angezeigt werden.
    Es soll dabei keine Liste der Einträge gezeigt werden, sondern jeder Eintrag soll einzeln gezeigt werden, nach x Stunden soll dann der nächste Eintrag gezeigt werden.

    Sagen wir als Beispiel 10 Einträge mit einem wechsel nach 4 Stunden.
    Wenn nun alle Einträge angezeigt werden, wenn also 40 Stunden vergangen sind, soll wieder der erste Eintrag gezeigt werden.

    Hat vielleicht einer von Euch einen Tip, oder einen Code ;-) für mich ? Irgendwie stehe ich nämlich auf dem Schlauch!

  • #2
    machst du cronjob...

    php selbst ist nur "one shot" code...

    Kommentar


    • #3
      Original geschrieben von ankh
      machst du cronjob...
      nö, braucht er m.E. nicht.

      wenn ich das richtig verstanden habe, will er nur so etwas analoges wie eine tageszeitabhängige begrüßung o.ä. realisieren.

      es braucht also lediglich eine formel, um x elemente gleichmäßig über einen zeitraum von y stunden zu verteilen.

      da würde ich vermutlich einfach den timestamp modulo durch (anzahl sekunden in y stunden) teilen - und dann schauen, in welchem "interval" der divisionsrest liegt.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Danke für den Tip, aber im Grunde sollte es ohne Cronjob realisiert werden!
        Auch mit Cronjob hätte ich noch das Problem der Abfrage der Einträge, und der Auswahl des zu zeigenden Eintrags.

        Ich glaube ich denke einfach viel zu kompliziert!

        Kommentar


        • #5
          Hi,


          nimm ein neues Feld DateTime in deine Datenbank mit auf - "firstshown" oder so. Prüf dann einfach bei jedem Aufruf, oder das Ding schon älter als vier stunden ist.

          SELECT * FROM tab WHERE (unix_timestamp(firstshown)+(4*3600)) < now() ORDER BY firstshown DESC LIMIT 0,1

          Wenn dann hier 0 results sind:

          SELECT * FROM tab ORDER BY firstshown LIMIT 0,1

          um den ältesten eintrag zu finden.
          danach dann direkt

          UPDATE tab SET firstshown = now() WHERE id=<deine id>

          So irgendwie.

          Kommentar


          • #6
            Original geschrieben von wahsaga
            nö, braucht er m.E. nicht.

            wenn ich das richtig verstanden habe, will er nur so etwas analoges wie eine tageszeitabhängige begrüßung o.ä. realisieren.

            es braucht also lediglich eine formel, um x elemente gleichmäßig über einen zeitraum von y stunden zu verteilen.

            da würde ich vermutlich einfach den timestamp modulo durch (anzahl sekunden in y stunden) teilen - und dann schauen, in welchem "interval" der divisionsrest liegt.
            sowas in die Richtung, nur das meine "Tage" mehr als 24 Stunden haben ;-)
            Wenn es nach der Zeit gehen würde, wäre es kein Problem, aber bei mehr als 24 Stunden komme ich ins stocken :-(

            Kommentar


            • #7
              Original geschrieben von prego
              [B]nimm ein neues Feld DateTime in deine Datenbank mit auf - "firstshown" oder so. Prüf dann einfach bei jedem Aufruf, oder das Ding schon älter als vier stunden ist.
              Nunja, darauf könnte ich irgendwie aufbauen, aber wenn ich nun für jeden Eintrag die Laufzeit angeben möchte?
              mal 3 Stunden, mal 4 Stunden, mal 5 Stunden....
              Dann sieht es wieder anders aus!

              Ausserdem müsste ich doch auch die Erstellungs-Zeit speichern, oder nicht?! Irgenwie muss das Programm doch wissen welcher Eintrag als erstes eingeblendet werden soll!
              ...oder kann man da vielleicht noch (einfach) eine Rehenfolge festlegen?

              Kommentar


              • #8
                nimm irgendwas (DB, Text-Datei, ...) um 2 Einträge zu speichern:

                - Datensatz-ID: Nummer
                - angezeigt: DateTime-Wert

                bei jedem Request prüfst du, ob 4 Stunden schon vergangen ist, wenn ja, dann aktuelle Zeit und neues DS-ID rein schreiben und natürlich den DS auch anzeigen. Das war's.

                Kommentar


                • #9
                  Original geschrieben von teriax
                  Nunja, darauf könnte ich irgendwie aufbauen, aber wenn ich nun für jeden Eintrag die Laufzeit angeben möchte?
                  mal 3 Stunden, mal 4 Stunden, mal 5 Stunden....
                  Dann sieht es wieder anders aus!
                  Diese Info mußt du am DS selbst (also in der DB) festlegen
                  Ausserdem müsste ich doch auch die Erstellungs-Zeit speichern, oder nicht?! Irgenwie muss das Programm doch wissen welcher Eintrag als erstes eingeblendet werden soll!
                  ...oder kann man da vielleicht noch (einfach) eine Rehenfolge festlegen?
                  die Sortierung kannst du z.B. mit order by ... in der Abfrage gestalten.

                  Kommentar


                  • #10
                    Original geschrieben von teriax
                    sowas in die Richtung, nur das meine "Tage" mehr als 24 Stunden haben ;-)
                    Wenn es nach der Zeit gehen würde, wäre es kein Problem, aber bei mehr als 24 Stunden komme ich ins stocken :-(
                    was hat der unix timestamp mit "tagen" zu tun?
                    gar nichts.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Original geschrieben von asp2php
                      nimm irgendwas (DB, Text-Datei, ...) um 2 Einträge zu speichern:

                      - Datensatz-ID: Nummer
                      - angezeigt: DateTime-Wert

                      bei jedem Request prüfst du, ob 4 Stunden schon vergangen ist, wenn ja, dann aktuelle Zeit und neues DS-ID rein schreiben und natürlich den DS auch anzeigen. Das war's.
                      na Klar!

                      Einfach Textdatei "dazwischen" schieben, der Rest ergibt sich ja fast von selbst wenn das Erstellungsdatum mit in der DB gespeichert ist!

                      Thx!

                      PS: Irgendwie fehlt mir der Smilie der seinen Kopf gegen die Wand schlägt hier im Forum ;-)

                      Kommentar


                      • #12
                        Original geschrieben von wahsaga
                        was hat der unix timestamp mit "tagen" zu tun?
                        gar nichts.
                        Hast ja recht... Hatte mich irgendwie verlesen...
                        jetzt ergibts einen Sinn ;-)

                        Kommentar

                        Lädt...
                        X