[JQ + PHP + MySQL] Счетчик времени
|
|
Indev | Дата: Четверг, 09 Августа 2012, 12:26 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Здравствуйте! Есть 30 полей в базе (15 action, 15 action_time): и т. д. Получилось сделать вывод одного действия в счетчик, как сделать одновременный вывод двух действий, причем они могут быть из любого поля. Например: 1 действие: поля action3 и action3_time 2 действие: поля action5 и action5_time
Мой код (timing.php - файл со скриптом синхронизации времени): Code <? $id = $_SESSION['id']; include("bd.php"); $q = mysql_query("SELECT action, action_time FROM action WHERE id = '$id'"); $arr = mysql_fetch_array($q); $time = time(); if ($arr['action'] == 1) { if ($arr['action_time'] <= $time) { $result = mysql_query("UPDATE action SET action = 0, action_time = 0 WHERE id = '$id'"); $result = mysql_query("UPDATE tutorial SET task = 1.3 WHERE id = '$id'"); echo '<meta http-equiv="refresh" content="0; url=index.php">'; } } ?> <script type="text/javascript"> var finish = <? echo $arr[action_time].';';?> var current = finish - <? echo time();?>; var next = current - 10; var nexttask = 1.3; var id = <?echo $id;?>; var interval = setInterval(Timer,1000); function Timer() { current--; document.getElementById('container').innerHTML = 'Включение питания... Осталось: '; document.getElementById('container').innerHTML += current; if (current == next) { $.post("timing.php", {time: current, id: id}, function(data){ current = data; } ); next = current - 10; if (next < 0) { next = 0; } } if (current <= 0) { document.getElementById('container').innerHTML = 'Питание включено! <br> <a class = next>Продолжить</a>'; $("a.next").click(function(){ $.post("timing.php", {task: nexttask, id: id}); var interval = setInterval(Timer2,1000); function Timer2() { window.location.href="index.php"; } }); } } </script>
Завел аккаунт в Твиттере, буду постить сообщения о разработке игры. Подписывайтесь)
|
|
| |
gmmmm | Дата: Четверг, 09 Августа 2012, 16:44 | Сообщение # 2 |
почетный гость
Сейчас нет на сайте
| К сожалению сейчас не могу серьезно разбирать ваш код, но могу по-советовать: Если для одного счетчика создается таймер, то почему бы и для второго действия не создать 2 таймер? Если действий много, то таймер можно генерировать динамически на сервере, с помощью php
пусто!)
|
|
| |
Indev | Дата: Четверг, 09 Августа 2012, 18:58 | Сообщение # 3 |
частый гость
Сейчас нет на сайте
| Получилось, но почему-то теперь раз в секунду от времени отнимается - 2 вместо -1
Code var finish = <?echo $actions['action_time'];?>; var current = finish - <? echo time();?>; var finish2 = <?echo $actions['action2_time'];?>; var current2 = finish2 - <? echo time();?>; var id = <?echo $id;?>; var interval = setInterval(Timer,1000); var interval = setInterval(Timer2,1000); function Timer2() { current2 = current2 - 1; if (current2 > 0) { document.getElementById('actions').innerHTML += "<br>2Активация реактора: "; document.getElementById('actions').innerHTML += current2; } } function Timer() { current = current - 1; if (current > 0) { document.getElementById('actions').innerHTML = "1Активация реактора: "; document.getElementById('actions').innerHTML += current; } }
Завел аккаунт в Твиттере, буду постить сообщения о разработке игры. Подписывайтесь)
Сообщение отредактировал Indev - Четверг, 09 Августа 2012, 18:59 |
|
| |
gmmmm | Дата: Четверг, 09 Августа 2012, 19:48 | Сообщение # 4 |
почетный гость
Сейчас нет на сайте
| Наверное где-то не правильно отнимаешь значение.
Quote document.getElementById('actions').innerHTML += "<br>2Активация реактора: "; document.getElementById('actions').innerHTML += current2;
Quote (Indev) document.getElementById('actions').innerHTML = "1Активация реактора: "; document.getElementById('actions').innerHTML += current; может тут оба раза document.getElementById('actions')
пусто!)
|
|
| |
Indev | Дата: Четверг, 09 Августа 2012, 20:00 | Сообщение # 5 |
частый гость
Сейчас нет на сайте
| Да нет, убирал Code document.getElementById('actions').innerHTML += "<br>2Активация реактора: "; document.getElementById('actions').innerHTML += current2; ничего не изменилось...Добавлено (09.08.2012, 20:00) --------------------------------------------- Все, исправил, оказалось была ошибка в коде выше, когда я пытался сделать цикл.
Quote (gmmmm) таймер можно генерировать динамически на сервере, с помощью php А можно про это подробнее?
Завел аккаунт в Твиттере, буду постить сообщения о разработке игры. Подписывайтесь)
|
|
| |
gmmmm | Дата: Пятница, 10 Августа 2012, 08:03 | Сообщение # 6 |
почетный гость
Сейчас нет на сайте
| Не совсем понял что конкретно требуется, но покажу, как это делается Это легко, просто генерируем js код в php: Code <?php $i = 0; $a = "<script>"; while ($i < 10) //10 таймеров { $i++; $a .= " var interval$i = setInterval(Timer$i,1000); function Timer$i() { "; if ($i == 5) { //что-то если таймер №5 } $a .= "alert('йа таймер $i'); }"; }//while end echo $a . "</script>"; ?>
пусто!)
|
|
| |
Indev | Дата: Пятница, 10 Августа 2012, 18:41 | Сообщение # 7 |
частый гость
Сейчас нет на сайте
| Спасибо! То что нужно! Добавлено (10.08.2012, 18:41) --------------------------------------------- Почему-то не работает...
Завел аккаунт в Твиттере, буду постить сообщения о разработке игры. Подписывайтесь)
|
|
| |
gmmmm | Дата: Пятница, 10 Августа 2012, 18:51 | Сообщение # 8 |
почетный гость
Сейчас нет на сайте
| У меня работало сделай в начале скрипта вывод ошибок
пусто!)
|
|
| |
Indev | Дата: Пятница, 10 Августа 2012, 21:11 | Сообщение # 9 |
частый гость
Сейчас нет на сайте
| Спасибо, помогло!
Завел аккаунт в Твиттере, буду постить сообщения о разработке игры. Подписывайтесь)
Сообщение отредактировал Indev - Пятница, 10 Августа 2012, 21:13 |
|
| |
HerrPotapov | Дата: Суббота, 11 Августа 2012, 14:41 | Сообщение # 10 |
заслуженный участник
Сейчас нет на сайте
| Quote Здравствуйте! Есть 30 полей в базе (15 action, 15 action_time):
Я настоятельно рекомендую посмотреть в гугле статьи на тему нормализации базы данных. ОЧЕНЬ внимательно и ОЧЕНЬ вдумчиво нужно эти статьи прочитать. Иначе так и будешь делать такие таблицы.
Discord: alpotapov#1741
Интервью с разработчиком WarCastle - Читаем и вникаем!
|
|
| |
Indev | Дата: Понедельник, 13 Августа 2012, 17:07 | Сообщение # 11 |
частый гость
Сейчас нет на сайте
| А как вы предлагаете организовать эту таблицу? П.С. Как теперь отсортировать все значения времени по возрастанию?
Завел аккаунт в Твиттере, буду постить сообщения о разработке игры. Подписывайтесь)
|
|
| |
Talco | Дата: Воскресенье, 02 Сентября 2012, 01:56 | Сообщение # 12 |
почетный гость
Сейчас нет на сайте
| Quote (HerrPotapov) Я настоятельно рекомендую посмотреть в гугле статьи на тему нормализации базы данных. Сам-то смотрел? Что-нибудь понял?
xNova: Революция
|
|
| |