比较问题与PHP的问题

时间:2015-03-30 10:58:59

标签: php if-statement state

我在比较2个值时遇到问题,并且在if语句中让1值发生变化。但是当我重新加载页面时,它会再次获取第一个值。我打开或关闭机器时使用此代码在数据库中设置一些信息。

$urlMachineON = 'http://192.168.0.150/awp/Shredder/PLCfiles/IOmachineActive.html';

// get content
$contentMachineON = file_get_contents($urlMachineON);

//remove first 2 characters
$truncate = substr($contentMachineON, 2);

//remove last 5 characters
$MachineOn = substr($truncate, 0, -5);
//MachineON can only be 1 or 0

$currentState = 2;

if ($MachineOn != $currentState)
{
$stmt = $conn->prepare("INSERT INTO machineactiviteit (Time, MachineStatus) VALUES(NOW(), ?)");

$stmt->bind_param('s', $MachineOn);

    if ($stmt->execute() === TRUE) 
    {
        $currentState = $MachineOn;
        echo 'success'; 
    }
    else 
    {
        echo $conn->error;
    }

$stmt->close(); 
}
elseif($MachineOn == $currentState)
{
    echo 'do nothing';
}

因此,当我这样做时,他将始终使用if语句,因为$currentState$MachineOn总是彼此不同。在C#中,您可以使用initalize组件将值设置为特定值一次。但我还没有在php中发现任何相关信息。所以我的问题是我可以只设置一次值吗?或者我应该以另一种方式解决这个问题?

这是它应该如何工作:
之前的第一次尝试:currentState = 2; MachineOn = 0;之后:currentState= 0; MachineOn = 0;
之前的第二次尝试:currentState= 0; MachineOn = 0;之后:currentState= 0; MachineOn = 0;
之前的第三次尝试:currentState= 0; MachineOn = 1;之后:currentState= 1; MachineOn = 1;
(我可以使用按钮更改MachineOn值)。

1 个答案:

答案 0 :(得分:0)

只需在某处保存$ currentState值即可。例如,在文件或数据库中。

    $currentState = file_get_contents('filepath'); // last saved state (check if is set!)
    if($currentState !== $MachineOn) {
        file_put_contents('filepath', $MachineOn); // Save current state
    } else {
        file_put_contents('filepath', 2); // Save other state
    }

这是pseoudocode。请记住检查文件是否存在且有价值。