Ausgabeproblem Datenbank Array füllen

Einklappen
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
    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

    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
      Zuletzt geändert von Nirus2000; 13.10.2010, 16:48.

      Kommentar


      • #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.

        Kommentar


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

          Kommentar


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

            Kommentar


            • #7
              Zitat von Nirus2000 Beitrag anzeigen
              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.

              Kommentar


              • #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.
                Zuletzt geändert von onemorenerd; 13.10.2010, 18:18.

                Kommentar


                • #9
                  das funktioniert überhaupt nicht, ich bekomme überhaupt keine Ausgabe
                  Zuletzt geändert von Nirus2000; 14.10.2010, 15:38.

                  Kommentar


                  • #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!

                    Kommentar

                    Lädt...
                    X