Autor Zpráva
Watchick
Profil *
Dobrý den, potřeboval bych poradit s "aktualizací času" mám php script:

$polezahodinu = $_POST['pole1'];
$jehox = $_POST['jehox'];
$jehoy = $_POST['jehoy'];
$mojex = $_POST['mojex'];
$mojey = $_POST['mojey'];
$rozdilx = abs($jehox-$mojex);
$rozdily = abs($jehoy-$mojey);
$vzdalenost = sqrt($rozdily * $rozdily + $rozdilx * $rozdilx);
$cascesty = $vzdalenost * $polezahodinu;
$den = $_POST['den'];
$mesic = $_POST['mesic'];
$rok = $_POST['rok'];
$hod = $_POST['hod'];
$min = $_POST['min'];
$sec = $_POST['sec'];
$datum = "$den $mesic $rok $hod:$min:$sec";
$now = strtotime("now");
$secakce = strtotime($datum);
echo $secakce;echo "<br />";
echo $cascesty;echo "<br />";
echo $now;echo "<br />";
$secdoakce = ($secakce-$cascesty)-$now;
if($secdoakce > 3600){
$konecnahodina = floor($secdoakce/3600);
}else{
$konecnahodina = "00";
}
$secdoakce2 = $secdoakce - ($konecnahodina * 3600);
if($secdoakce2 > 60){
$konecnaminuta = floor($secdoakce2/60);
}else{
$konecnaminuta = "00";
}
$konecnasec = floor($secdoakce2 - ($konecnaminuta * 60));
$konecnedatum = "$konecnahodina:$konecnaminuta:$konecnasec";
if ($secdoakce < 0){ $konecnedatum = "Pozdě!"; }
echo $konecnedatum;

a kdyz to všechno vyjde v pořádku, tak se prostě vypíše, že "odejít z domu" se musí třeba za 00:14:43 ale samozřejmě se to automaticky neaktualizuje, což by bylo vhodné a efektivní... jestli to jde nějak lehce, tak prosím poraďte v JS se opravdu nevyznám Děkuji
Joker
Profil
Watchick
http://skripty.webz.cz/countdown.php?t=1212271200&amp;typ=dhmss
Tam je ten skript vidět.
Je už trochu staršího data, takže by možná šel trochu "modernizovat" :)

Tenhle řádek:
var cil = 1212271200;
vytváří PHP; pomocí echo tam vloží cílový čas, do kterého se odpočítává.

Jeden problém, o kterém vím: počáteční nastavení odpočtu se dělá podle času na serveru, zatímco samotný odpočet se aktualizuje podle času na klientovi, pokud se výrazně liší, po 1. sekundě se výrazně změní i odpočet. Řešitelné tím, že by se přenesl i počáteční čas na serveru a Javascript by pak synchronizoval.
Jen dodám, že zdánlivě nejjednodušší řešení, přenášet jen počet zbývajících sekund, není úplně nejlepší, protože v Javascriptu nějakou dobu trvá vyhodnocování funkcí (v závislosti na rychlosti počítače) a režie, takže podle mých zkušeností se může setTimeout("odpocet()",1000); odchýlit za minutu i o několik sekund.
Samozřejmě někdy ta odchylka nevadí.
Joker
Profil
Jinak mimochodem, celý ten skript countdown.php je navržený jako takové univerzální odpočítávadlo, které se dá vložit do stránky- jen se nastaví cílový čas (timestamp) a typ zobrazení a ono to odpočítává :-)
peta
Profil
Watchick
PHP vygeneruje HTML stranku a az v te funguje JS. Driv ne. V tom pripade je PHP zcela zbytecne davat do fora JS.

jakpsatweb - javascript - datum a cas, viz Joker
Watchick
Profil *
Jo jo, díky :-) takovejhle priklad jsem dlouho hledal a nikde moc nenasel :-) jinak to peta: hele, kdyz se JS načítá z externiho souboru, tak se načte jako přesně do bodu kam dam ten <link ...>, a nebo na začátek? protože jestli tam můžu nechat to <?php echo $cascesty; ?> a dávat to přes <link>, nebo to tam postě načítat pomocí phpčkovýho include?
Fojcek
Profil
Potreboval bych neco podobneho, ale staci kdyz to bude odpocitavat jen sekundy. Skript ze zmineneho linku mi nefunguje, hledam neco jednodussiho. Nevite nekdo o necem?
Joker
Profil
Fojcek
Potreboval bych neco podobneho, ale staci kdyz to bude odpocitavat jen sekundy.
Stačí si jednoduše upravit ten můj skript (z odkazu výše). Ten dělá vpodstatě to, že vypočítá rozdíl v sekundách a pak to přepočítává na vyšší jednotky. Když ten přepočet vymažete a vypíšete jen proměnnou diff, máte to, co chcete.

Skript ze zmineneho linku mi nefunguje
Ale funguje. Akorát odpovídáte do čtyři měsíce starého vlákna a ten skript odpočítával čas zbývající do 1.6.2008, takže dneska to píše, že čas už uplynul.
Když tam nastavíte nějaký čas pozdější než dneska, bude to fungovat.

hledam neco jednodussiho
Když ten skript triviálními úpravami (změna slovy DVOU řádků a jinak jen vymazávání) upravíte, aby odpočítával jen sekundami a používal k získání prvku jen document.getElementById (čímž teda obětujete podporu pro IE4 a možná IE5, teď si nejsem jistý), dostanete se celkem na 19 řádků, včetně dvou prázdných "oddělovacích".

Pokud nepotřebujete delší a popisný kód, můžete ten samý skript přepsat na 9 řádků formátovaného kódu.
Co jednoduššího ještě chcete?

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