У меня проблема со сравнением двух значений и разрешением изменения одного значения в операторе if. Но, конечно, когда я перезагружаю страницу, она снова получает первое значение. Я использую этот код, чтобы установить некоторую информацию в базе данных, когда машина включена или выключена.
$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 с помощью кнопки).
Просто сохраните значение $ 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
}
Это псевдокод. Не забудьте проверить, существует ли файл и имеет ли он значение.
Других решений пока нет …