Понедельник, 11 Ноября 2024, 07:52

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
[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
почетный гость
Сейчас нет на сайте
Не совсем понял что конкретно требуется, но покажу, как это делается smile
Это легко, просто генерируем 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
почетный гость
Сейчас нет на сайте
У меня работало smile
сделай в начале скрипта вывод ошибок


пусто!)
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: Революция
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг