Autor Zpráva
pavlat
Profil
Dobrý den potřeboval bych pomom mám script (časovač). který funguje jak má až na to že když dám f5 vypne se a musim znova zadat datum a čas chtěl bych at to běží dokad čas nauplyne a pka se může nastavit novej.

<script type="text/javascript">

// Stop date/time must be after
// current date/time.
function dateDiff(){

// Gets a stop date/time from form 'f'
// Caution: zero validation on input
var f = document.forms['dateFields'];
var s = new Date(
f.Yr.value,
f.Mn.value - 1,
f.Dy.value,
f.Hr.value,
f.Min.value,
f.Sec.value
);

var ele = document.getElementById('result') ||
document.all('result');

var n = new Date();
if (s < n) {
ele.innerHTML = '<b>Událost nastala!!!! Přidejte další</b><br>'
return false;
}

// Diff years
var dyr = s.getFullYear() - n.getFullYear();
s.setFullYear(s.getFullYear() - dyr);
if (s < n) dyr -= 1;

// Diff months
var dmn = (s.getMonth() - n.getMonth() + 12) % 12;
s.setMonth(n.getMonth());
if (s < n) {
s.setMonth(+s.getMonth() + 1);
dmn -=1;
if (dmn < 0) dmn -= -12;
}

var tsec = Math.floor((s.getTime() - n.getTime()) / 1000);
var dsec = Math.floor(tsec % 60);
var dmin = Math.floor(tsec/60 % 60);
var dhr = Math.floor(tsec/3600 % 24);
var ddy = Math.floor(tsec/86400);

ele.innerHTML = 'Zbývá:'
+ ' ' + dyr + ' year' + addS(dyr)
+ ', ' + dmn + ' month' + addS(dmn)
+ ', ' + ddy + ' day' + addS(ddy)
+ ', ' + dhr + ' hour' + addS(dhr)
+ ', ' + dmin + ' minute' + addS(dmin)
+ ', ' + dsec + ' second' + addS(dsec);

setTimeout("dateDiff()", 200);
}

function addS(x) {
return (x != 1)? 's':'';
}

</script>

</head><body>
<form action="" name="dateFields">
<input type="text" size="8" name="Yr" value="2013">Year<br>
<input type="text" size="8" name="Mn" value="06">Month<br>
<input type="text" size="8" name="Dy" value="19">Day<br>
<input type="text" size="8" name="Hr" value="12">Hour<br>
<input type="text" size="8" name="Min" value="00">Min<br>
<input type="text" size="8" name="Sec" value="00">Sec<br>
<input type="button" value="Calc"
onclick="dateDiff()">
<input type="reset">
</form>
Joker
Profil
pavlat:
Musíte si někam uložit to cílové datum. Například do cookie, v moderních prohlížečích do localStorage.
pavlat
Profil
Joker:
Ale to uvidim jen já ne? potřeboval bych aby to viděli všichni.
Joker
Profil
pavlat:
potřeboval bych aby to viděli všichni.
Tak v tom případě se hodnoty musí ukládat a číst ze serveru.
pavlat
Profil
Joker:
A to delam jak?


jsem myslel nějakej externí soubor nebo mysql.
pavlat
Profil
Jak jsem dostanu php promennou aby to fungovala $yr potrebuju ji dostat misto f.Yr.value,

var s = new Date(
f.Yr.value,
f.Mn.value - 1,
f.Dy.value,
f.Hr.value,
f.Min.value,
f.Sec.value
);
honzaik
Profil
na to budeš potřeba použit i něco jinýho než JS, např php
pavlat
Profil
honzaik:
To já vim

mam to takle


<?php
$vypis = mysql_query("SELECT `ac`, `yr`, `mo`, `de`, `hr`, `mi`, `sc` FROM `users` where id=$id"); 
while ($polozka = mysql_fetch_array($vypis)) 
$ac = $polozka["ac"] AND $yr = $polozka["yr"] AND $mo = $polozka["mo"] AND $de = $polozka["de"] AND $hr = $polozka["hr"] AND $mi = $polozka["mi"] AND $se = $polozka["se"];

?>
<script type="text/javascript">

// Stop date/time must be after
// current date/time.
function dateDiff(){

// Gets a stop date/time from form 'f'
// Caution: zero validation on input
var f = document.forms['dateFields'];
var s = new Date(
f.Yr.value,
f.Mn.value - 1,
f.Dy.value,
f.Hr.value,
f.Min.value,
f.Sec.value
);
peta
Profil
Pri zadani noveho data odesles na server datum k ulozeni a v navratove funkci spustis casovac. Javascript ajax. Tohle forum je toho plne, staci vyhledavat. Google je toho plne, staci vyhledavat.
Mozna by mohlo fungovat toto.
<script>
function uloz(s)
{
var img = new Image();
img.src = 'uloz.php?datum=' + s;
}
var s;
s = 0<?php include('nacti.php'); ?> * 1; // nacti pri obnoveni stranky pomoci php
s = s>0 ? s : new Date( ... );
spust_casovas(s);
</script>
0 - pokud php nevrati nic, aby tam byl platny zapis s= 0 * 1;
include('nacti.php'); - include bych pouzil, abych nemusel resit jiny php kod, ale nevim, zda se tak prenesou session, nezkousel jsem to.
Nebo si najsi ajax pres jquery, iframe a pod.
---
V tom kodu nemas jedine echo, ktere by hodnotu nalezenou pomoci SELECT vypsalo do html kodu. Pouze to vse nejak poskladas do promenne $ac.
pavlat
Profil
tak slava.. skoro to je doma...Mam to takel..a chci aby to jelo furt hned jak se stranka nacte at se to spusti ..Poaradite mi?

<script type="text/javascript">

// Stop date/time must be after
// current date/time.
function dateDiff(){

// Gets a stop date/time from form 'f'
// Caution: zero validation on input
var f = document.forms['dateFields'];
var s = new Date("<?php echo $me;?>/<?php echo $de;?>/<?php echo $yr;?> <?php echo $ho;?>:<?php echo $mi;?>:<?php echo $se;?>");

var ele = document.getElementById('result') ||
document.all('result');

var n = new Date();
if (s < n) {
ele.innerHTML = '<b>Událost nastala!!!! Přidejte další</b><br>'
return false;
}

// Diff years
var dyr = s.getFullYear() - n.getFullYear();
s.setFullYear(s.getFullYear() - dyr);
if (s < n) dyr -= 1;

// Diff months
var dmn = (s.getMonth() - n.getMonth() + 12) % 12;
s.setMonth(n.getMonth());
if (s < n) {
s.setMonth(+s.getMonth() + 1);
dmn -=1;
if (dmn < 0) dmn -= -12;
}

var tsec = Math.floor((s.getTime() - n.getTime()) / 1000);
var dsec = Math.floor(tsec % 60);
var dmin = Math.floor(tsec/60 % 60);
var dhr = Math.floor(tsec/3600 % 24);
var ddy = Math.floor(tsec/86400);

ele.innerHTML = 'Zbývá:'
+ '. ' + dyr + addS(dyr) + ':rok' 
+ '. ' + dmn + addS(dmn) + ':měs' 
+ ', ' + ddy + addS(ddy) + ':day'  
+ ', ' + dhr + addS(dhr)  + ':hod'
+ ', ' + dmin + addS(dmin) + ':min' 
+ ', ' + dsec + addS(dsec) + ':s';


setTimeout("dateDiff()", 200);
}

function addS(x) {
return (x != 1)? '':'';
}
_es
Profil
pavlat:
Aký tam má zmysel funkcia addS?
pavlat
Profil
ta pridava za dny roky a mesice s....jako days.....ale to jeste nemam udelany.


Pardon vyreseno... Dekuji vsem za pomoc :-)
peta
Profil
echo sprintf("%s/%s/%s %s:%s:%s",$me,$de,$yr,$ho,$mi,$se);
echo "$me/$de/$yr $ho:$mi:$se";
Osobne mi ale neni jasne, proc si do js neposles primo casove razitko.
pavlat
Profil
Neumim to...


peta:
Pomoch bys mi to vyřešit nějak:
peta
Profil
Tak se tim netrap, pouzij, co umis. Mozna je to lepsi reseni. Ja nic takoveho zatim nepotreboval.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0