Problem mit PHP Berechnung

bhalili

Mitglied
Hallo Leute, hab da ein Problem mit meinem Script. Ich hole aus der Datenbank den Wert msp2wert, es ist eine Zahl, diese Zahl brauche ich um Sie in meine Formel einzufügen, nur bekomme ich als Ergebniss eine 0. Vielleicht kann mir jemand helfen. Mein mysql Abfrage sieht so aus:

PHP:
$z3=mysql_query("SELECT mpz3wert FROM mpz3 WHERE mpz3alter like '".$alter."%'"); 
while($ergebnis3=mysql_fetch_array($z3)) 
{ 
 echo "$ergebnis3[mpz3wert]<br>";  // Hier wird der Wert angezeigt
 $mpz3wert = $ergebnis3[mpz3wert]; //Hier wird der Wert weitergegeben
 $betrag3 =$stufe3/5*$mpz3wert; //Hier wird mpz3wert nicht übernommen
 print " Das Ergebnis ist $betrag3"; //Hier ist das Ergebnis 0
}
 
Hi,

bist Du Dir sicher, dass es nicht an der Variablen $stufe3 liegt? Lass beides mal direkt vorher ausgeben.

Und lies mal nach, wie ein String-Index bei einem Array korrekt notiert wird.

LG
 
Hi,
was steht denn in der Variablen $stufe3 drin?
Weil wenn da "0" drin steht oder wenn es die Variable vorher noch garnicht gibt, dann kommt bei deiner Rechnung "0" als Ergebnis raus.

mfg.Fide
 
Zeig uns doch mal was in den Variablen so steht, schreibe dazu folgendes:

PHP:
$z3=mysql_query("SELECT mpz3wert FROM mpz3 WHERE mpz3alter like '".$alter."%'");  
while($ergebnis3=mysql_fetch_array($z3))  
{  
 echo "$ergebnis3[mpz3wert]<br>";  // Hier wird der Wert angezeigt 
 $mpz3wert = $ergebnis3[mpz3wert]; //Hier wird der Wert weitergegeben 
 var_dump($mpz3wert);
 var_dump($stufe3);
 $betrag3 =$stufe3/5*$mpz3wert; //Hier wird mpz3wert nicht übernommen 
 var_dump($betrag3);
 print " Das Ergebnis ist $betrag3"; //Hier ist das Ergebnis 0 
}

Kann können wir dir auch helfen!
 
Hallo, stufe3 ist eine Zahl, hab jetzt die stufe3 als echo angegeben und die wird auch richtig angezeigt.

PHP:
$z3=mysql_query("SELECT mpz3wert FROM mpz3 WHERE mpz3alter like '".$alter."%'");  
while($ergebnis3=mysql_fetch_array($z3))  
{ 
 echo "$ergebnis3[mpz3wert]<br>";        // Wird richtig angezeigt 0,41
 echo "$stufe3<br>";                                   // Wird richtig angezeigt 50
 $mpz3wert = $ergebnis3[mpz3wert];
 echo "$mpz3wert<br>";                            // Wird richtig angezeigt 0,41
 $betrag3 =$stufe3/5*$mpz3wert;
 print " Das Ergebnis ist $betrag3<br>"; // Das Ergebnis ist 0 Hier muss 4,10 als Ergebnis
}
Keine Ahnung, die Werte zeigt er mit echo alle an, aber bei der Formelberechnung stufe3 / 5 * mpz3wert zeigt er Null an.

Hallo Steusi, nach deinem Script steht folgendes:
PHP:
string(4) "0,41" string(2) "50" int(0) Das Ergebnis ist 0
 
Hi,
was steht denn in der Variablen $stufe3 drin?
Weil wenn da "0" drin steht oder wenn es die Variable vorher noch garnicht gibt, dann kommt bei deiner Rechnung "0" als Ergebnis raus.

mfg.Fide

Wenn stufe3 wirklich 0 sein sollte, dann kommt als Ergebnis NIE 0 raus.
Altes Mathematikgesetz, teile NIEMALS durch 0

Ansonsten kann ich bhalili nur zustimmen. Dein Problem müsste sein, dass du aus deiner Datenbank strings holst und mit Strings (oder auch Worten) kann man nicht rechnen. Eine zweite Fehlerquelle auf die du dann stoßen wirst ist, dass 0,41 keine gültige Zahl in PHP ist, die Dezimalstelle wird mit einem . (Punkt) gekennzeichnet.
 
Zuletzt bearbeitet:
Meine Aussage über die Null hat sich auch nur auf den zitierten Beitrag bezogen.

Aber zum Thema, in Stufe3 steht keine Zahl sondern eine Zeichenkette (String), das macht PHP aber nichts aus, denn soweit ich noch von früher weiß erkennt dies PHP und wandelt einen String in eine Zahl um.
Dein Problem ist wie gesagt der PUNKT in der Zahl. Du kannst das mit str_replace() machen oder evtl gibt es noch eine andere Möglichkeit in der Speicherung der Zahl in deiner Datenbank.
Grundsätzlich ist es so, PHP arbeitet mit dem englischen System, d.h. überall wo wir im Deutschen eine Komma in einer Zahl haben, schreibt man im Englischen einen Punkt. Und beim Punkt ist es genau rumgedreht.


edit:
bin grad auf eine einfache Lösung gekommen:
PHP:
// Die Funktion strtr() arbeitet ähnlich wie str_replace
$mpz3wert = strtr($ergebnis3[mpz3wert], ",", ".");
 
Zuletzt bearbeitet:
Hi,

Meine Aussage über die Null hat sich auch nur auf den zitierten Beitrag bezogen.

sie stimmt aber trotzdem nicht. Es wird ja weder durch $stufe3, noch durch $mpz3wert geteilt, sondern nur durch 5. ;)

Das Komma ist tatsächlich das Problem, da PHP beim Versuch, den Wert in eine Zahl umzuwandeln, alles ab dem Komma ignoriert. Also bleibt nur 0 übrig. [phpf]str_replace[/phpf] und [phpf]floatval[/phpf] schaffen Abhilfe.

LG
 
Hallo Leute, ich danke euch allen. Habe den Fehler gefunden, es lag an dem Feld in der Datenbank. Hatte es als varchar, habe es jetzt in decimal (10,2) und alles funktioniert wunderbar. Um die Anzeige mit Komma anzuzeigen habe ich das hier benutzt:
PHP:
<? echo number_format($mbergebnis, 2, ',', '.') ." EUR"; ?>
 
Zurück