Autor | Zpráva | ||
---|---|---|---|
undisputed Profil |
#1 · Zasláno: 21. 5. 2011, 08:09:24
Ahojte,
Nemáte niekto skript na odpočet na určitú hodinu resp.dátum?hľadám po googli a stále nič normálne neviem nájsť |
||
radas Profil * |
#2 · Zasláno: 21. 5. 2011, 08:18:54
určitě když to tu dam, tak někdo napiše že je to eunuch..
<style type="text/css"> ins{text-decoration:none;} </style> <p>Do prvního data zbývá <ins id="jedna" datetime="5 17 2011 20:00:00 GMT"></ins></p> <script type="text/javascript"> <!-- //predelavka http://www.geocities.com/SiliconValley/Lakes/8620/countdown.html function toSt(n){ var s=''; if(n<10){s+='0';} return s+n.toString(); } function odpocet(kde){ var co=document.getElementById(kde).getAttribute('datetime'); var kdy=new Date(co); var ted=new Date(); var jedu=Math.floor((kdy.getTime()-ted.getTime())/1000); var den,hodin,minut,sekund; if(jedu<=0){ document.getElementById(kde).innerHTML='je to tu'; return; } var sec=toSt(jedu%60); jedu=Math.floor(jedu/60); var min=toSt(jedu%60); jedu=Math.floor(jedu/60); var hod=toSt(jedu%24); jedu=Math.floor(jedu/24); var dnu=jedu; if(sec==1){sekund=' sekunda';} else if(sec==2||sec==3||sec==4){sekund=' sekundy';} else{sekund=' sekund';} if(min==1){minut=' minuta';} else if(min==2||min==3||min==4){minut=' minuty';} else{minut=' minut';} if(hod==1){hodin=' hodina';} else if(hod==2||hod==3||hod==4){hodin=' hodiny';} else{hodin=' hodin';} if(dnu==1){den=' den';} else if(dnu==2||dnu==3||dnu==4){den=' dny';} else{den=' dnů';} if(dnu==0){ var tmp=' '+hod+hodin+', '+min+minut+', '+sec+ sekund; } else var tmp=' '+dnu+den+', '+hod+hodin+', '+min+minut+', '+sec+ sekund; document.getElementById(kde).innerHTML=tmp; setTimeout("odpocet('"+kde+"')", 500); } function init(){ odpocet('jedna'); } window.onload=init; // --> </script> |
||
okolojdouci Profil * |
#3 · Zasláno: 21. 5. 2011, 08:36:27
radas:
„určitě když to tu dam, tak někdo napiše že je to eunuch“ Nemyslím :-) Spíš bych řekl, že jestli nevysvětlíš, cos tím myslel, nikdo to nepochopí. |
||
undisputed Profil |
#4 · Zasláno: 21. 5. 2011, 08:53:07
Aj tak mi to nejak nefunguje,ukáže mi len "do prvého data zbyva"
|
||
undisputed Profil |
#5 · Zasláno: 21. 5. 2011, 12:06:10
*edit už mi to funguje
ale chcel by som sa spýtať či sa k času dá pripočítať nejaký ďalší čas ide to?napr. mám toto teda <style type="text/css"> ins{text-decoration:none;} </style> <?php $today = date("n j Y H:i:s"); echo "<p>Do konca času ostáva <ins id='jedna' datetime='$today'></ins></p>"; ?> <script type="text/javascript"> <!-- //predelavka http://www.geocities.com/SiliconValley/Lakes/8620/countdown.html function toSt(n){ var s=''; if(n<10){s+='0';} return s+n.toString(); } function odpocet(kde){ var co=document.getElementById(kde).getAttribute('datetime'); var kdy=new Date(co); var ted=new Date(); var jedu=Math.floor((kdy.getTime()-ted.getTime())/1000); var den,hodin,minut,sekund; if(jedu<=0){ document.getElementById(kde).innerHTML='je to tu'; return; } var sec=toSt(jedu%60); jedu=Math.floor(jedu/60); var min=toSt(jedu%60); jedu=Math.floor(jedu/60); var hod=toSt(jedu%24); jedu=Math.floor(jedu/24); var dnu=jedu; if(sec==1){sekund=' sekunda';} else if(sec==2||sec==3||sec==4){sekund=' sekundy';} else{sekund=' sekúnd';} if(min==1){minut=' minuta';} else if(min==2||min==3||min==4){minut=' minúty';} else{minut=' minút';} if(hod==1){hodin=' hodina';} else if(hod==2||hod==3||hod==4){hodin=' hodiny';} else{hodin=' hodín';} if(dnu==1){den=' den';} else if(dnu==2||dnu==3||dnu==4){den=' dni';} else{den=' dní';} if(dnu==0){ var tmp=' '+hod+hodin+', '+min+minut+', '+sec+ sekund; } else var tmp=' '+dnu+den+', '+hod+hodin+', '+min+minut+', '+sec+ sekund; document.getElementById(kde).innerHTML=tmp; setTimeout("odpocet('"+kde+"')", 500); } function init(){ odpocet('jedna'); } window.onload=init; // --> </script> No a aby začalo odpočítavať premennú today + niečo napr. z DB vybraté išlo by to? |
||
Witiko Profil |
#6 · Zasláno: 21. 5. 2011, 17:08:06 · Upravil/a: Witiko
undisputed:
Jak koukám na kód, tak by mělo stačit vytvořit si libovolný jiný element, do atributu datetime mu vložit ten druhý čas a ve funkci init zavolat odpocet(id elementu). V kódu dole ukazuji jak. Trochu jsem to přepsal a navrhuji následující podobu, ve které jsem odstranil mírně nesmyslný setTimeout každých 500ms, stále opětovné získávání známých pointerů a Date objektů, dvojité deklarace proměnných, nepotřebné deklarace proměnných, ignoraci existence metody Date.now a terárních operátorů: <script type="text/javascript"> function toSt(n){ return (n<10 ? "0" : "") + n; }; function odpocet(kde, kdy){ var ted = Date.now ? Date.now() : (new Date).getTime(), jedu = Math.floor((kdy.getTime() - ted) / 1000), den, hodin, minut, sekund, sec, min, hod, dnu; if(jedu <= 0) return !(kde.innerHTML = "je to tu"); sec = jedu % 60 >>> 0; jedu /= 60; min = jedu % 60 >>> 0; jedu /= 60; hod = jedu % 24 >>> 0; jedu /= 24; dnu = jedu >>> 0; if(sec === 1) sekund = " sekunda"; else if(sec > 1 && sec <= 4) sekund = " sekundy"; else sekund = " sekúnd"; if(min === 1) minut= " minuta"; else if(min > 1 && min <= 4) minut = " minúty"; else minut = " minút"; if(hod === 1) hodin = " hodina"; else if(hod > 1 && hod <= 4) hodin = " hodiny"; else hodin = " hodín"; if(dnu === 1) den = " den"; else if(dnu > 1 && dnu <= 4) den = " dni"; else den = " dní"; sec = toSt(sec); min = toSt(min); hod = toSt(hod); kde.innerHTML = (dnu ? " " + dnu + den + ", " : "") + hod + hodin + ", " + min + minut + ", " + sec + sekund; }; window.onload = function() { var jedna = [document.getElementById("jedna"),,], dva = [document.getElementById("dva"),,], obnov = function() { odpocet.apply(this, jedna); odpocet.apply(this, dva); }; jedna[1] = new Date(jedna[0].getAttribute("datetime")); dva[1] = new Date(dva[0].getAttribute("datetime")); obnov(); setInterval(obnov, 1000); }; </script> <ins id="jedna" datetime="October 13, 2012 11:13:34"></ins><br> <ins id="dva" datetime="December 25, 2011 16:52:12"></ins> |
||
undisputed Profil |
#7 · Zasláno: 21. 5. 2011, 18:30:10
No moc tomu nerozumiem,js nepoznám prakticky vôbec.,ale myslím že by stačilo len do premennej uložiť ten výsledný čas a ten spušťať ale ako sa to dá pripočítať k tomu?a btw skript mi tento nejde
|
||
Witiko Profil |
#8 · Zasláno: 21. 5. 2011, 18:39:39 · Upravil/a: Witiko
undisputed:
Skript jsem odzkoušel a samozřejmě funguje, koneckonců jde jen o mírný přepis toho tvého pro vyšší efektivitu. Jen musíš php scriptem generovat datum ve správném formátu. Ve stejném v jakém ho generuješ ve svém příkladu. |
||
Witiko Profil |
#9 · Zasláno: 21. 5. 2011, 18:55:18 · Upravil/a: Witiko
EDIT: Původně jsem v tom scriptu použil tag span, u něhož se Internet Exploreru nezamlouvala nesmyslná definice atributu datetime. Nyní už by měl příklad fungovat.
|
||
undisputed Profil |
#10 · Zasláno: 21. 5. 2011, 21:06:28
Neviem prečo mi to zase nejde ale to nevadí,ten úplne prvý mi ide.ale stale som nedostal odpoveď ako mám pripočítať k aktuálnemu času napr 10minút
|
||
Witiko Profil |
#11 · Zasláno: 21. 5. 2011, 21:40:19
undisputed:
Odpověděl jsem ti na to už několikrát. Navrať si php scriptem nový ins tag s časem o 10 minut víc a pak stačí zavolat funkci odpocet s novým id. |
||
undisputed Profil |
#12 · Zasláno: 22. 5. 2011, 08:00:17
Áno tomu chápem ale ako mám spraviť aby tam bolo o 10 minút viac neviem,chápete?mám aktuálny čas v premennej a k tomu nejak pripočítať tie minúty
|
||
Witiko Profil |
#13 · Zasláno: 22. 5. 2011, 10:48:22 · Upravil/a: Witiko
undisputed:
Asi má jít o otázku ohledně php. Odkážu na manuál k funkci date, jako druhý argument stačí dodat pozměněný timestamp. Mám pocit, že ho php počítá v sekundách, takže by mělo stačit přičíst 600. $today = date("n j Y H:i:s", time()); $tomorrow = date("n j Y H:i:s", time() + 86400); $toyota = date("n j Y H:i:s", time() + 86400 * 2); |
||
undisputed Profil |
#14 · Zasláno: 22. 5. 2011, 13:05:37
no funguje to,môžem pripočítať koľko chcem, len problém je že keď obnovím stránku tak odpočet ide zase od začiatku nie odtiaľ kde skončil, nedá sa to nejak spraviť?
|
||
Witiko Profil |
#15 · Zasláno: 22. 5. 2011, 13:10:08 · Upravil/a: Witiko
undisputed:
Co chceš na tom spravovat, to je snad logické a očekávané chování, ne? Při znovunačtení stránky php skript vygeneruje nový čas na základě aktuálního času tak, jak jej navrací funkce time() či date buz přídavných argumentů. Pakliže chceš odpočítávat k nějakému napevno danému datu, tak ho tomu scriptu budeš muset nastavit. Moderace: Navrhuju přesun do sekce PHP. :-) |
||
undisputed Profil |
#16 · Zasláno: 22. 5. 2011, 13:28:47
Presunúť sa to môže :-)
k téme, no hej je to ligické, ale nedá sa to nejak aby to nešlo stále odznova? možno to číslo odpočítavané uložiť do DB a každú sekundu ho do db update-ovať o 1 menej, ale to by išlo asi len cez cron :( |
||
Witiko Profil |
#17 · Zasláno: 22. 5. 2011, 13:59:05 · Upravil/a: Witiko
undisputed:
A méně efektivní způsob už tě nenapadl? Co třeba si aktuální čas + X minut uložit do $_SESSION pro daného návštěvníka a při další návštěvě stránky datum vytáhnout z ní? session_start(); if(!isSet($_SESSION["cas"]) $_SESSION["cas"] = time() + XYZ; $cas = $_SESSION["cas"]; |
||
undisputed Profil |
#18 · Zasláno: 22. 5. 2011, 14:44:36
No ale to mi žiaden problém nerieši :) takto tiež keď obnovím stránku sa to začne odznova a odznova
|
||
Witiko Profil |
#19 · Zasláno: 22. 5. 2011, 15:40:38 · Upravil/a: Witiko
Jistěže to problém řeší, generuj date() za pomocí timestampu ze session.
|
||
undisputed Profil |
#20 · Zasláno: 22. 5. 2011, 16:16:51
Radšej to necháme tak..našiel som na googli odpočet aký som chcel takže už mi to netreba.
|
||
undisputed Profil |
#21 · Zasláno: 24. 5. 2011, 12:57:03
No predsa len som si tu uložil do session :)
<style type="text/css"> ins{text-decoration:none;} </style> <?php session_start(); $today = date("n j Y H:i:s"); echo $today; $toyota = date("n j Y H:i:s", time() + 8000); if(!isset($_SESSION['cas'])) { $_SESSION['cas']=$toyota; } else { echo "už existuje"; } $sess=$_SESSION['cas']; echo "<p>ostáva <ins id='jedna' datetime='$sess'</ins></p>"; echo $_SESSION['cas']; ?> <script type="text/javascript"> <!-- //predelavka http://www.geocities.com/SiliconValley/Lakes/8620/countdown.html function toSt(n){ var s=''; if(n<10){s+='0';} return s+n.toString(); } function odpocet(kde){ var co=document.getElementById(kde).getAttribute('datetime'); var kdy=new Date(co); var ted=new Date(); var jedu=Math.floor((kdy.getTime()-ted.getTime())/1000); var den,hodin,minut,sekund; if(jedu<=0){ document.getElementById(kde).innerHTML='je to tu'; return; } var sec=toSt(jedu%60); jedu=Math.floor(jedu/60); var min=toSt(jedu%60); jedu=Math.floor(jedu/60); var hod=toSt(jedu%24); jedu=Math.floor(jedu/24); var dnu=jedu; if(sec==1){sekund=' sekunda';} else if(sec==2||sec==3||sec==4){sekund=' sekundy';} else{sekund=' sekúnd';} if(min==1){minut=' minuta';} else if(min==2||min==3||min==4){minut=' minúty';} else{minut=' minút';} if(hod==1){hodin=' hodina';} else if(hod==2||hod==3||hod==4){hodin=' hodiny';} else{hodin=' hodín';} if(dnu==1){den=' den';} else if(dnu==2||dnu==3||dnu==4){den=' dni';} else{den=' dní';} if(dnu==0){ var tmp=' '+hod+hodin+', '+min+minut+', '+sec+ sekund; } else var tmp=' '+dnu+den+', '+hod+hodin+', '+min+minut+', '+sec+ sekund; document.getElementById(kde).innerHTML=tmp; setTimeout("odpocet('"+kde+"')", 1000); } function init(){ odpocet('jedna'); } window.onload=init; // --> </script> Ale dalo by sa tam niekde vopchať že ak sa čas odpočíta na 0 tak aby update-ol mysql? |
||
undisputed Profil |
#22 · Zasláno: 24. 5. 2011, 13:05:43
popr. aj kde dať aby po skončení sa zrušila session
diky moc |
||
Časová prodleva: 13 let
|
0