ja, ich hab mal wieder etwas, was mir absolut nicht klar ist:
Ich habe meine Rollladen-Kontrolldaten (Instanz, Laufzeit etc.) in einer MySQL-DB als integer abgelegt. Wenn ich die rows nun auslese, will IPS, dass ich an manchen Stellen noch eine (int)-Funktion benutze…
Kann mir jemand das erklären ?
bengie
21. Juli 2011 um 22:01
2
chrissiboy:
ja, ich hab mal wieder etwas, was mir absolut nicht klar ist:
Ich habe meine Rollladen-Kontrolldaten (Instanz, Laufzeit etc.) in einer MySQL-DB als integer abgelegt. Wenn ich die rows nun auslese, will IPS, dass ich an manchen Stellen noch eine (int)-Funktion benutze…
Kann mir jemand das erklären ?
Mit dem (int) vor einer Variablen machst Du einen Typecast und wandelst die bisherige Darstellung in Zeichen in eine reine Zahl um. Oder meintest Du etwas anderes?
ja, was anderes
ich bin davon ausgegangen, dass wenn ich in MySQL einen Wert in einer Integer-Spalte speichere, auch ein Integer zurückbekomme und nicht noch die (int)-Funktion benutzen muss (z.B. eine Instanz)
sysrun
22. Juli 2011 um 14:11
4
Wie holst du denn die Daten aus der MySQL? Hast da mal ein PHP-Schnippsel?
bei blau wird eingelesen und
an den rot markierten Stellen bringt er einen Typ-Fehler, wenn ich die (int)-Funktion weglasssen
<?
include "dbConnect.php";
$Bezeichnung = $GName;
$System = $Syst;
$Bezeichnung = "Esszimmer";
$System = "FS20";
$result = mysql_query("select Instanz, Position, Geoeffnet_Setzen, Blind, Geschlossen_Setzen, Letzte_Aktion, Laufzeit_Oeffnen, Laufzeit_Sonnenschutz, Sonnenschutz_Setzen from Rollladen where Bezeichnung ='".$Bezeichnung."'");
$row = mysql_fetch_array($result);
SetValueString("{$row["Position"]}", "läuft auf Sonnenschutz"); // Positionsvariable setzen
if ($System == "Homematic")
HM_WriteValueFloat((int)"{$row["Blind"]}" , "LEVEL", 0.65); // Sonnenschutzposition
else
{
IPS_RunScriptEx(32757 /*[Rollladen/Markisen\Allgemeine Scripte\Rollladen oeffnen]*/,Array("GName" => $Bezeichnung,"Syst" => $System)); //Rollladen Position oben
IPS_SetScriptTimer("{$row["Geoeffnet_Setzen"]}", 0); //Timer löschen falls hochfährt
IPS_Sleep("{$row["Laufzeit_Oeffnen"]}" * 1000);
FS20_SwitchDuration((int)"{$row["Instanz"]}" , false, (int) "{$row["Laufzeit_Sonnenschutz"]}"); // herunterfahren
IPS_SetScriptTimer("{$row["Sonnenschutz_Setzen"]}",(int) "{$row["Laufzeit_Sonnenschutz"]}"); //Rollladen Position geschlossen setzen
}
IPS_RunScriptEx(34446 /*[Allgemeine Scripte\Letzte Aktion]*/,Array("GID" => "{$row["Letzte_Aktion"]}"));
?>
sysrun
23. Juli 2011 um 12:57
6
Ah, ok. Ja, die eingebauten MySQL Funktionen von PHP geben die Daten immer als String zurück, egal wie die in der Tabelle definiert sind.
Wenn du Libaries wie ADODb nutzt dann werden die Results automatisch anhand der Metadaten der Tabellen angepasst.
komischerweise an den anderen Stellen funktioniert’s…aber gut dass ich das weiß, dann kann ich mich drauf einstellen - danke dir.