Zählen von ausgefüllten Variablen

wolle-

Mitglied
Hallo alle miteinander,

habe folgendes Scenario:

Eine Tabelle, in der Werte aus einer Mysql Datenbank ausgegeben werden.
Am Ende der Tabelle soll der Durchschnitt ausgegeben werden.

Das habe ich so "gelöst":

Code:
 <? $show = $daten[F11]+$daten2[F11]+$daten3[F11]+$daten4[F11]+$daten5[F11]+$daten6[F11]+$daten7[F11]+$daten8[F11]+$daten9[F11]+$daten10[F11]+$daten11[F11]+$daten12[F11]; ?>
      <? echo $show / 12; ?>

Problematik ist, dass die Werte nicht immer ausgefüllt sind. Wie kann ich also anstatt durch 12 zu teilen durch eine Variable teilen, die vorher überprüft, ob in dem Feld eine 0 steht? <- Frage.

Da stocker ich doch etwas.

Vielen Dank schonmal.

Gruß Wolle :-)
 
Es wäre zwar besser zu wissen was du genau für eine Ausgangssituation hast, und wo und wie die Daten herkommen, aber probier mal sowas in der Art:

PHP:
$varCount = 0;
for ($i=1;$i<=12;$i++) {
  $varName = "daten".$i;
  $sum = $sum + $$varName["F11"];
  if ($$varName["F11"] != 0) $varCount++;
}
echo $sum/$varCount;
 
Hi, ich weiss nicht ob ich das ganze hier rein posten kann.

Wird das dann zu groß?

Versuch:

Geht nicht:

Der Text, den du eingegeben hast, besteht aus 80780 Zeichen und ist damit zu lang. Bitte kürze den Text auf die maximale Länge von 30000 Zeichen

Ich möchte am ende mancher Zeilen den Durchschnitt ausgeben!


Habe die Datei angehangen!
 

Anhänge

wow....

also 1. könntest du deinen Code sicherlich von 3260 Zeilen auf 2 Zeilen kürzen Das wäre wohl auch das erste was du machen solltest. Arbeite mehr mit while oder for Schleifen, du hast sehr viele Code-Abschnitte die sich wiederholen, wo sich nur ein paar Variablen unterscheiden.

Desweiteren, wovon möchtest du den Durchschnitt ermitteln?
 
Bin schon froh, dass es so läuft.

Ich würde das nie hinkriegen mit ner while schleife.
Habe schon versucht die einen Zeilen zu verkürzen. Da war mein ganzer code hin :-(
Code:
<? $show = $daten[F11]+$daten2[F11]+$daten3[F11]+$daten4[F11]+$daten5[F11]+$daten6[F11]+$daten7[F11]+$daten8[F11]+$daten9[F11]+$daten10[F11]+$daten11[F11]+$daten12[F11]; ?>
      <? echo $show / 12; ?>

Die ausgelesenen Daten zum Beispiel

Daten[F11]
daten2[F12]

Zahl1 + Zahl2 + Zahl3 = Zahlges / 3

Jedoch ist die Anzahl der ausgefüllten Felder unterschiedlich.

manchmal ist es:

Zahl1 + Zahl2 + Zahl3 + Zahl4 + Zahl5 ...... = Zahlges / 12

12 = Alle Felder.

Wäre ja Falsch, wenn nicht alle mit Werten gefüllt sind :/

Gruß Wolle
 
Es kann auch direkt schon über das MySQL-Query der Durchschnitt ermittelt werden.

PHP:
$query = "SELECT avg(DatenFeld) from tabelle WHERE DatenFeld > 0";
 
Im Query bringt mir ja nix!

Muss mit dem Wert ja auch noch andere Sachen machen. Sprich andere Formulare....

Aber die Methode hier habe ich vorhin ausprobiert:

Code:
    <?
       $varCount = 0;
      for ($i=1;$i<=12;$i++) {
        $varName = "daten".$i;
        $sum = $sum + $$varName["F11"];
        if ($$varName["F11"] != 0) $varCount++;
       }
      echo $sum/$varCount;  ?>

Bekomme da folgende Ausgabe:

Warning: Division by zero in /var/www/content/admin/kdl_show_2.php on line 1826

Dies wäre ja dann diese Zeile:

Code:
echo $sum/$varCount;

Hat er ein Problem damit, wenn der Wert 0 ist?

Gruß Wolle ;-)
 
Meines Wissens nach ist es immer noch üblich, nicht durch 0 zu dividieren ... vielleicht hatt sich da auch schon was geändert :rolleyes:
 
Das ist wohl richtig, eine Division durch 0 ist Mathematisch glaube ich nicht möglich! ;)

Bau sonst einfach noch eine Abfrage ein, die das abfängt... also

PHP:
if ($varCount > 0) echo $sum/$varCount;
else echo "0";
 
Zurück