Fehler bei SetValueFloat (Wrong parameter type)

Hallo,

bin völlig ratlos, warum hier ein Fehler auftritt, da ich eine Float-Variable ansprechen möchte mittels: setvaluefloat

print_r($row[21]);

//Aussentemperatur
setvaluefloat($ObjektID_Aussentemperatur, $row[21]);

Ausgabe:

45.4
Warning: Wrong parameter type for setvaluefloat() in D:\IPS\IP-Symcon\scripts\heizung_31028.ips.php on line 66

Wenn ich diesen Befehl verwende ohne $row


setvaluefloat($ObjektID_Aussentemperatur, 45.4);

funktioniert es.

Sehe da keinerlei Fehler … MMMMMM

Liegt der Wert evtl garnicht als Float vor?
Dann probiere mal…

setvaluefloat($ObjektID_Aussentemperatur, floatval($row[21]));

Danke das war es :wink: Anfängerfehler wahrscheinlich.

Wie kann ich denn herausfinden, ob es ein Float-Wert ist oder nicht? Würde mich mal am Rande interessieren…

Das Datenbankfeld ist float…

Grüße

Da du vermutlich einen String aus irgendeinem Gerät einliest den mit explode zerlegst, bleiben die zerlegten Stücke immer noch Strings und müssen entsprechenden umgewandelt werden, um damit weiter arbeiten zu können.

Eigentlich nicht. Ich hole den wert direkt aus der datenbank… ???

Das hatte ich bevor ich antwortete nicht gelesen… Hast du noch editiert, während ich tippte :wink:

Wie (Script) und aus welcher Datenbank holst du denn den Wert?

aus meiner eigenen mysql DB


mysql_select_db($datenbank_name, $connection);

$sql="SELECT * FROM `se-isg_info_werte` ORDER BY creation_date DESC LIMIT 1";

$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$cr_date=convertdate($row['creation_date']);

Kommt bei dem Wert eventuell statt dem Punkt ein Komma rüber?

PHP: mysql_fetch_array - Manual

Gibt ein Array von Zeichenketten zurück, das der gelesenen Zeile entspricht …

Mysql_num - darauf willst du hinaus oder?

Ne, nicht unbedingt, dieser Parameter sagt ja nur etwas darüber aus, wie Du auf die einzelnen Werte einer Row zugreifen kannst (also 0,1,2,3… oder über den Spaltennamen).
Die Werte kommen auf jeden Fall als String Werte zurück und müssen mitunter entsprechend umgewandelt werden (habe aber auch keine MySQL DB am Laufen und entnehme mein ausgeführtes Wissen nur der Docu …)!

Wenn Du „SetValueFloat“ verwendest, dann erwartet sich die Funktion aber zwingend den Datentype Float, „SetValue“ ist da etwas flexibler…

kleines Bespiel:


$myDBRow[0] = '1.2';

SetValue(41130, 1.2);  //OK
SetValue(41130, '1.2');  //OK
SetValue(41130, $myDBRow[0]);  //OK
SetValueFloat(41130, floatval('1.2'));  //OK
SetValueFloat(41130, floatval($myDBRow[0]));  //OK
SetValueFloat(41130, '1.2'); //Fehler

Er wollte dich darauf hinweisen , dass
mysql_fetch_array
nur Strings zurueckgibt. Der Datentyp entspricht nicht denen in deiner
Datenbank.

PHP: is_float - Manual

Vielen Dank… Habs kapiert :wink: