Помогите добить таймер обратного отсчета.
Привет всем помогите добить скрипт
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<?php
date_default_timezone_set('Europe/Kiev');//timzone
/**
1|text|link|12|10|2018|10:00:00|09:55:00|10:30:00|
2|text|link|12|10|2018|21:00:00|20:55:00|21:30:00|
3|text|link|12|10|2018|22:00:00|21:55:00|22:30:00|
*/
$data = file("time_table.dat");
foreach($data as $rows) {
$elem = explode("|", $rows);
if (!strripos($rows, "|")) continue;
///////////////////////////////////////////////////////////////
?>
<script type="text/javascript">
var countDownDate = new Date("<?=$elem[3].','.$elem[4].','.$elem[5].','.$elem[7];?>").getTime();//до открытия ссылки
//var countDownDate = new Date("<?=$elem[3].','.$elem[4].','.$elem[5].','.$elem[8];?>").getTime();// до закрытия ссылки
var x = setInterval(function() {
var now = new Date().getTime();
var distance = countDownDate - now;
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
document.getElementById("demo_<?=$elem[0];?>").innerHTML = days + ":" + hours + ":" + minutes + ":" + seconds + "<br> <a href=\"#\">Неактивная</a>";
if (distance < 0) {
clearInterval(x);
document.getElementById("demo_<?=$elem[0];?>").innerHTML = "<a href=\"<?=$elem[2];?>\">Активная</a>";
//window.location = "final.php" // по окончанию времени перейти на другу страницу
}
}, 1000);
/**время беру из переменной через фореч из файла , работает только по последней строке,
тоесть выводит лиш один результат, помогите чтоб показать несколько таймеров обратного отсчета и прикрутить таймер до закрытия ссылки и */
</script>
<?
echo'<table border="1" align="center" cellpadding="0" cellspacing="0" width="300">
<tr>
<td valign="top" align="center" width="150">
'.$elem[3].'/'.$elem[4].'/'.$elem[5].'-'.$elem[6].'<br>
'.$elem[1].'
</td>
<td valign="top" align="center" width="150">
<span id="demo_'.$elem[0].'"></span>
</td>
</tr>
</table>';
}
?>
|
Цитата:
|
16-17 строки можно местами поменять, чтобы бесполезное действие не выполнять, если строка пустая (можно вообще от stripos избавиться работая с результатом функции explode).
Вместо десятков строк js-кода лучше оставить в массиве данных те, что понадобятся клиенту и поместить их на страницу, как json и на клиенте работать уже с этими данными (сократите js-код в {count($data)} раз). Еще можете почитать про, к примеру, mvc и шаблонизаторы. |
Nexus, я учусь и для себя делаю
|
Переделал получилось открывать ссылку а вот типер по окончанию времени нужно опять спрятать
<html>
<head>
<title> Таймер обратного отсчета </title>
</head>
<body >
<?php
//error_reporting (0);
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
//date_default_timezone_set('Europe/Kiev');//timzone
/** time_table.dat
1|text|link|12|10|2018|10:00:00|09:55:00|10:30:00|
2|text|link|12|10|2018|21:00:00|20:55:00|21:30:00|
3|text|link|12|10|2018|22:00:00|21:55:00|22:30:00|
*/
date_default_timezone_set('Europe/Kiev');//timzone
$data = file("time_table.dat");
foreach($data as $rows) {
$elem = explode("|", $rows);
if (!strripos($rows, "|")) continue;
echo'<table border="1" align="center" cellpadding="0" cellspacing="0" width="300">
<tr>
<td valign="top" align="center" width="150">
'.$elem[3].'/'.$elem[4].'/'.$elem[5].'-'.$elem[6].'<br>
'.$elem[1].'
</td>
<td valign="top" align="center" width="150">
<script type="text/javascript">
/////////////////////////
timedown("'.$elem[3].','.$elem[4].','.$elem[5].','.$elem[7].'","link_'.$elem[0].'");
//var countDownDate = new Date("<?=$elem[3].','.$elem[4].','.$elem[5].','.$elem[8];?>").getTime();// до закрытия ссылки
function timedown(ti,id){
var countDownDate = new Date(ti).getTime();
var x = setInterval(function() {
var now = new Date().getTime();
var distance = countDownDate - now;
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
document.getElementById(id).innerHTML = "до входа<br>"+(days!=0 ? days + ":" : "") + (hours!= 0 ? hours + ":" : "") + (minutes != 0 ? minutes + ":" : "") + seconds + "<br><a href=\"#\">Неактивная</a>";
if (distance < 0) {
clearInterval(x);
document.getElementById("link_'.$elem[0].'").innerHTML = "<a href=\"'.$elem[2].'\">Активная</a>";
//window.location = "final.php" // по окончанию времени перейти на другу страницу
}
}, 1000);
}
/** помогите прикрутить таймер до закрытия ссылки и спрятать ссылку обратно*/
</script>
<span id="link_'.$elem[0].'"></span>
</td>
</tr>
</table>';
}
?>
</body>
</html>
|
Цитата:
Толку больше будет, будете сразу знать как сделать лучше, а не как "быстрее". Быстрота в конечном итоге приведет к тому, что код однажды придется переписать полностью, поскольку поддерживать эту хрень даже вам через год будет в тягость. |
| Часовой пояс GMT +3, время: 08:41. |