Ankündigung

Einklappen
Keine Ankündigung bisher.

Gültigkeitszeitraum mit php aus MySQL-Tabelle ermitteln

Einklappen

Neue Werbung 2019

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

  • Gültigkeitszeitraum mit php aus MySQL-Tabelle ermitteln

    Hallo Forum!

    Ich muss leider ein wenig ausholen, um die Aufgabenstellung erläutern zu können

    In unserer Sports-Bar hat der Wirt einen Bildschirm angeschafft, der direkt oberhalb des Fernsehers angebracht ist. Auf diesem wird während einer laufendem Bundesliga-Saison dauerhaft (aber immer live) die Blitztabelle der BuLi angezeigt. Basis ist ein RasPi, der lediglich dafür da ist, eine bestimmte Webseite abzurufen und alle 30 sec. zu aktualisieren. Das entsprechend von mir geschriebene Script dazu läuft seit 3 Jahren ohne Probleme.

    Nun gibt es "leider" ein paar (also eigentlich ca. 15) Besucher, die dort in der Sports-Bar regelmäßig ihre hausinterne Darts-Liga spielen. Für diese Jungs habe ich eine kleine, web-basierte Verwaltung programmiert, die ebenfalls eine Live-Tabelle ausspuckt und auf der Webseite des Wirtes publiziert.

    Künftig soll nun aber dieser besagte Bildschirm immer dann, wenn kein Bundesliga-Spiel stattfindet, die Darts-Tabelle anzeigen.

    Meine Vorgaben sind:
    Alle (auch geplante) Bundesliga-Begegnungen sind als Einzel-Datensätze in einer SQL-Tabelle mit ihrem Beginn als TIMESTAMP (also z.B. "2018-05-12 15:30:00" für den letzten Spieltag der vergangenen Saison) hinterlegt.

    Ich bräuchte:
    Basierend auf aktuellem Datum/Zeit ein BOOL. Dieses soll TRUE sein, wenn gerade ein Bundesliga-Spiel stattfindet ... mit einem Vorlauf von 15 min. vor Spielbeginn (also dem TIMESTAMP) und bis zu 135 min. nach dem TIMESTAMP (=Spieldauer + Halbzeitpause + 15 min. Nachlauf ... eventuelle Nachspielzeit ist mir egal).

    Ziel:
    Bei BOOL = FALSE wird die Darts-Tabelle angezeigt, bei BOOL = TRUE wird stattdessen die Bundesliga-Tabelle angezeigt.
    Wie gesagt: die Anzeige-Skripte sind nicht das Problem ... die funktionieren! Es geht nur um "den Switch zwischen den Anzeigen".

    Ich zweifle gerade an meinen bisher (in mühsamer Kleinarbeit) erlangten PHP/MySQL-Kenntnissen, denn ich krieg' das einfach nicht hin

    Danke für Eure Ratschläge,
    Bernd

  • #2
    Hallo Bernd,

    das sollte kein Problem sein, sofern alle Datumsangaben im gleichen Format vorliegen:

    PHP-Code:
        $now date('Y-m-d H:i:s');
        
    $bundesligaStart '2018-07-11 20:30:00';
        
    $bundesligaEnd date('Y-m-d H:i:s'strtotime($bundesligaStart ' +135 minutes')); 

        if ((
    $now >= $bundesligaStart) && ($now <= $bundesligaEnd)) {
          
    $bundesligaAktiv true;
        } else {
          
    $bundesligaAktiv false;  
        } 
    P.S.: Kennst du OpenLigaDB? Dort kannst du die Bundesliga-Partien per Webservice kostenlos abrufen.
    sorry, shift-taste kaputt

    Kommentar


    • #3
      Hallo Meister1900,

      vielen Dank für die schnelle Antwort. Das mit OpenLigaDB ist eine interessante Idee ... schaue ich mir mal genauer an. Vielleicht ist lässt sich da mit deren API künftig noch ein wenig mehr Inhalt für den Zusatzmonitor vom Wirt generieren

      Zum meiner Frage:
      Das Bestimmen des Zeitraums $bundesligaStart und $bundesligaEnd ist nicht mein Problem. Mein Problem ist wie ich nun die SQL-Abfrage gestalte, die prüft, ob für diesen Zeitraum eine Spielbegegnung in der Datenbank existiert.

      Kommentar


      • #4
        Das Problem ist doch vielmehr erstmal Datenbankeinträge zu finden welche in das gefragte Intervall passen. Die Bundesligatabelle wird gezeigt, wenn (mindestens) 1 Eintrag gefunden wird.
        Alle Datenbankeinträge zu holen und per PHP zu prüfen (Ähnlich #2) würde funktionieren, ist aber nicht so optimal. Das wird besser per SQL in der Datenbank realisiert.
        Als Beispiel mal mit MySQL:
        Code:
        SELECT
          timestampstart
        FROM
          table
        WHERE
           timestampstart BETWEEN
            DATE_ADD(CURRENT_TIMESTAMP,INTERVAL -15 MINUTE) AND
            DATE_ADD(CURRENT_TIMESTAMP,INTERVAL +135 MINUTE)
        LIMIT 1
        Edit: Richtig Bernd, hatte deine Antwort noch nicht gelesen.

        Kommentar


        • #5
          Hallo jspit!
          Ja, genau darin liegt der Hund begraben .... und natürlich darin, dass ich mit solchen Datums-Operationen in SQL noch nie gearbeitet habe und daher mit meinem "kleinen Latinum" am Ende bin :-/
          Werde es später direkt mal testen, aber schon beim Lesen des Codes denke ich es ist genau das, was ich suche!

          Herzlichen Dank für die Hilfe!

          Kommentar


          • #6
            Achso, dann hatte mich wohl verwirrt, dass es unter "PHP Einsteiger" und nicht unter "Datenbanken" gepostet ist.
            sorry, shift-taste kaputt

            Kommentar

            Lädt...
            X