Итак, мне, наконец, удалось заставить его работать, развернув несколько переменных, пока база данных находилась в цикле while
.
Во-первых, я пробежал по базе данных в порядке DESCENDING
, ища все значения, содержащие 60 (конец), а также все значения, содержащие 0 (стоп). Затем я добавил оба значения времени начала / окончания в переменную и посчитал, сколько секунд потребовалось, чтобы достичь 60. Если бы результат был ниже, чем предыдущий, переменные myQuickest
были бы изменены.
$myQuickest60Time = 100; // any high number to kick the less than off, 100 just to be safe.
$sql = "SELECT * FROM vws_getdata WHERE sensor = '0D' ORDER BY date DESC";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
if($row["value"] == "60"){ // UP TO SPEED
$myLookingForEnd = true;
$my60Start = $row['date'];
} else if($row['value'] == "0"){
if($myLookingForEnd == true){
$myLookingForEnd = false;
$my60End = $row['date'];
if($myQuickest60Time > (strtotime($my60Start) - strtotime($my60End))){
$myQuickest60Time = (strtotime($my60Start) - strtotime($my60End));
$myQuickest60Start = $my60Start;
$myQuickest60End = $row['date'];
}
}
}
}
} else {
echo "No Data";
}
Затем я снова запрашиваю базу данных, показывая только даты, соответствующие переменным myQuickest
.
$sql2 = "SELECT * FROM vws_getdata WHERE sensor = '0D' AND date >= '".$myQuickest60End."' AND date <= '".$myQuickest60Start."' ORDER BY date ASC";
$result2 = $conn->query($sql2);
if ($result2->num_rows > 0) {
while($row2 = $result2->fetch_assoc()){
echo "INNER - Value: " . $row2['value'] . " - ID: " . $row2['id'] . " - Date: " . $row2['date'] . "<br>";
}
} else {
echo "<b>INNER - NO RESULT</b><br>";
}