Ankündigung

Einklappen
Keine Ankündigung bisher.

Sql Daten der letzten 3 Wochen erhalten [Wöchentlich]

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

  • #31
    Das sieht schonmal besser aus, schein aber noch nicht ganz korrekt zu sein. Ich habe mal kurz die SQL in der Datenbank abgefragt, und dort sieht das ergbenis so aus:

    Screenshot-2021-02-08-31-214-144-107-localhost-nexus-testing-visits-php-My-Admin-4-9-5deb2.png

    Dort fehlen nur die Tage 05. und 07. Das hat das System ja auch gut erkannt, nur leider gibt es dann 2 mal 0 in den array aus. Dazu scheint der Array nicht richtig geteilt zu werden.
    Code:
    var nrVisitors_1 = ["67","126","114","134","180","66","115"];
    var nrVisitors_2 = ["95","108","154","131","145","103","152","157","20 8","204","75","0","3","0"];
    var nrVisitors_3 = ["157","208","204","75","0","3","0","0","5"];
    
    var days = ["Tue","Wed","Thu","Fri","Sat","Sun","Mon"];
    .
    Hier der Abschnitt der den Array teilt und ans Javascript übergibt:
    PHP-Code:
    var_dump($visits);
    var_dump($days);
    var_dump(count($visits));

    $visits_1 = [];
    $visits_2 = [];
    $visits_3 = [];

    $visits_1 array_slice($visits07);
    $visits_2 array_slice($visits714);
    $visits_3 array_slice($visits1421);
    $days array_slice($days07);

    var_dump($visits_1);echo'<br/>';
    var_dump($visits_2);echo'<br/>';
    var_dump($visits_3); 
    HTML-Code:
    <script type="text/javascript">
    var nrVisitors_1 = <?php echo json_encode($visits_1); ?>;
    var nrVisitors_2 = <?php echo json_encode($visits_2); ?>;
    var nrVisitors_3 = <?php echo json_encode($visits_3); ?>;
    
    var days = <?php echo json_encode($days); ?>;
    </script>

    Kommentar


    • #32
      Stimmt, das passt noch nicht richtig. Versuche dies, sollte besser funktionieren:
      PHP-Code:
      $sql "SELECT YEAR(visit_date) AS 'YEAR', MONTH(visit_date) AS 'MONTH', DAY(visit_date) AS 'DAY', COUNT(1) AS visits FROM `visits` WHERE visit_date > DATE_SUB(NOW(), INTERVAL 21 DAY) GROUP BY MONTH(visit_date), DAY(visit_date)";
      $result $pdo->query($sql);
      // Referenzdatum fuer heute vor einer Woche bereitstellen
      // aktuelles Datum ermitteln und Uhrzeit entfernen
      $refDate = new DateTime();
      $stripped $refDate->format('Y-m-d');
      $refDate = new DateTime($stripped);
      // 3 Wochen subtrahieren
      $refDate->modify('-3 week');
      $visits = [];
      $days = [];
      foreach (
      $result as $row) {
          
      // und im selben Format wie das Datum aus der DB bereit stellen
          
      $refDateStr $refDate->format('Y-n-j');
          
      // Datum aus der DB bereit stellen
          
      $currDateStr $row['YEAR'] . '-' $row['MONTH'] . '-' $row['DAY'];
          echo 
      $refDateStr ' ' $currDateStr ' ' $row['visits'] . '<br>';
          
      // Sind beide unterschiedlich, liegt ein Tag oder mehrere
          // ohne Besuche vor
          // wir muessen diese mit 0 Besuchen auffuellen
          
      if ($refDateStr != $currDateStr) {
              
      // DateTime-Objekt fuer die Zeit aus der DB bereit stellen
              
      $currDate = new DateTime($currDateStr);
              
      // und die Differenz zum Referenzdatum ermitteln
              
      $diff $currDate->diff($refDate);
              
      $diffDays $diff->format('%a');
              
      // fuer jeden fehlenden Tag einen Datensatz mit 0 Besuchen ergaenzen
              
      for ($i 0$i 30 && $diffDays 0$i++, $diffDays--) {
                  echo 
      'diff=' $diffDays '<br>';
                  
      $visits[] = 0;
                  
      $days[] = $refDate->format('D');
                  
      $refDate->modify('+1 day');
              }
          }
          
      // Referenzdatum um 1 Tag erhoehen
          
      $refDate->modify('+1 day');
          
      $days[] = $refDate->format('D'); // <---
          
      $visits[] = $row['visits'];

      Ich erwarte, dass das Aufsplitten besser funktionieren wird, wenn die früheren Fehler behoben sind.

      Kommentar


      • #33
        Es kommt der Sache schon näher, das aufteilen vom Array klappt aber immernoch nicht so ganz.

        Ich habe jetzt mal die Reihenfolge der Aufteilung angepasst, damit die schonmal richtig in dem Diagram angezeigt werden:
        PHP-Code:
        $visits_2 array_slice($visits07);
        $visits_3 array_slice($visits714);
        $visits_1 array_slice($visits1421);
        $days array_slice($days07); 
        Nun bekomme ich die folgende Ausgabe, immerhin ohne 2. 0
        Code:
        var nrVisitors_1 = ["157","208","204","75",0,"3",0,"5"];
        var nrVisitors_2 = ["62","126","114","134","180","66","115"];
        var nrVisitors_3 = ["95","108","154","131","145","103","152","157","20 8","204","75",0,"3",0];
        
        var days = ["Tue","Wed","Thu","Fri","Sat","Sun","Mon"];

        Kommentar


        • #34
          Wenn ich mir die Doku von array_slice ansehe, wird der 3. Parameter als length angegeben, d. h. das Slicing müsste doch so aussehen:
          PHP-Code:
          $visits_2 array_slice($visits07);
          $visits_3 array_slice($visits77);
          $visits_1 array_slice($visits147); 
          Damit bekomme ich diese Ausgabe:
          visits.png
          Das müsste doch eigentlich das sein, was Du brauchst?

          Kommentar


          • #35
            Perfekt, jetzt habe ich nur noch eine Verschiebung von 1nem tag bei den gesamten Daten, wenn ich die noch weg bekomme funktioneirt das ganze.

            Kommentar

            homepage-forum.de - Hilfe für Webmaster! Statistiken

            Einklappen

            Themen: 56.805   Beiträge: 430.091   Mitglieder: 28.558   Aktive Mitglieder: 55
            Willkommen an unser neuestes Mitglied, Koller-Consulting.

            Online-Benutzer

            Einklappen

            249 Benutzer sind jetzt online. Registrierte Benutzer: 2, Gäste: 247.

            Mit 3.502 Benutzern waren am 23.01.2020 um 18:20 die meisten Benutzer gleichzeitig online.

            Die neuesten Themen

            Einklappen

            Die neuesten Beiträge

            Einklappen

            Lädt...
            X