Autor | Zpráva | ||
---|---|---|---|
Sheena Profil * |
#1 · Zasláno: 14. 3. 2011, 17:48:07
Dobrý den,
potřebovala bych poradit. Protože nevím, jak to popsat, uvedu nějaký příklad: Mám na stránce obrázek (případně odkaz) a vedle toho číslo 10. to číslo se postupně zmenšuje (např. za hodinu už tam bude 7) ale po kliknutí na obrázek se zase vrátí na 10 a tohle pomalé "odpočítávání" začne znova. Prosím, pokud někdo víte, jak to udělat, můžete mi sem napsat zdrojový kód příp. i s vysvětlením? Označila bych se v js a php za začátečníka. Sice se v tom jakž takž orientuju, ale radši si to nechám vysvětlit. Předem děkuji za odpověď :) |
||
Louka Profil |
#2 · Zasláno: 14. 3. 2011, 20:42:22
Smím se zeptat, zda ta stránka bude pořád otevřená (stačí JS) nebo chceš i ukládání toho odpočtu, aby se "odpočítávalo" i když na té stránce nebudeš a přijdeš tam dejme tomu za 3 hodiny...?
Pakliže 1): <script type="text/javascript"> var t = 10; var tick = 1000*60*20; function zmenaT() { t--; document.getElementById("cislo").innerHTML = t; } window.setInterval("zmenaT();", tick); </script> <img src="..." alt="..." onclick="javascript: t = 11; zmenaT();" /> <div id="cislo">10</div> Nevím, jak moc to bude fungovat, nemám čas to testovat. Zkušenější kolegové poradí :). |
||
Sheena Profil * |
#3 · Zasláno: 14. 3. 2011, 20:49:48
Louka:
No potřebovala bych aby to fungovalo i když jí zavřu a přijdu třeba za hodinku, dvě (aby se to pořád odpočítávalo :) ) |
||
Sheena Profil * |
#4 · Zasláno: 14. 3. 2011, 21:06:41
Louka:
Jinak script funguje bez problémů, ale jak říkám, potřebovala bych, aby to mělo 'pamatováka'. :) |
||
Louka Profil |
#5 · Zasláno: 14. 3. 2011, 21:30:22 · Upravil/a: Louka
Já to tušil :D...
PHP Cookie si nastuduj (google)... Mě nenapadá nic lepšího než <?php if (!$_COOKIE['odpocet_start']) { // není-li cookie, uděláme ho (hned po příchodu na stránku) // => když není, musí to být první přístup (nebo někdo smazal cookie, ale tomu se bez DB nevyhneš) setcookie("odpocet_start", microtime()); // UNIXový čas, kdy byla přesně desítka Header("Location: $_SERVER['PHP_SELF']"); // snad refresh } else { $rozdil = microtime() - $_COOKIE['odpocet_start']; // snad rozdíl od desítky a teďka = kolik ms uběhlo od prvího spuštění $ticknuti = 0; while ( ($rozdil2=($rozdil-1000*20*60)) > 0 ) { $ticknuti++; }// kolikrát už se tiklo, a navíc v $rozdil2 by měl být zbývající čas do dalšího ... echo "<script type=\"text/javascript\">var tick_force = $rozdil2; var ticknuti_hotovo = $ticknuti;</script>"; // uložím do JS interval k dalšímu ticknutí a počet uběhlých } ?> <script type="text/javascript"> var t = 10; var tick = 1000*60*20; document.getElementById("cislo").innerHTML = (10-ticknuti_hotovo); // měl by updatovat číslo v divu hned po zahájení vypočteným číslem (odečte se počet uběhlých) function zmenaT() { t--; tick = 1000*60*20; // tady změním interval zase na normální hodnotu document.getElementById("cislo").innerHTML = t; window.setTimeout("zmenaT();", tick); } window.setTimeout("zmenaT();", tick_force); // tick_force je proměnná vypsana přes PHP kde by mělo být počáteční hodnota do další změny čísla (snad) </script> <img src="..." alt="..." onclick="javascript: t = 11; zmenaT();" /> <div id="cislo">10</div> // EDIT: logicky se ten soubor ted musí jmenovat *.php a musíš ho spouštět na serveru (local či jinde), ale není to klasická stránka co si pustíš doma jen tak v prohlížeči |
||
Sheena Profil * |
#6 · Zasláno: 14. 3. 2011, 21:49:00
Louka:
No teda ... to sem nečekala :D pokusím se tím nějak prokousat a pochopit to. Jinak snad nebude problém, že mám tu stránku na free hostingu (www.ic.cz) - php5 to prý podporuje. A ještě jeden dotaz: dá se na to nějak odkázat, nebo to musí být vypsané na webu? respektive jestli je to možné uložit zvlášť do souboru, a tam kde to má být na stránce pak dát jenom příslušný "odkaz". něco jako když je javascript načtený pomocí <script src="neco_nekde_jinde.js"></script> :) |
||
Louka Profil |
#7 · Zasláno: 14. 3. 2011, 22:04:30
Sheena:
Taky jsem to nečekal. Kousej, chápej, snad tam není moc chyb. IC.cz problém není. Odkázat? Dá, adresou :D. Vypsané na webu... Jde ti o to aby když člověk zobrazí zdrojový kód, tak aby neviděl to <?php ... ?> předpokládám...? To se nezobrazí stejně, jen to co je v <script> a to neskryješ. To co je ve <script> můžeš tahat <script src="bla.js"></script> ale je to zbytečnost! Jestli ti jde o to, oddělit od toho PHP, tak ho ulož do externího souboru bla.php a pak napiš <?php include("bla.php"); ?> ale být tebou tak to nedělám (mám pocit že jak jsem to napsal (mám na mysli ten zdroj nahoře), tak by to nemuselo fungovat - tuším problém s $_SERVER['PHP_SELF']) Závěr: Zkus to a uvidíš co budeš chtít ještě vylepšovat, ale prozatím to nerozsekávej a nech to takhle, ať máš (doufejme) aspoň 1 stable verzi :D... Nejsem PHP profík ve smyslu odpočítávadel a pamatovákem, tak neručím za funkčnost/efektivitu ani nic jinýho. Můžeš se modlit aby sem přišel nějakej borec a napsal lepší verzi :P... |
||
Sheena Profil * |
#8 · Zasláno: 14. 3. 2011, 22:15:38
Louka:
Já to "skovávání" dělám spíše z důvodu, že většinu těhle "blbinek navíc" mám na jedná stránce vícekrát, a mám to jako takovou menší kličku, jak se vyhnout chybám (lépe řečeno jak si pomoct s opravou chyb :D ) .. a také proto, že se sama nevyznám ve vlastním zdrojáku :D Přijde mi to rozškatulkované přehlednější :D |
||
Sheena Profil * |
#9 · Zasláno: 14. 3. 2011, 22:27:32
Louka:
A jestli ještě můžu mít takovej hodně hodně stupidní dotaz... ( :D ) Kam mám/můžu/nemůžu do toho tvého php zápisu něco dopsat? Upřímně to je důvod, proč jsem nikdy nepochopila příklady v knížkách, nikdy nevím, co z toho mám opsat a co ne :D Potřebuju to vysvětlit trošku polopatě :D |
||
Louka Profil |
#10 · Zasláno: 14. 3. 2011, 22:34:22 · Upravil/a: Louka
Aha jo hele tohle te bude zajimat :D: ten kod kde se tvori cookie musi byt uplne nahore ve zdroji - i pred hlavickou a pred <html>...
Tzn kdyz to mas ve strance tak misto echo "..." napis $ret = "..." a pak primo v implenebtaci ve strance napis echo $ret - kapis to :P? // php s cookie <html> ... <?php echo $ret; ?> <script> // ty funkce </script> </html> Do toho ext scriptu to zkus dat tim include() ale myslim ze by se to muselo kapku poopravit (misto PHP SELF by tam muselo bejt neco jinyho, asi HTTP_HOST ale nejsem si jistej) // EDIT: zkusil bych $_SERVER['REQUEST_URI'] |
||
Louka Profil |
#11 · Zasláno: 14. 3. 2011, 22:42:05
No jde o to, co "neco" tam chces dopisovat :D...
|
||
Sheena Profil * |
#12 · Zasláno: 14. 3. 2011, 22:43:36
Louka:
No teoreticky, když teď tenhle kód zkopíruju k sobě na web, odmažu co je ten oranžovej text za // a doplním ten obrázek, tak to má fungovat? :D Protože mě to nefunguje, ale je dost možné, že to dělám blbě :D |
||
Louka Profil |
#13 · Zasláno: 14. 3. 2011, 22:48:13
Ne je taky dost mozny ze je to blbe napsany :D... hele zejtra to pustim u sebe a mrknu se na to - doufam ze to tolik nespecha...
Jako ani bys ten oranzovej mazat nemusela. Pro info: co ti to pise za chybu (jestli neco)? |
||
Sheena Profil * |
#14 · Zasláno: 14. 3. 2011, 22:53:12
Louka:
Jasně, nespěchá to, mám ve škole tejden prázdniny takže mám čas než to budu mít přinést (je to úkol do školy ... ne celý, většina byla v html a css, v tom se vyznám docela dost, ale v tomhle ne :D ) Tak chybu mi to nepíše, spíš mám bílou stránku (bohužel, s takovou chybou jsem se ještě nesetkala, takže bližší popis nemám :D) |
||
Louka Profil |
#15 · Zasláno: 14. 3. 2011, 22:55:30
Ok. Zitra. Mozna by pichnul link na ty stranky.
OT: Prazdniny ti zavidim, me uz skoncily. |
||
Sheena Profil * |
#16 · Zasláno: 15. 3. 2011, 11:40:11
jo, taky mě to napadlo :D no má to býr tady http://www.celtichorses.ic.cz/chairoi.html (respektive u ostatní 'koní' )
je to moje vlastní stránka, zakládala jsem to už nějak 2007. ve škole nám jenom řekly že během prázdnin máme něco udělat (nějakej rádoby projekt), prý si máme poradit (neřekly nic o tom, že se nesmíme zeptat :D ), no a já jsem se rozhodla obnovit svou stranou stránku. takže jsem si udělala layout (to je v podstatě jediný co umím :D ) a něco jsem sesmolila i v obsahu, ale moc ne no. A tohle by se mi docela hodilo - protože to nechci jenom do školy, když už to dělám tak bych to chtěla trošku funkčně a nechám si to, jestli mi rozumíš. už kvůly tomu lay-i to nebudu pak zase mazat. :D |
||
Sheena Profil * |
#17 · Zasláno: 15. 3. 2011, 11:41:15
jej - být, ostatních ... :D
u těch obrázků co tak úplně nefungujou dole :D |
||
Louka Profil |
#18 · Zasláno: 15. 3. 2011, 20:16:43 · Upravil/a: Louka
Zdarec, tohle by MĚLO fungovat...
<?php error_reporting(0); if ( $_GET['restart'] == 1 ) { setcookie("odpocet_start", "", time()-3600); Header("Location: /"); } if (!$_COOKIE['odpocet_start']) { // není-li cookie, uděláme ho (hned po příchodu na stránku) // => když není, musí to být první přístup (nebo někdo smazal cookie, ale tomu se bez DB nevyhneš) setcookie("odpocet_start", microtime(true)); // UNIXový čas, kdy byla přesně desítka Header("Location: /"); // snad refresh } else { $rozdil = microtime(true) - $_COOKIE['odpocet_start']; // snad rozdíl od desítky a teďka = kolik ms uběhlo od prvího spuštění $ticknuti = 0; while ( ($rozdil2=($rozdil-=20*60)) > 0 ) { $ticknuti++; }// kolikrát už se tiklo, a navíc v $rozdil2 by měl být zbývající čas do dalšího ... $ret = (-1)*$rozdil2. ", $ticknuti"; // uložím do JS interval k dalšímu ticknutí a počet uběhlých } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <meta http-equiv="Content-Language" content="cs"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link href="favicon.png" rel="icon" type="image/png" /> <link rel="stylesheet" href="csstab.css" type="text/css"> <title>Celtic Horses</title> </HEAD> <BODY BGCOLOR="#1A1A1A" > <script type="text/javascript"> var t = 10; var tick = 1000*60*20; function init(tick_force, hotovo) { var x = document.getElementById('x'); alert(x); x.innerHTML = "<p>" + (t-hotovo) + "</p>"; window.setTimeout("zmenaT();", tick_force*100); } function zmenaT() { t--; tick = 1000*60*20; document.getElementById('x').innerHTML = "<p>" + t + "</p>"; } init(<?php echo $ret; ?>); window.setInterval("zmenaT();", tick); </script> <CENTER> <br> <font face="Verdana" color="#B99400" size="2"><b>Chairoi Yuki</b></font> <br><br> <table style="float: center; width: 400; background: #2A2A2A; background-image: none; image-align: center; border: none; " > <tr> <td> <a href="#" onclick="javascript: window.location='index.php?restart=1';"><img src="chairoi.jpg" onmouseover="this.src = 'chairoi2.jpg';" onmouseout="this.src = 'chairoi.jpg';" height="250" border="0" /></a> <td> <table style="float: center; text-align: center; image-align: center; border: none;"> <tr> <td> <p align="center"><font size="2">Plemeno</font></p> </td> <td> <p align="center"><font color="#4B8700" size="2">Appaloosa<font></p> </td> </tr> <tr> <td> <p align="center"><font size="2">Ročnik</font></p> </td> <td> <p align="center"><font color="#4B8700" size="2">2008</font></p> </td> </tr> <tr> <td> <p align="center"><font size="2">Otec</font></p> </td> <td> <p align="center"><font color="#4B8700" size="2">Poker Dream<font></p> </td> </tr> <tr> <td> <p align="center"><font size="2">Matka</font></p> </td> <td> <p align="center"><font color="#4B8700" size="2">Fanny</font></p> </td> </tr> <tr> <td> <p align="center"><font size="2">Potomci</font></p> </td> <td> <p align="center"><font color="#4B8700" size="2"></font></p> </td> </tr> <tr> <td> <p align="center"><font size="2">Celkem</font></p> </td> <td> <p align="center"><font color="#4B8700" size="2"><span id="x">10</span>.000kk</font></p> </td> </tr> </tbody> </table> </td> </table> <br> <img border="0" onClick="alert('Hotovo')" src="kartac.png" width="25" hight="25" title="Čistit koně" > <img border="0" onClick="alert('Nakrmeno')" src="krmeni.png" width="25" hight="25" title="Nakrmit koně" > <img border="0" onClick="alert('Moc chutnalo')" src="pamlsek.png" width="25" hight="25" title="Pamlsek" > <BR><BR> Zaměřen na Reining <BR><BR><BR><BR> <script type="text/javascript"> /* <![CDATA[ */ function showHidePage(pageName) { objekt=pageName.getElementsByTagName("DIV")[0]; if (objekt.style.display=="block") {objekt.style.display="none";} else {objekt.style.display="block";} } document.writeln("<style type=\"text/css\">.vnitrni{display:none;}</style>"); /* ]]> */ </script> <div onclick="showHidePage(this);"> <font face="Verdana" color="#B99400">Reining</font> <div class="vnitrni"> 1. misto - Fast Western - Reining - On mi Own </div></div> <br> <div onclick="showHidePage(this);"> <font face="Verdana" color="#B99400">Ostatni ... Oceněni</font> <div class="vnitrni"> 4. misto - Venku i v zimě - Rainbow </div> </CENTER> </BODY> </HTML> Ale: nechápu proč, selhává funkce getElementById() - jinak by to mělo jet v pohodě, ale prostě tam jak je alert(x) by to mělo vyhodit nějakou definici a on vyhodí null, takže pak nepřenastaví obsah toho pole.... nechápu to! Závěr: Přijdeš-li na to jak rozchodit getElementById() nebo půjde-li ti to rovnou, ten skript by měl jet v pohodě. Když ho chceš pustit znova, klikni na obrázek :P. // EDIT: Nahraď Header("Location: /"); => místo / tam bude název stránky co to pouští (chairoi.php,...) |
||
Sheena Profil * |
#19 · Zasláno: 15. 3. 2011, 22:19:08
Louka:
Jé, dík moc!!! Hned to odzkouším, co to udělá. Ale v každém případě děkuju moc že si se s tim chtěl vůbec babrat :D Určitě dám vědět, jak to jde :) |
||
Sheena Profil * |
#20 · Zasláno: 17. 3. 2011, 15:55:01
Tak nevím, co dělám blbě.
<?php error_reporting(0); if ( $_GET['restart'] == 1 ) { setcookie("odpocet_start", "", time()-3600); Header("Location: chairoi.php"); } if (!$_COOKIE['odpocet_start']) { setcookie("odpocet_start", microtime(true)); Header("Location: chairoi.php"); } else { $rozdil = microtime(true) - $_COOKIE['odpocet_start']; $ticknuti = 0; while ( ($rozdil2=($rozdil-=1*60)) > 0 ) { $ticknuti++; } $ret = (-1)*$rozdil2. ", $ticknuti"; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <meta http-equiv="Content-Language" content="cs"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link href="favicon.png" rel="icon" type="image/png" /> <link rel="stylesheet" href="css.css" type="text/css"> <title>Celtic Horses</title> </HEAD> <BODY BGCOLOR="#1A1A1A" > <script type="text/javascript"> var t = 100; var tick = 1000*60*1; function init(tick_force, hotovo) { var x = document.getElementById('cislo'); alert(x); x.innerHTML = "<p>" + (t-hotovo) + "</p>"; window.setTimeout("zmenaT();", tick_force*100); } function zmenaT() { t--; tick = 1000*60*1; document.getElementById('cislo').innerHTML = "<p>" + t + "</p>"; } init(<?php echo $ret; ?>); window.setInterval("zmenaT();", tick); </script> <CENTER> <br> <font face="Verdana" color="#B99400" size="2"><b>Chairoi Yuki</b></font> <br><br> <table style="float: center; width: 400; background: #2A2A2A; background-image: none; image-align: center; border: none; " > <tr> <td> <a href="http://9653122237r.rajce.idnes.cz/Chairoi_Yuki/" ><img src="chairoi.jpg" onmouseover="this.src = 'chairoi2.jpg';" onmouseout="this.src = 'chairoi.jpg';" height="250" border="0" /></a> <td> <table style="float: center; text-align: center; image-align: center; border: none;"> <tr> <td> <p align="center"><font size="2">Plemeno</font></p> </td> <td> <p align="center"><font color="#4B8700" size="2">Appaloosa<font></p> </td> </tr> <tr> <td> <p align="center"><font size="2">Ročnik</font></p> </td> <td> <p align="center"><font color="#4B8700" size="2">2008</font></p> </td> </tr> <tr> <td> <p align="center"><font size="2">Otec</font></p> </td> <td> <p align="center"><font color="#4B8700" size="2">Poker Dream<font></p> </td> </tr> <tr> <td> <p align="center"><font size="2">Matka</font></p> </td> <td> <p align="center"><font color="#4B8700" size="2">Fanny</font></p> </td> </tr> <tr> <td> <p align="center"><font size="2">Potomci</font></p> </td> <td> <p align="center"><font color="#4B8700" size="2"></font></p> </td> </tr> <tr> <td> <p align="center"><font size="2">Celkem</font></p> </td> <td> <p align="center"><font color="#4B8700" size="2">10.000kk</font></p> </td> </tr> </tbody> </table> </td> </table> <br> <table style="float: center; background-image: none; image-align: center; border: none; width: 25%;" > <tr> <td> <font size="2" color="white" ><span id="cislo" >100</span></font> </td> <td> % </td> <td> <img src="http://celtichorses.ic.cz/sklad/krmeni.png" border="0" width="25" title="Nakrmit koně" onclick="javascript: window.location='index.php?restart=1';" /> </td> </tr> </table> <BR><BR><BR><BR> <script type="text/javascript"> /* <![CDATA[ */ function showHidePage(pageName) { objekt=pageName.getElementsByTagName("DIV")[0]; if (objekt.style.display=="block") {objekt.style.display="none";} else {objekt.style.display="block";} } document.writeln("<style type=\"text/css\">.vnitrni{display:none;}</style>"); /* ]]> */ </script> <div onclick="showHidePage(this);"> <font face="Verdana" color="#B99400">Reining</font> <div class="vnitrni"> 1. misto - Fast Western - Reining - On mi Own </div></div> <br> <div onclick="showHidePage(this);"> <font face="Verdana" color="#B99400">Ostatni ... Oceněni</font> <div class="vnitrni"> 4. misto - Venku i v zimě - Rainbow </div></div> </CENTER> </BODY> </HTML> zkusila jsem to a prostě mi to nějak nejde. ta stránka je uložená jako chairoi.php (celtichorses.ic.cz/chairoi.php) - takže 'formát' by měl být v pohodě. prošku jsem pozměnila hodnoty a "místa", neudělala jsem tam něco blbě? Ještě se v tom zkusím povrtat, nenapadá tě, proč to nejde? Není toho na té stránce třeba i moc? |
||
Sheena Profil * |
#21 · Zasláno: 17. 3. 2011, 16:02:42
Když jsem to alert smazala úplně, tak to (logicky) nevyhazovalo vůbec nic :D
|
||
Časová prodleva: 13 let
|
0