У меня есть простая страница, которая отображает результаты гонки. Результаты извлекаются из файла CSV, который обновляется после завершения каждой гонки. Изменения могут быть незаметными, поэтому хотелось бы иметь анимацию, постепенное увеличение / уменьшение или изменение цвета и т. Д., Только если результаты отличаются. Я хочу добавить в таблицу ТОЛЬКО если файл CSV имеет новые результаты в качестве визуального пособия для обновления.
РЕДАКТИРОВАТЬЯ не уверен, с чего начать реализацию, поэтому код не отражен ниже. CSV сканируется каждую 1 секунду и таблица обновляется. В результате я хочу, чтобы результаты таблицы имели анимацию, если / когда изменяются результаты массива, иначе анимация отсутствует.
РЕДАКТИРОВАТЬ 2Я попытался вывести текущий номер гонщика из данных результатов ($ csv [1]) в файл, а затем проверить его по текущему номеру гонки, но, похоже, он не работает. Когда я тяну $ lastrace [0] и $ csv [1], они всегда совпадают. Я думал, что если он будет выше в PHP, то получим $ lastrace перед написанием нового числа, но это не так.
// Get Racer No from previous race
$lastrace = str_getcsv(file_get_contents('lastraceno.txt'));
// Puts current racer no to CSV file
$file = fopen("lastraceno.txt","w");
fputcsv($file,explode(',',$csv[1]));
fclose($file);
Мой код в том виде, как он есть, как показано ниже — обрезал какой-то нерелевантный код.
index.php
<head>
<script src="jquery-2.1.3.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
refreshTable();
});
function refreshTable(){
$('#tableHolder').load('table.php', function(){
setTimeout(refreshTable, 1000);
});
}
</script>
</head>
<body background="timebg.jpg">
<div id="tableHolder"></div>
</body>
Table.php
<?php
$f_pointer=fopen("csv.txt","r"); // file pointer
while(! feof($f_pointer)){
$csv=fgetcsv($f_pointer);
foreach($csv as &$val){
if($val === "" || $val === false || $val === null) $val = "NA";
}
}
?>
<table>
<tr>
<td><?php echo $csv[2] ?> <?php echo $csv[3]?></td>
</tr>
</table>
решаемая
Номер гонщика $ csv1 в моем массиве из файла результатов. Я нашел написание $ CSV1 в новый файл CSV и сравнение $ CSV1 до $ lastrace [0] каждое обновление для работы.
Используя оператор if else, я сравнил информацию и установил переменную в зависимости от того, было ли совпадение или нет. Если данные совпадают, переменная равна ‘0’, и никаких действий не требуется. Если $ CSV1 не соответствует $ lastrace [0], переменная равна «1», а новый номер гонки отправлен в lastraceno.txt для будущих обновлений.
Затем я мог бы установить класс CSS на основе, если переменная была 0 или 1.
CSS анимация достигается с помощью [https://daneden.github.io/animate.css/]Animate.CSS1
index.php
<head>
<script src="jquery-2.1.3.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
refreshTable();
});
function refreshTable(){
$('#tableHolder').load('table.php', function(){
setTimeout(refreshTable, 1000);
});
}
</script>
</head>
<body background="timebg.jpg">
<div id="tableHolder"></div>
</body>
Table.php
<?php
$f_pointer=fopen("csv.txt","r"); // file pointer
while(! feof($f_pointer)){
$csv=fgetcsv($f_pointer);
}
// Replace blank lines with NA
foreach($csv as &$val){
if($val === "" || $val === false || $val === null) $val = "NA";
}
// Get Racer No from previous race
$lastrace = str_getcsv(file_get_contents('lastraceno.txt'));
// Puts current racer no to CSV file
if ($lastrace[0]==="$csv[1]") {
$newrace = 0; // This is not a new race
} else {
$newrace = 1; // This is a new race
$file = fopen("lastraceno.txt","w");
fputcsv($file,explode(',',$csv[1]));
fclose($file);
}
if ($newrace == '1') {
$newtimes = "class='animated zoomIn'";
} else { }
<table <?php echo $newtimes ?>>
<tr>
<td>Text to animate</td>
</tr>
</table.
Других решений пока нет …