Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 29

Таймер обратного отсчёта

05.02.2018, 23:16. Показов 1849. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ все привет!
Нужна помощь. есть таймер обратного отсчета для игр с выводом денег , но когда меняется месяц, перезаписывает на новое время и весь таймер сбивается. кол-во продукции уходит в минус. понять не могу в чем дело.

суть таймера устанавливается определенное количество раз сбора и кол-во продукции, в сутки, когда человек заходит на страницу, скрипт считает количество оставшегося времени, оставшихся раз сбора, сколько уже раз собрано умножаем на кол-во указанной продукции (за один сбор) и записываем это все в базу.

дак вот повторюсь , если таймер был запущен например в 21:00 31.01.2018 кол-во сборов 6 раз и продукции 121.
все работает но когда число перескакивает на 01.02.2018 весь таймер сбивается, после перезаписи.

Вообщем малость трудновато объяснить, если что спрашивайте.

вот таймер:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
запись отсчета
$timek=0*60*60*24 +4*60*60 +0*60 +0;
$time_k=date(s)+ date(i)*60+date(H)*60*60+date(d)*24*60*60+$timek;
$time_kr=date(s)+ date(i)*60+date(H)*60*60+date(d)*24*60*60;
$mysqli->query("UPDATE `$name` SET `нумерация полей`=CONCAT(`number_polya`,'|',$value),`Count_polya`=$count_pole   WHERE `Username`='".$username."'");
$mysqli->query("UPDATE `hut_$name` SET `Кол-во продукции`=$count_pole WHERE `Username` = '".$username."'");
$mysqli->query("UPDATE `hut_$name` SET `Кол-во раз`=".$count_t." WHERE `Username`='".$username."'");    
$mysqli->query("UPDATE `$name` SET  `Время сбора одного раза`=".$time_k." WHERE `Username`='".$username."'");
$mysqli->query("UPDATE `hut_$name` SET `Время в данный момент`=$time_kr WHERE `Username` = '".$username."'");
$mysqli->query("UPDATE `hut_$name` SET `how_many_times_sown`=0 WHERE `Username` = '".$username."'");
 
 
        if($hut = $mysqli->query("SELECT * FROM `hut_wheat` WHERE `Username` = '".$username."'")){
             while($row = $hut->fetch_assoc()){     
             $TimeP = $row['TimeP']; Время которое было в момент посева
             $Number_crops=$row['Number_crops']; кол-во полей
             $how_many_times_sown=$row['how_many_times_sown'];  сколько уже было собрано
             $Count_raz=$row['Count_raz']; кол-во раз
             $Count_raz_raise=$row['Count_raz_raise']; кол-во раз же собрано
             }
    }
            $time_d1=date(s)+ date(i)*60+date(H)*60*60+date(d)*24*60*60;
            $timed1=$time_d1-$TimeP;
            $timekvs=($Count_raz*0)*60*60*24 + ($Count_raz*4)*60*60 + ($Count_raz*0)*60 + ($Count_raz*0);
            $timevp=0*60*60*24 + 4*60*60 + 0*60 + 0;
            $timekvp=($timekvs-$timed1);
            if($timekvp<=0){$timekv=0;}else{$timekvp=$timekvp;}
    $time1r=ceil($timekvp/$timevp);
    $timeRaz=$Count_raz-$time1r;
    $timeR=$time1r;
    $c=(($timeRaz*$Number_crops)-$how_many_times_sown)+$how_many_times_sown;
    if($c<=0){$ch=0;}else{$ch=($c-$how_many_times_sown);}
    $mysqli->query("UPDATE `hut_wheat` SET `how_many_times_sown`=$c WHERE `Username` = '".$username."'");
    $mysqli->query("UPDATE `repository` SET `wheat`=`wheat`+$ch WHERE `Username`='".$username."'");
    
    $timekp=0*60*60*24 + 4*60*60 + 0*60 + 0;
    $timek=$timed1;
    $timekvs=($Count_raz*0)*60*60*24 + ($Count_raz*4)*60*60 + ($Count_raz*0)*60 + ($Count_raz*0);
    $vch=($timekvs-$timek);
    $vchp=(int)($vch/$timekp)*$timekp;
    $OstCh=$vch-$vchp;
    
    $mysqli->query("UPDATE `wheat` SET  `Time`=".$OstCh." WHERE `Username`='".$username."'");
    $mysqli->query("UPDATE `hut_wheat` SET `Count_raz_raise`=".$timeR." WHERE `Username` = '".$username."'");
    
            $time=$OstCh;
            $day=(int) ($time/(24*60*60));
            $H=(int)(($time-$day*24*60*60)/(60*60));
            $m=(int)(($time-$day*24*60*60-$H*60*60)/60);
            $s=($time-$day*24*60*60-$H*60*60-$m*60);
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.02.2018, 23:16
Ответы с готовыми решениями:

Таймер обратного отсчета
У меня проблема, хочу создать таймер обратного отсчета, лично у меня все получилось, создаю таймер не по заданному таймингу, а через базу...

Таймер обратного отсчета
Стоит такая задача есть несколько ссылок у которых необходимо задать разное время их показа к примеру у одно ссылке один раз через каждые...

Таймер обратного отсчета
Здравствуйте, прошу простить если не туда написал ( не тот топ)... Моя проблема заключается в том, есть код таймера обратного...

3
ytf
276 / 259 / 185
Регистрация: 15.08.2017
Сообщений: 1,483
06.02.2018, 12:36
если убрать умножение на 0 будет легче
0
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 29
06.02.2018, 14:36  [ТС]
Ну это все равно не поможет. Я все таки решил переделать малость таймер, попробую поработать и подогнать вот этот таймер в свою формулу.
если этот таймер использовать отдельно то при переходе на следующий месяц таймер не глючит.
вот только теперь как это все подогнать.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
        
                $nextWeek = time() + (5*60);
                $nextWeek1 = time() + (10);
$mysqli->query("UPDATE `timer` SET `Time`=".$nextWeek.",`Time1`=".$nextWeek1." WHERE `Username`='".$username."'");
 
 
if($Friends = $mysqli->query("SELECT * FROM `timer` WHERE `Username`='".$username."'")){
while($row = $Friends->fetch_assoc()){
$last_time=$row['Time'];
$last_time1=$row['Time1'];
$count_day=$row['count_day'];
}}
                $s = $last_time - time();
        $hour = floor($s/3600);
        $mins = floor($s/60);
 
        $days = floor($s/86400);
        $hours = floor($s/3600 - $days*24);
        $min = floor($s/60 - $hour*60); 
        $sec = floor($s - $mins*60); 
 
        if ($days<10) $days = '0'.$days;
        if ($hours<10) $hours = '0'.$hours;
        if ($min<10) $min = '0'.$min;
        if ($sec<10) $sec = '0'.$sec;
        
        
        $s1 = $last_time1 - time();
        $hour1 = floor($s1/3600);
        $mins1 = floor($s1/60);
 
        $days1 = floor($s1/86400);
        $hours1 = floor($s1/3600 - $days1*24);
        $min1 = floor($s1/60 - $hour1*60); 
        $sec1 = floor($s1 - $mins1*60); 
 
        if ($days1<10) $days1 = '0'.$days1;
        if ($hours1<10) $hours1 = '0'.$hours1;
        if ($min1<10) $min1 = '0'.$min1;
        if ($sec1<10) $sec1 = '0'.$sec1;
echo"
$days-$hours-$min-$sec</br>
$count_day
<script type='text/javascript'>
function holding() {
        $.post('timer.php',{timer:1},function(data){
        $('#holding').html('<center>'+data+'</center>');
        location.reload();
        });
}
window.onload=start_time_blok();
function displayDate_time_blok(d,h,m,s,i) {
 if(s>0){s--;}
 if(s==0&m>0){s=59;m=m-1;}
 if(s==0&m==0&h>0){s=59;m=59;h=h-1;}
 if(s==0&m==0&h==0&d>0){s=59;m=59;h=23;d=d-1;}
 if(s<=0&d<=0&h<=0&m<=0)
 {
 document.getElementById('deptimer').innerHTML='<center>Аккаунт разблокирован!</center>';
//holding();
 return displayDate_time_blok;
    }
    else {document.getElementById(i).innerHTML='<center><table><tr><td align=center>'+d+'</td><td>:</td><td align=center>'+h+'</td><td>:</td><td align=center>'+m+'</td><td>:</td><td align=center>'+s+'</td></tr><tr><td style=font-size:15px;><div>День</div></td><td></td><td style=font-size:15px;><div>Час</div></td><td></td><td style=font-size:15px;><div>Мин</div></td><td></td><td style=font-size:15px;><div>Сек</div></td></tr></table></center>';}
window.setTimeout(function () {
        displayDate_time_blok(d,h,m,s,i);
    },1000);
    
};
function start_time_blok() {
    init_time_blok($days,$hours,$min,$sec,'deptimer');
};
 
function init_time_blok(d,h,m,s,id) {
window.setTimeout(function () {
        displayDate_time_blok(d,h,m,s,id);
    },1000);
};
 
 
 
window.onload=start_time_blok1();
function displayDate_time_blok1(d,h,m,s,i) {
 if(s>0){s--;}
 if(s==0&m>0){s=59;m=m-1;}
 if(s==0&m==0&h>0){s=59;m=59;h=h-1;}
 if(s==0&m==0&h==0&d>0){s=59;m=59;h=23;d=d-1;}
 if(s<=0&d<=0&h<=0&m<=0)
 {
 document.getElementById('deptimer1').innerHTML='<center>Аккаунт разблокирован!</center>';
 holding();
 return displayDate_time_blok1;
    }
    else {document.getElementById(i).innerHTML='<center><table><tr><td align=center>'+d+'</td><td>:</td><td align=center>'+h+'</td><td>:</td><td align=center>'+m+'</td><td>:</td><td align=center>'+s+'</td></tr><tr><td style=font-size:15px;><div>День</div></td><td></td><td style=font-size:15px;><div>Час</div></td><td></td><td style=font-size:15px;><div>Мин</div></td><td></td><td style=font-size:15px;><div>Сек</div></td></tr></table></center>';}
window.setTimeout(function () {
        displayDate_time_blok1(d,h,m,s,i);
    },1000);
    
};
function start_time_blok1() {
    init_time_blok1($days1,$hours1,$min1,$sec1,'deptimer1');
};
 
function init_time_blok1(d,h,m,s,id) {
window.setTimeout(function () {
        displayDate_time_blok1(d,h,m,s,id);
    },1000);
};
</script>";
0
ytf
276 / 259 / 185
Регистрация: 15.08.2017
Сообщений: 1,483
06.02.2018, 15:47
оффтопик: если установить вики-движок рядом с сайтом и записывать туда алгоритм работы скриптов, будет легче привлекать незнакомых с сайтом программистов на маленькие задачи

Добавлено через 6 минут
Цитата Сообщение от Fashick Посмотреть сообщение
while($row = $Friends->fetch_assoc()){ $last_time=$row['Time']; $last_time1=$row['Time1']; $count_day=$row['count_day']; }}
не понятно, с какой целью несколько раз присваивать одним и тем же переменным значения, экономнее использовать if вместо while
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.02.2018, 15:47
Помогаю со студенческими работами здесь

Таймер обратного отсчета с cookie
Ребята весь интернет перелопатил и ничего не нашёл. Последняя надежда на вас) Я хочу научиться реализовать таймер обратного отсчета на...

Таймер обратного отсчета на PHP
Здравствуйте, почитал различные темы на форуме, но ответа для своего случая так и не нашел. Отсюда вопросик: Есть дата наступления...

Таймер обратного отсчета с редактированием времени
Здравствуйте, пробую написать код таймера на ХТМЛ и ПХП, что бы таймер допустим шел от 3 дней 12 часов и 17 сек до нуля. Но пока он...

Таймер обратного отсчёта(событие по таймеру)
Здравствуйте, может кто подсказать как реализовать такое?В общем нужен таймер обратного отсчёта, по прошествии какого-то времени(одна...

Таймер обратного отсчета с добавлением времени когда угодно
Здарвствуйте, пробую написать код таймера на ХТМЛ и ПХП, что бы таймер допустим шел от 3 дней 12 часов и 17 сек до нуля. Но пока он...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru