Ankündigung

Einklappen
Keine Ankündigung bisher.

Ausgabeproblem Datenbank Array füllen

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ausgabeproblem Datenbank Array füllen

    Hallo,

    folgendes Problem:

    PHP-Code:
    $tmp1_monat = array();
    $tmp2_monat = array();

    $sql->db_Select_gen("
    SELECT
    YEAR( Tabelle1.datum ) AS year,
    MONTH( Tabelle1.datum ) AS monat,
    count( * ) AS count
    FROM Tabelle1
    WHERE Tabelle1.id =664
    GROUP BY monat, year
    ORDER BY year DESC
    "
    );
    while (
    $row $sql->db_Fetch(MYSQL_ASSOC))
        {
            
    $tmp1_monat[$row[monat]] = $row[monat];
            
    $tmp1_monat[$row[monat]] = $row[count];
         }
    for(
    $q=0;$q<=12;$q++)
         {
            if(!isset(
    $tmp1_monat[$q])) { $tmp1_monat[$q] = 0; }
            
    $tmp2_monat[] = (int)$tmp1_monat[$q];
          } 
    So, die DB-Abfrage gibt mir mein sortiertes nach Monaten wieder und packt Sie in ein Array, welches an ein anderes Script per Session übergeben wird.
    Nun möchte ich aber noch das Jahr berücksichtigt haben und ich finde keine Lösung.

    Das Ergebniss sollte folgende Ausgabe haben.
    $ausgabe[jahr][monat][count]

  • #2
    Dann schreib's doch so ins Array, wie gewünscht.
    PHP-Code:
    $ausgabe = array();

    while(
    $row $sql->db_Fetch(MYSQL_ASSOC))
    {
        
    $ausgabe[$row['year']][$row['monat']] = $row['count'];

    Kommentar


    • #3
      ich hab erstmal die while-Schleife neu geschrieben. Die war ja absolut müll... jetzt habe ich mein 3-Dimensionales Array

      Ergebniss

      PHP-Code:
      while ($row $sql->db_Fetch(MYSQL_ASSOC))
          {
              
      $ausgabe_tmp[] = array('count' => (int)$row[count],
                                       
      'monat' => (int)$row[monat],
                                       
      'year' => (int)$row[year]
                                              );
          } 
      die For-Schleife stimmt nun nicht mehr
      ... jetzt fehlen mir ja bei der Ausgabe des Array's die Monate wo kein Eintrag vorhanden ist, bzw. das selbe bei Jahr.
      es sollte ein Lückenloser fortlauf von Monaten und Datum geben und wenn der Eintrag eben nicht vorhanden ist, dann ist count = 0.
      Beispiel:

      count | monat | year
      --------------------
      156 | 02| 2010
      188| 03| 2011
      18| 03|2015

      Kommentar


      • #4
        Du musst eins trennen: Daten und Ausgabe. In deinen Daten ist es nicht zwingend erforderlich, dass ein 0-Count vorkommt. Woher auch, wenn nicht künstlich hinzugefügt. Wenn nun deine Anforderung ist, auch "leere" Monate anzuzeigen, dann musst du dies entsprechend prüfen.

        Du musst nun einen Startzeitpunkt festlegen oder anhand deiner Daten bestimmen. Mittels diesem durchläufst du in einer äußeren Schleife die Jahre bis jetzt (siehe Funktion date("Y")), in einer inneren Schleife die Monate. Beachte, dass wenn du im Jahr 2009, Monat August beginnen möchtest, musst du diese Prüfung in der innersten Schleife vornehmen. Da du das Jahr und den Monat ja über die Schleifenzähler definierst, ist dies ja nicht schwierig (if ($y == 2009 && $m < continue). Wenn alles in Ordnung ist, kannst du prüfen, ob in $ausgabe_tmp Daten zu diesem Monat vorliegen, wenn ja zeig sie an, wenn nein kannst du von einem Count=0 ausgehen und entsprechend reagieren. Hierbei hilft dir isset() bzw. array_key_exists().
        "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

        Kommentar


        • #5
          okay, das ist klar... dazu müsste ich mit min() und max() den Anfangs und Endwert (Jahr) rausbekommen. Ich weiß nur nicht wie...

          Kommentar


          • #6
            ahh.. aua... das tut weh... ich habs...

            Kommentar


            • #7
              Crossposting http://www.php-resource.de/forum/php...y-fuellen.html
              Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
              [URL]http://www.lit-web.de[/URL]

              Kommentar


              • #8
                Danke!

                Bitte beachten: http://www.php.de/php-einsteiger/ann..._Multipostings

                [MOD: Thread geschlossen]
                [URL]http://hallophp.de[/URL]

                Kommentar

                Lädt...
                X