PhP čas a datum - odčítání

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uživatelský avatar
kuxik009
Level 2.5
Level 2.5
Příspěvky: 338
Registrován: únor 13
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PhP čas a datum - odčítání

Příspěvekod kuxik009 » 10 bře 2014 18:18

Díky, ale co to odpočítávání? A lze nastavit, aby tam to odpočítávání bylo i třeba po zavření stránky a kdybych přišel třeba za hodinu, furt by to odpočítávalo?

Odesláno pomocí super appky ze super telefonu.
Moje portfolio
Český jazyk je freeware, ale nikoliv open source!!!

Sestava:
► Zobrazit spoiler

Reklama
Uživatelský avatar
Kim Spotcom
Level 3
Level 3
Příspěvky: 580
Registrován: leden 14
Pohlaví: Muž
Stav:
Offline

Re: PhP čas a datum - odčítání

Příspěvekod Kim Spotcom » 10 bře 2014 18:37

Hmm, tohle není jednoduchá věc. Šel bych na to, že bych uživateli v session při zadání hodnoty uložil counter. Dál je otázka, co má být akcí po odzvonení timeru, resp. jak to má být časově přesné. Protože 1 věc je udělat cronem periodickou kontrolu odzvoněných counterů, ale ten cron má nějakou časovou granularitu. Má li jít realtime věc, pak je to složitější a neumím poradit, zřejmě PHP na to stačit nebude. Je potřeba, aby na serveru běžel nějaký daemon (což může být i součást toho skriptu, bude li naspaný v ruby/node.js), a došlo by i ke změně algoritmu, už by se záznamy teoreticky neukládaly někam do DB, ale /ještě/ by se ty záznamy regsitrovaly jako eventy do toho deamonu)...

Ano, jde to, ID uživatele bude uloženo v session (musí být nastaveno, tak, aby platila i po zavření browseru). Dál je důležité si uvědomit, že uživateli se bude posílat pouze absolutní čas, kdy má k hodnotě dojít, což je jediná smysluplná hodnota , pmocí JS lze vykrestli tikající hodinky atd...
Nejlepší obrana proti trollům je nereagova na ně.

Uživatelský avatar
iTerminator
Level 1.5
Level 1.5
Příspěvky: 132
Registrován: únor 14
Pohlaví: Muž
Stav:
Offline

Re: PhP čas a datum - odčítání

Příspěvekod iTerminator » 10 bře 2014 19:02

Nedělej to složitější.

Na php tedy nemusí ani dojít, dojde ale při insertu do DB. Uživatel zadá datum, to se převede na sekundy a přes ajax se to pod jeho IP uloží do DB, uloží se ten rozdíl těch dat v sekundách, což je vlastně to, kolik zbývá. A pokud příjde na stránku, tak to zkusí najít jeho IP v DB, pokud najde, tak to načte ten čas a ten se bude odpočítávat, každou setinu uložíš do DB aktuální odpočet, takže to bude více méně naprosto přesný.
... na co jsem se v Nette podíval a co by většina programátorů napsala špatně, to bylo správně, vzorově. - Jakub Vrána

Do SZ mi píšete zbytečně, neboť problémy řeším pouze v tématech.
Za radu je slušné poděkovat.
Važ si rady, práci za tebe neudělám.

Používej Google!

Uživatelský avatar
Kim Spotcom
Level 3
Level 3
Příspěvky: 580
Registrován: leden 14
Pohlaví: Muž
Stav:
Offline

Re: PhP čas a datum - odčítání

Příspěvekod Kim Spotcom » 10 bře 2014 19:12

Taky řešení... to už je víceméně jedno, jesli je uživatel identifikován pomocí IP nebo Session, ale pokud by tam v případě IP neby žádná kontroloa, pak by to bylo semeniště pro XSS A CSRF útoky, naštěstí jsou tyto nebezpeší už dlouhá léta popsána,ale je potřeba programovat tak, aby byla tato chyba automaticky vyloučena a né na každém místě si vzpomínat na XSS ochranu. A ukládat relativní časy je dost riskatní hra.

Jak se provede "každou setinu"?

Záleží na té požadovéné časové granularitě, ne vždy je potřeba realtime event handling, ale stačí triggernout kontrolu cronem nebo dokonce i jen při každém requestu...
Nejlepší obrana proti trollům je nereagova na ně.

Uživatelský avatar
iTerminator
Level 1.5
Level 1.5
Příspěvky: 132
Registrován: únor 14
Pohlaví: Muž
Stav:
Offline

Re: PhP čas a datum - odčítání

Příspěvekod iTerminator » 10 bře 2014 19:28

Riskantní hra? Další profík na pc-helpu.
... na co jsem se v Nette podíval a co by většina programátorů napsala špatně, to bylo správně, vzorově. - Jakub Vrána

Do SZ mi píšete zbytečně, neboť problémy řeším pouze v tématech.
Za radu je slušné poděkovat.
Važ si rady, práci za tebe neudělám.

Používej Google!

Uživatelský avatar
kuxik009
Level 2.5
Level 2.5
Příspěvky: 338
Registrován: únor 13
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PhP čas a datum - odčítání

Příspěvekod kuxik009 » 11 bře 2014 07:01

Na netu jsem našel dotaz, který je stejný jako ten můj. Je u něj napsáno vyřešeno, ale moc ho nechápu. Mohla by mi nějaká hodná duše dát prosím ty skripty z té stránky do jednoho? Díky. http://diskuse.jakpsatweb.cz/?action=vt ... pic=115601
edit: Zkusim to s tou databází a dám vědět, jak to dopadlo!

Odesláno pomocí super appky ze super telefonu.
Moje portfolio
Český jazyk je freeware, ale nikoliv open source!!!

Sestava:
► Zobrazit spoiler

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PhP čas a datum - odčítání

Příspěvekod CZechBoY » 11 bře 2014 07:29

IP a session že je jedno? No to asi těžko... Můžeš mít klidně 50 kompů s jednou IP, na kterých pojedou 4 prohlížeče zároveň. Každej prohlížeč by měl mít svojí session.

Konečně jsme se dostali (po 4 stránkách sra*** - ničeho) k zadání problému. hip hip hurá.

Takže klikneš na tlačítko odpracovat 8 hodin, do databáze se zapíše čas time() + 8*60*60 jako koncový.
Jestli chceš i odpočet tak si přidej javascript funkci (někde jsem ji tu na fóru nedávno psal).
Výplatu potom můžeš výplacet při přihlášení uživatele, nebo jestli je potřeba ji zapsat hned tak při nějaké jiné akci. Myslím, že v gladiatusu se dalo o tý peníze rovnou bojovat, tzn. já makám a nějakej zmetek mě napadne a jsem zas bez peněz. Tohle vyřešili tak, že se peníze z výplaty dávaly do inventáře a ažpotom sám hráč si je vybral do peněženky :-)

Nějaké otázky? Ne, nebudu to za tebe celý psát.
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
kuxik009
Level 2.5
Level 2.5
Příspěvky: 338
Registrován: únor 13
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PhP čas a datum - odčítání

Příspěvekod kuxik009 » 11 bře 2014 14:27

Tu výplatu bych asi dal:

Kód: Vybrat vše

if ($cas_konec = strtotime(Time()))
{
$penize = $hodiny * 100;
$query = mysql_query ("update greece set drachmy = drachmy + $penize where id = $id;");
Echo "Práce dokončena. Získali jste $penize drachem."
}
else
Odpočítávání do $cas_konec
Moje portfolio
Český jazyk je freeware, ale nikoliv open source!!!

Sestava:
► Zobrazit spoiler

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PhP čas a datum - odčítání

Příspěvekod CZechBoY » 11 bře 2014 14:28

dejme tomu, ale potřebuješ tam minimálně 2 rovnítka ==
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
kuxik009
Level 2.5
Level 2.5
Příspěvky: 338
Registrován: únor 13
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PhP čas a datum - odčítání

Příspěvekod kuxik009 » 11 bře 2014 14:39

Jj, já vím, tohle bylo jen jak by to zhruba mělo být.
Moje portfolio
Český jazyk je freeware, ale nikoliv open source!!!

Sestava:
► Zobrazit spoiler

Uživatelský avatar
kuxik009
Level 2.5
Level 2.5
Příspěvky: 338
Registrován: únor 13
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: PhP čas a datum - odčítání

Příspěvekod kuxik009 » 12 bře 2014 16:44

Super, všechno to funguje, až na dvě věci: Odpočítávání a přepisování peněz. Ty skripty chci dva, oba budou mít stejnou funkci. U obou blbne počítání a přidávání peněz blbne jen u druhého. Takže ty chyby: To odpočítávání se v pohodě spustí, ale když dopočítá do nuly, spustí odpočítávání jednoho dne, Když ale obnovím stránku, peníze jsou přičtené a odpočítávání je pryč. A ta druhá chyba: Prostě se nepřepíšou peníze. I po skončení jsou peníze stejné jako na začátku. Prosím o kontrolu skriptů, děkuji všem předem. Vím že tam mám hodně chyb (jako například trojité if isset), ale teď prosím o kontrolu jen těch závažných chyb. Dík.
První skript(název gg_prace1.php):

Kód: Vybrat vše

<?php
 session_start();
header('Content-type: text/html;charset=UTF-8');
require_once 'db.php';

if(!empty($_SESSION['login']) AND !empty($_SESSION['heslo']))
{
         $login = $_SESSION['login'];
         $heslo = $_SESSION['heslo'];
         $over = mysql_query("SELECT `id` FROM `greece` WHERE `login`='".$login."' AND `pass`='".$heslo."'");
         if(mysql_num_rows($over)!=0)
         {
            $res_over = mysql_fetch_assoc($over);
         } else {
            exit("Vstup na tuto stránku je povolen pouze přihlášeným uživatelům.");
         }
      
} else {
   exit("Vstup na tuto stránku je povolen pouze přihlášeným uživatelům.");
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
   <meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
   <title>Greece game  -  server 1</title>
   <style type="text/css">
    body{
     background-image:url(http://jpeg.cz/images/2013/11/11/LtUEo.jpg);
     background-repeat:no-repeat;
     background-color:#000000;
     background-position: center top;
     background-size: 100% ;
    }
    a {text-decoration: none;}
 a: hover {text-decoration: underline;}
 a:link {color: #8b0000;} /* nenavštívený link */
a:visited {color: #8b0000;} /* navštívený link */
   </style>
  </head>
  <body>
  <?php
   $id = $_SESSION['id'];
    mysql_connect("sql.endora.cz:3313", "kuxik009", "moje heslo") or die("Pravděpodobně se nepodařilo připojit k DB!" . mysql_error());
    mysql_select_db("greece") or die("Pravděpodobně nebyla nalezena databáze!" . mysql_error());
    $query = mysql_query("SELECT * FROM `greece` WHERE `id`='$id'");
    while($result = mysql_fetch_array($query))
   {
    $drachmy = $result['drachmy'];
    $lepta = $result['lepta'];
    $duhovky = $result['duhovky'];
    $konec = $result['konec'];
   $pracujici = $result['pracujici'];
   $hodiny = $result['hodiny'];
   $konec2 = $result['konec2'];
   $pracujici2 = $result['pracujici2'];
   $hodiny2 = $result['hodiny2'];
    }?>
   <font style="font: bold 25px Verdana" color="#000000">Herní menu - práce na poli</font>
<font style="font: bold 20px Verdana"><div><a href="index.php">Hlavní stránka</a>
| <a href="game_menu.php"><i>Herní menu</i></a>
| <a href="uzivatel.php?id='.$_SESSION['id'].'">Profil</a>
| <a href="all_users.php">Seznam uživatelů</a>
| <a href="chat.php">Chat pro hráče</a>
| <a href="index.php?action=odhlasit_se">Odhlásit se</a></div></font><hr>
<font color="#0000ff" style="font: bold 25px Verdana">
<?php echo "Drachmy:" . $drachmy . "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lepta:" . $lepta . "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Duhovky:" . $duhovky;?></font><hr>
 <font style="font: bold 22px Verdana" color="#800000">
Z dáli na tebe mávají vesničané. Potřebují pomoci na poli při sklizni. A než odmítneš, pořádně si to rozmysli - za každou odpracovanou vteřinu ti dají jednu drachmu! Ale nezapomeň - když práci zrušíš, nedostaneš zaplaceno!
<br><br><br><br><br> </font>
   <form method="POST" action="gg_prace1.php">
    <table border=10 align="center" width=750 height="175" text="align_center">
    <tr>
    <td align="center">
     <font style="font: bold 22px Verdana" color="#800000">
    Pracovat <input type="number" min="1" max="12" name="hodiny" size=3> hodin <input type="submit" name="ok" value="Pracovat"><br>   
     <?php
    if (isset ($_POST["hodiny"]))
    {
     $hodiny = $_POST["hodiny"]*60*60;
     $cas_ted = Time();
     $cas_konec = $cas_ted + $hodiny;
     mysql_connect("sql.endora.cz:3313", "kuxik009", "moje heslo") or die("Pravděpodobně se nepodařilo připojit k DB!" . mysql_error());
         mysql_select_db("greece") or die("Pravděpodobně nebyla nalezena databáze!" . mysql_error());
         $query = mysql_query("update greece set pracujici = 1 where id = $id limit 1;");
       $query = mysql_query("update greece set konec = $cas_konec where id = $id limit 1;");
       $query = mysql_query("update greece set hodiny = $hodiny where id = $id limit 1;");
    header("Location: gg_prace1.php");
              exit;
    }
    if ($pracujici == 1)
        {
         if ($konec <= Time())
         {
         mysql_connect("sql.endora.cz:3313", "kuxik009", "moje heslo") or die("Pravděpodobně se nepodařilo připojit k DB!" . mysql_error());
           mysql_select_db("greece") or die("Pravděpodobně nebyla nalezena databáze!" . mysql_error());
           $query = mysql_query("update greece set pracujici = 0 where id = $id limit 1;");
         $query = mysql_query("update greece set konec = 0 where id = $id limit 1;");
         $query = mysql_query("update greece set drachmy = $drachmy + $hodiny where id = $id limit 1;");
         $query = mysql_query("update greece set hodiny = 0 where id = $id limit 1;");
         }
        }
        if ($pracujici == 1)
     {
     $datum = date("j/n/Y H:i:s", $konec);
     $datum2 = date("j. n. Y v H:i:s", $konec);
     ?>
 <script>
var vterina = 1000;
var minuta = vterina * 60;
var hodina = minuta * 60;
var den = hodina * 24;
var rok = den * 365.24219;

var slova = {
    roku: ["rok", "roky", "let"],
    dnu: ["den", "dny", "dnů"],
    hodin: ["hodina", "hodiny", "hodin"],
    minut: ["minuta", "minuty", "minut"],
    vterin: ["vteřina", "vteřiny", "vteřin"]
};

function sklonovani(pocet, co) {
    if (pocet == 1) return slova[co][0];
    if (pocet < 5 && pocet > 0) return slova[co][1];
    return slova[co][2];
}

function odpocet(el) {
    var konec = new Date(el.getAttribute("data-konec"));
    var ted = new Date();
    var rozdil = konec - ted;
    if (rozdil < vterina) {
        el.innerHTML = el.getAttribute("data-hlaska");
        return;
    }
    var zbyva = {
        hodin: Math.floor((rozdil % den) / hodina),
        minut: Math.floor((rozdil % hodina) / minuta),
        vterin: Math.floor((rozdil % minuta) / vterina)
    }

    var vypis = el.getAttribute("data-zbyva");
    for (co in zbyva) {
        var pocet = zbyva[co];
        if (pocet > 0) vypis += " " + pocet + " " + sklonovani(pocet, co);

    }

    el.innerHTML = vypis;
    setTimeout(function() {
      odpocet(el);
    }, vterina);
}
</script>
 
<p id="odpocet" data-konec="<?php echo $datum;?>" data-hlaska="Práce dokončena!" data-zbyva="Do konce práce zbývá:">Do konce práce zbývá:</p>
<script>
  odpocet(document.getElementById('odpocet'));
</script> 
<?php
echo "(končí $datum2)";
}   
?>
</div>
</font>
</td>
</tr>
</table>
    </font>
   </form>
  </p>
  </body>
 </html>

Druhý skript (název gg_prace2.php):

Kód: Vybrat vše

<?php
session_start();
header('Content-type: text/html;charset=UTF-8');   
require_once 'db.php';

if(!empty($_SESSION['login']) AND !empty($_SESSION['heslo']))
{
         $login = $_SESSION['login'];
         $heslo = $_SESSION['heslo'];
         $over = mysql_query("SELECT `id` FROM `greece` WHERE `login`='".$login."' AND `pass`='".$heslo."'");
         if(mysql_num_rows($over)!=0)
         {
            $res_over = mysql_fetch_assoc($over);
         } else {
            exit("Vstup na tuto stránku je povolen pouze přihlášeným uživatelům.");
         }
      
} else {
   exit("Vstup na tuto stránku je povolen pouze přihlášeným uživatelům.");
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
 <meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
 <title>Greece game  -  server 1</title>
 <style type="text/css">
body{
 background-image:url(http://jpeg.cz/images/2013/11/10/hrgn.jpg);
background-repeat:no-repeat;
 background-color:#000000;
  background-position: center top;
     background-size: 100% ;
    }
    a {text-decoration: none;}
 a: hover {text-decoration: underline;}
 a:link {color: #8b0000;} /* nenavštívený link */
a:visited {color: #8b0000;} /* navštívený link */
</style>
 </head>
  <body>
  <?php
   $id = $_SESSION['id'];
    mysql_connect("sql.endora.cz:3313", "kuxik009", "moje heslo") or die("Pravděpodobně se nepodařilo připojit k DB!" . mysql_error());
    mysql_select_db("greece") or die("Pravděpodobně nebyla nalezena databáze!" . mysql_error());
    $query = mysql_query("SELECT * FROM `greece` WHERE `id`='$id'");
    while($result = mysql_fetch_array($query))
   {
    $drachmy = $result['drachmy'];
    $lepta = $result['lepta'];
    $duhovky = $result['duhovky'];
    $konec = $result['konec'];
   $pracujici = $result['pracujici'];
   $hodiny = $result['hodiny'];
   $konec2 = $result['konec2'];
   $pracujici2 = $result['pracujici2'];
   $hodiny2 = $result['hodiny2'];
    }?>
   <font style="font: bold 25px Verdana" color="#000000">Herní menu - práce pro bohy</font>
<font style="font: bold 20px Verdana"><div><a href="index.php">Hlavní stránka</a>
| <a href="game_menu.php"><i>Herní menu</i></a>
| <a href="uzivatel.php?id='.$_SESSION['id'].'">Profil</a>
| <a href="all_users.php">Seznam uživatelů</a>
| <a href="chat.php">Chat pro hráče</a>
| <a href="index.php?action=odhlasit_se">Odhlásit se</a></div></font><hr>
<font color="#0000ff" style="font: bold 25px Verdana">
<?php echo "Drachmy:" . $drachmy . "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lepta:" . $lepta . "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Duhovky:" . $duhovky;?></font><hr>
 <font style="font: bold 22px Verdana" color="#800000">
Při svých toulkách jsi se dostal až k hoře Olymp. Když jsi vystoupal nahoru, všimnul si tě Zeus. "Potřebuji nějakého schopného smrtelníka!" říká. Pomůžeš mu? Pokud ano, za pět hodin práce dostaneš jednu duhovku! Ale pokud práci zrušíš, nedostaneš zaplaceno!
<br><br><br><br><br> </font>
   <form method="POST" action="gg_prace2.php">
    <table border=10 align="center" width=750 height="175" text="align_center">
    <tr>
    <td align="center">
     <font style="font: bold 22px Verdana" color="#800000">
    Pracovat <select name="hodiny"><option value="0" selected disabled>0<option value="5">5 <option value="10">10 <option value="15">15 <option value="20">20 <option value="25">25 </select>hodin <input type="submit" name="ok" value="Pracovat"><br>   
     <?php
    if (isset ($_POST["hodiny"]))
    {
     $hodiny = $_POST["hodiny"]*60*60;
     $cas_ted = Time();
     $cas_konec = $cas_ted + $hodiny;
     mysql_connect("sql.endora.cz:3313", "kuxik009", "moje heslo") or die("Pravděpodobně se nepodařilo připojit k DB!" . mysql_error());
         mysql_select_db("greece") or die("Pravděpodobně nebyla nalezena databáze!" . mysql_error());
         $query = mysql_query("update greece set pracujici2 = 1 where id = $id limit 1;");
       $query = mysql_query("update greece set konec2 = $cas_konec where id = $id limit 1;");
       $query = mysql_query("update greece set hodiny2 = $hodiny where id = $id limit 1;");
    header("Location: gg_prace2.php");
     exit;
    }
    if ($pracujici2 == 1)
        {
         if ($konec2 <= Time())
         {
         $penize = $_POST["hodiny"]/10*2;
         mysql_connect("sql.endora.cz:3313", "kuxik009", "moje heslo") or die("Pravděpodobně se nepodařilo připojit k DB!" . mysql_error());
           mysql_select_db("greece") or die("Pravděpodobně nebyla nalezena databáze!" . mysql_error());
           $query = mysql_query("update greece set pracujici2 = 0 where id = $id limit 1;");
         $query = mysql_query("update greece set konec2 = 0 where id = $id limit 1;");
         $query = mysql_query("update greece set duhovky = $duhovky + $penize where id = $id limit 1;");
         $query = mysql_query("update greece set hodiny2 = 0 where id = $id limit 1;");
         }
        }
    if ($pracujici2 == 1)
     {
     $datum = date("j/n/Y H:i:s", $konec2);
     $datum2 = date("j. n. Y v H:i:s", $konec2);
     ?>
 <script>
var vterina = 1000;
var minuta = vterina * 60;
var hodina = minuta * 60;
var den = hodina * 24;
var rok = den * 365.24219;

var slova = {
    roku: ["rok", "roky", "let"],
    dnu: ["den", "dny", "dnů"],
    hodin: ["hodina", "hodiny", "hodin"],
    minut: ["minuta", "minuty", "minut"],
    vterin: ["vteřina", "vteřiny", "vteřin"]
};

function sklonovani(pocet, co) {
    if (pocet == 1) return slova[co][0];
    if (pocet < 5 && pocet > 0) return slova[co][1];
    return slova[co][2];
}

function odpocet(el) {
    var konec = new Date(el.getAttribute("data-konec"));
    var ted = new Date();
    var rozdil = konec - ted;
    if (rozdil < vterina) {
        el.innerHTML = el.getAttribute("data-hlaska");
        return;
    }
    var zbyva = {
        hodin: Math.floor((rozdil % den) / hodina),
        minut: Math.floor((rozdil % hodina) / minuta),
        vterin: Math.floor((rozdil % minuta) / vterina)
    }

    var vypis = el.getAttribute("data-zbyva");
    for (co in zbyva) {
        var pocet = zbyva[co];
        if (pocet > 0) vypis += " " + pocet + " " + sklonovani(pocet, co);

    }

    el.innerHTML = vypis;
    setTimeout(function() {
      odpocet(el);
    }, vterina);
}
</script>
 
<p id="odpocet" data-konec="<?php echo $datum;?>" data-hlaska="Práce dokončena!" data-zbyva="Do konce práce zbývá:">Do konce práce zbývá:</p>
<script>
  odpocet(document.getElementById('odpocet'));
</script> 
<?php
echo "(končí $datum2)";
}   
?>
</div>
</font>
</td>
</tr>
</table>
    </font>
   </form>
  </p>
  </body>
 </html>

Ještě jednou díky!
Moje portfolio
Český jazyk je freeware, ale nikoliv open source!!!

Sestava:
► Zobrazit spoiler

Uživatelský avatar
Kim Spotcom
Level 3
Level 3
Příspěvky: 580
Registrován: leden 14
Pohlaví: Muž
Stav:
Offline

Re: PhP čas a datum - odčítání

Příspěvekod Kim Spotcom » 12 bře 2014 16:55

Doplnil bych, že tady by bylo více než vhodné, jednotlivé eventy logovat (vložen timer, timer zrušen, trigger proveden(včetně toho, jaká akce ho vyvolala, pokud nejde o realtime event), peníze přesunuty odkud kam)
Nejlepší obrana proti trollům je nereagova na ně.


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • MacBook cas a datum
    od ShadowWord:Pain » 01 říj 2023 19:47 » v Vše ostatní (hw)
    3
    2393
    od petr22 Zobrazit poslední příspěvek
    01 říj 2023 20:16
  • Jak hromadně změnit datum a čas souborů?
    od atari » 11 črc 2023 14:41 » v Programování a tvorba webu
    3
    3500
    od X Zobrazit poslední příspěvek
    14 črc 2023 15:17

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti