Problem mit Zähler & Array] Zählt auch 0-Werte mit

Moritz123

Erfahrenes Mitglied
Hallo!

vorweg: ich beziehe mich in meiner Frage auf einen anderen Thread von mir:
http://www.tutorials.de/tutorials183350.html

Zur Situation:
Ich habe einige Datenbankabfragen hinterneinander die so aussehen:
PHP:
<?php
		  	$abfrage = "SELECT er FROM projekte WHERE user_id = '$_SESSION[user_id]' AND pid = '$_POST[pid]'";
			//echo $ausgabe;
			$ausgabe = mysql_query($abfrage);
			$num = mysql_num_rows($ausgabe);
			if ($num > 0) {while ($row = mysql_fetch_object($ausgabe)){
					$a = $row->er;
					//echo $a;
			}}
			$a = explode("|", $a);
			$i = 0;
			$z = 0;
			for($i=0;$i<count($a);$i++){
				$b = explode(":",$a[$i]);
			?>
          <tr bgcolor="#FFFFFF" class="nav_sub">
            <td width="30%" valign="top"><img src="_images/spacer.gif" width="3" border="0">
                <?=$b[0];?></td>
            <td width="70%" valign="top"><img src="_images/spacer.gif" width="3" border="0">
                <?=$b[1];?>
            %</td>
          </tr>
          <?php 
		  $summe = $summe + $b[1];
		  }		 
		  if($num > 0)
		  $teiler = $teiler + count($a);
		 ?>

Dabei wird jeweils ein anderes Feld der Tabelle abgefragt.
Mit läuft ein Zähler $summe, der die Werte von $b[1] addiert, sowie ein Zähler $teiler, der die Anzahl an ausgebenen $b addiert. Diese Zähler werden am Ende dividiert, um einen Durchschnitt aus den Werten aller Abfragen zu ermitteln.

Nun zum Problem:
Ich habe insgesamt 8 Werte à 100 verteilt auf 9 Abfragen wovon eine Abfrage aber gar keine Daten enthält, da das Feld leer ist. Der Schnitt sollte also logischerweise 100 ergeben. Nun ergibt der berechnete Schnitt aus $summe / $teiler aber 88,88888...

Ich weiß nun nicht mehr weiter...
Eigentlich dürfte $teiler die Abfrage die keinen Wert zurück gibt doch gar nicht mit einbeziehen.Das tut er aber offensichtlich, denn sonst kann ich mir den Schnitt nicht erklären.
 
Wenn Du mit Feld das Feld in der Datenbankmeinst, dann könntest Du an die WHERE-Klausel noch
Code:
AND feld NOT NULL
anfügen.
Wenn das Feld nur leer ist, musst Du halt noch
Code:
AND feld!=''
anfügen.
Im übrigen habe ich das Gefühl, dass Deine Tabelle in keiner Weise der Normalisierung entspricht, da Du ein Feld erstmal mit [phpf]explode[/phpf] bearbeitest.
Das ist ein Indiz für mich, dass die Tabelle nicht mal der ersten Normalform entspricht.

Gruß hpvw
 
Zurück