2015-03-30 3 views
-1

У меня проблема со сравнением 2 значений и изменение значения 1 в операторе if. Но, конечно, когда я перезагружаю страницу, он снова забирает первое значение. Я использую этот код для установки некоторой информации в базе данных, когда машина включена или выключена.Сравнение проблем со значениями php

$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'; 
} 

Так что, когда я делаю это, он всегда будет использовать, если заявление, так как $currentState и $MachineOn всегда отличаются друг от друга. В C# у вас есть что-то вроде инициализации компонента, чтобы установить значение один раз на определенное значение. Но я ничего не нашел об этом в 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;
(I может изменить значение MachineOn с помощью кнопки).

+0

PHP полностью без гражданства - каждый раз, когда вы выполняете код, он сбрасывает все, если вы не сохраняете это значение, используя что-то вроде переменной сеанса, файла cookie или какой-либо базы данных. В его нынешнем виде этот код всегда ничего не делает. –

+0

Я думаю, что мне нужно работать с моим запросом базы данных и проверять последний статус машины – Bart

ответ

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 
    } 

Это псевдокод. Не забудьте проверить, существует ли файл и имеет значение.

+0

Да, я использовал базу данных. получить последний статус – Bart

Смежные вопросы