Ausgabeproblem Datenbank Array füllen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Was hast du denn bisher probiert? Das wird dir ja wohl irgend eine Fehlermeldung um die Ohren gehauen haben. Und wenn es das naheliegendste gewesen wäre, hättest du den Fehler auch schnell beheben können. Also Zeig mal her …
    [FONT="Helvetica"]twitter.com/unset[/FONT]

    Shitstorm Podcast – Wöchentliches Auskotzen

    Comment


    • #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
      Last edited by Nirus2000; 13-10-2010, 15:48.

      Comment


      • #4
        Aha. Und was ist jetzt genau dein Problem?
        Du hast Daten in einem Array. Diese Daten enthalten Lücken, analog zu array(1, 2, 4).
        Du möchtest einen lückenlose Ausgabe erzeugen. Folglich kannst du nicht über das Array iterieren, sondern muss von min() bis max() einen Zähler laufen lassen, den auch ausgeben und die zugehörigen Daten aus dem Array, so denn welche drin sind.

        Comment


        • #5
          und wie? sorry ich steh gerade mächtig auf dem Schlauch

          Comment


          • #6
            hmm... nicht fragen... ich habs php.net

            Comment


            • #7
              Originally posted by Nirus2000 View Post
              hmm... nicht fragen...
              In Zukunft vor allem bitte nicht an mehreren Stellen gleichzeitig.
              Ausgabeproblem Datenbank Array füllen - php.de
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Comment


              • #8
                Erstmal vorab: Entweder englisch oder deutsch, also month statt monat oder jahr statt year. Das gleiche gilt für die PHP-Variablen ($ausgabe_tmp) …

                In deiner neuen While-Schleife kannst du dann $output_tmp = $row schreiben. Ist kürzer und schneller.

                Bei der Ausgabe vergleichst du den aktuellen mit dem folgenden Eintrag des Arrays.
                PHP Code:
                for ($i 0$i count($output_tmp); $i++) {
                    
                // Ausgabe der Daten aus $output_tmp[$i]
                    // Prüfen auf Lücke
                    
                if (isset($output_tmp[$i 1]) && $output_tmp[$i]['year'] + $output_tmp[$i 1]['year']) {
                        
                // einfache Ausgabe der fehlenden Jahreszahlen
                        
                echo implode(': keine Daten<br />'range($output_tmp[$i]['year'], $output_tmp[$i 1]['year']));
                    } else {
                        
                // nochmal so eine Schleife für die Monate
                    
                }

                Ich würde es mir allerdings gleich von der DB so erzeugen lassen wie ich es brauche.
                Last edited by onemorenerd; 13-10-2010, 17:18.

                Comment


                • #9
                  das funktioniert überhaupt nicht, ich bekomme überhaupt keine Ausgabe
                  Last edited by Nirus2000; 14-10-2010, 14:38.

                  Comment


                  • #10
                    Das ist auch kein fertiger Code sondern soll nur andeuten was ich meine. Du musst schon noch selbst aktiv werden. Lesen, verstehen, anwenden statt copy, paste, beschweren!

                    Comment

                    Working...
                    X