Ankündigung

Einklappen
Keine Ankündigung bisher.

Array Statistik ? ? ?

Einklappen

Neue Werbung 2019

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

  • Array Statistik ? ? ?

    N'Abend erst mal ! ! !

    Hab eine Umfrage und die Einträge in der DB sehen wie folgt aus:

    Code:
    kunde_id       frage_id       antwort
    ----------------------------------------
        1              1            gut
        1              3          sehrgut
        2              4         schlecht
    also eine frage kann mit 4 versch. Möglichkeiten beantwortet werden (sehrgut, gut, ausreichend, schlecht)

    Jetzt möchte ich eine Gesamtauswertung haben z.B

    Code:
    frage1 --- 2x --- sehr gut
    frage1 --- 3x --- ausreichend
    frage2 --- 1x --- gut
    usw.

    Also das sortieren bzw. gruppieren klappt insoweit, und ich denke ein mehrdimensionales Array sollte hier der Lösungsansatz sein. Nur wie befülle ich dieses ? Irgendwie blick ich das nich so ganz.

    Gruß
    Malcom

  • #2
    ________________________________
    1-----------1---------gut
    1-----------2------ausreichend
    Hör auf zu malen und benutze endlich Code-Tags! Du bist jetzt seit 3 Jahren hier, da sollte man das langsam mal wissen.

    Kommentar


    • #3
      Und poste bitte überhaupt Code.

      Kommentar


      • #4
        @nikosch

        So i.O ?

        @mermshaus

        Den wenn ich hätte

        PHP-Code:
        $antwort mysql_query("SELECT frage_id, COUNT(*) FROM eintraege GROUP BY frage_id, antwort;");
        while (
        $row mysql_fetch_array($antwort)){
            
        $ausg print_r($row);
            echo 
        $ausg."<br>";

        Malcom

        Kommentar


        • #5
          So i.O ?
          Genau so weit gedacht, wie man es Dir gesagt hat. Wow.

          Kommentar


          • #6
            So in der Art? Ich verstehe das Problem nicht so richtig.

            PHP-Code:
            <?php

            $antwort 
            mysql_query("
                SELECT frage_id, antwort, COUNT(*) AS anzahl
                FROM eintraege
                GROUP BY frage_id, antwort
            "
            );

            while (
            $row mysql_fetch_assoc($antwort)){
                echo 
            $row['frage_id'] . ' - ' $row['antwort'] . ' - ' $row['anzahl'] . "<br>";
            }
            Veraltete mysql-Extension: http://phpforum.de/forum/showthread.php?t=264056

            Kommentar


            • #7
              @nikosch

              Jetz sollts passen

              Erst mal Danke für deine Antwort !

              Ich drück mich denk ich wieder mal missverständlich aus.

              Mein Ergebnis soll dann mal so sein. Soll quasi eine Gesamtauswertung in einer Tabelle werden die, die Ergebnisse aller an der Umfrage teilgenommenen User beinhaltet.

              Also quasi Frage 1 wurde:

              2x mit sehrgut, 0x mit gut, 16x ausreichend und 6x mit schlecht beantwortet

              PHP-Code:
              frage_id       sehrgut       gut     ausreichend      schlecht
              -------------------------------------------------------------
                  
              1              2            0          16            6
                  3              1            2           0            2
                  4              0            0           5            12 
              Im Klartext kann es sein das frage_id 1 z.B noch gar nicht mit gut beantwortet wurde. oder frage_id 4 nicht mit sehrgut oder gut
              Ich habe pro Frage immer 4 Möglichkeiten s.o

              Gruß
              Malcom

              Kommentar


              • #8
                Das kannst du mit einer SQL abfackeln (evtl. mit Sub-Selects).

                Kommentar


                • #9
                  Oder zu Fuß irgendwie so:

                  PHP-Code:
                  $results = array();

                  while (
                  $row mysql_fetch_assoc($antwort)) {
                      if (!
                  array_key_exists($row['frage_id'], $results) {
                          
                  $results[$row['frage_id']] = array(
                              
                  'sehr gut' => 0,
                              
                  'gut' => 0,
                              
                  // ...
                          
                  );
                      }

                      
                  $results[$row['frage_id']][$row['antwort']] = (int) $row['anzahl'];
                  }

                  var_dump($results); 

                  Kommentar


                  • #10
                    Erst mal sorry das ich mich jetzt erst zurückmelde.

                    @mermshaus
                    Also hat so wunderbar geklappt !

                    Nur möcht ich halt auch immer verstehen was ich mache und nicht einfach copy & paste.

                    wenn der Key frage_id nicht im Array $results existiert
                    PHP-Code:
                    while ($row mysql_fetch_assoc($antwort)) {
                        if (!
                    array_key_exists($row['frage_id'], $results) { 
                    Jetzt wird ja hier ein Array im Array ersteltt ? !? !? Versteh ich nich so ganz
                    PHP-Code:
                            $results[$row['frage_id']] = array(
                                
                    'sehr gut' => 0,
                                
                    'gut' => 0,
                                
                    // ...
                            
                    );
                        }

                        
                    $results[$row['frage_id']][$row['antwort']] = (int) $row['anzahl'];
                    }

                    var_dump($results); 
                    Vielleicht kann mir ja das nochmal jemand näher erläutern

                    Gruß und Danke nochmal
                    Malcom

                    Kommentar


                    • #11
                      Hm. Weiß nicht, was ich dazu noch groß erklären kann. Wenn noch kein Eintrag für eine Frage-ID im zu erstellenden Array existiert, wird eben einer angelegt. Die Frage-ID ist ja der Key des äußeren Arrays.

                      Aus Gründen der höheren Schönheit wird dabei jede „Antwort“ mit der Anzahl „0“ initialisiert. Das stellt etwa sicher, dass es zu jeder Frage einen Wert für jede Antwort gibt, auch wenn niemand „sehr gut“ geantwortet hat. (Einträge mit COUNT(*) = 0 tauchen in der Rückgabe der SQL-Query nämlich nicht auf.)

                      Kommentar

                      Lädt...
                      X