Mysql js countdown(Rešeno)

1

Mysql js countdown(Rešeno)

Idi na vrh
offline
  • PHP programer
  • Pridružio: 26 Okt 2007
  • Poruke: 1043
  • Gde živiš: u Apache

Pozdrav,(opet ja) Smile ,

napravio sam timer koji za svaki novi rekord pravi timer, preostalo vreme do .... i to je ok, al ne mogu da ih prikažem zajedno na istoj strani, već dobijem timer za samo jedan rekord a u bazi su npr 2 rekorda...

tabela
id,name,time_left ,
za time left sam stavio timestamp, ali mi ne očitava po našem vremenu jer je u skripti LOCAL TIME

Ovde je prikazan samo jedan timer/jedan rekord,a treba da prikaže oba tajmera.


imam JS kod u kome se ja ne snalazim, evo
<script type="text/javascript"> function cdLocalTime(container, servermode, offsetMinutes, targetdate){ if (!document.getElementById || !document.getElementById(container)) return this.container=document.getElementById(container) var servertimestring=(servermode=="server-php")? '<? print date("F d, Y H:i:s", time())?>' : (servermode=="server-ssi")? '<!--#config timefmt="%B %d, %Y %H:%M:%S"--><!--#echo var="DATE_LOCAL" -->' : '<%= Now() %>' this.localtime=this.serverdate=new Date(servertimestring) this.targetdate=new Date(targetdate) this.debugmode=(typeof debugmode!="undefined")? 1 : 0 this.timesup=false this.localtime.setTime(this.serverdate.getTime()+offsetMinutes*60*1000) //add user offset to server time this.updateTime() } cdLocalTime.prototype.updateTime=function(){ var thisobj=this this.localtime.setSeconds(this.localtime.getSeconds()+1) setTimeout(function(){thisobj.updateTime()}, 1000) //update time every second } cdLocalTime.prototype.displaycountdown=function(baseunit, functionref){ this.baseunit=baseunit this.formatresults=functionref this.showresults() } cdLocalTime.prototype.showresults=function(){ var thisobj=this var debugstring=(this.debugmode)? "<p style=\"background-color: #FCD6D6; color: black; padding: 5px\"><big>Debug Mode on!</big><br /><b>Current Local time:</b> "+this.localtime.toLocaleString()+"<br />Verify this is the correct current local time, in other words, time zone of count down date.<br /><br /><b>Target Time:</b> "+this.targetdate.toLocaleString()+"<br />Verify this is the date/time you wish to count down to (should be a future date).</p>" : "" var timediff=(this.targetdate-this.localtime)/1000 //difference btw target date and current date, in seconds if (timediff<0){ //if time is up this.timesup=true this.container.innerHTML=debugstring+this.formatresults() return } var oneMinute=60 //minute unit in seconds var oneHour=60*60 //hour unit in seconds var oneDay=60*60*24 //day unit in seconds var dayfield=Math.floor(timediff/oneDay) var hourfield=Math.floor((timediff-dayfield*oneDay)/oneHour) var minutefield=Math.floor((timediff-dayfield*oneDay-hourfield*oneHour)/oneMinute) var secondfield=Math.floor((timediff-dayfield*oneDay-hourfield*oneHour-minutefield*oneMinute)) if (this.baseunit=="hours"){ //if base unit is hours, set "hourfield" to be topmost level hourfield=dayfield*24+hourfield dayfield="n/a" } else if (this.baseunit=="minutes"){ //if base unit is minutes, set "minutefield" to be topmost level minutefield=dayfield*24*60+hourfield*60+minutefield dayfield=hourfield="n/a" } else if (this.baseunit=="seconds"){ //if base unit is seconds, set "secondfield" to be topmost level var secondfield=timediff dayfield=hourfield=minutefield="n/a" } this.container.innerHTML=debugstring+this.formatresults(dayfield, hourfield, minutefield, secondfield) setTimeout(function(){thisobj.showresults()}, 1000) //update results every second } /////CUSTOM FORMAT OUTPUT FUNCTIONS BELOW////////////////////////////// //Create your own custom format function to pass into cdLocalTime.displaycountdown() //Use arguments[0] to access "Days" left //Use arguments[1] to access "Hours" left //Use arguments[2] to access "Minutes" left //Use arguments[3] to access "Seconds" left //The values of these arguments may change depending on the "baseunit" parameter of cdLocalTime.displaycountdown() //For example, if "baseunit" is set to "hours", arguments[0] becomes meaningless and contains "n/a" //For example, if "baseunit" is set to "minutes", arguments[0] and arguments[1] become meaningless etc //1) Display countdown using plain text function formatresults(){ if (this.timesup==false){//if target date/time not yet met var displaystring="<span style='background-color: #CFEAFE'>"+arguments[1]+" hours "+arguments[2]+" minutes "+arguments[3]+" seconds</span> Preostalo vreme do sranja:" } else{ //else if target date/time met var displaystring="Kenjaj Kenjaj i brzine menjaj!" } return displaystring } //2) Display countdown with a stylish LCD look, and display an alert on target date/time function formatresults2(){ if (this.timesup==false){ //if target date/time not yet met var displaystring="<span class='lcdstyle'>"+arguments[0]+" <sup>days</sup> "+arguments[1]+" <sup>hours</sup> "+arguments[2]+" <sup>minutes</sup> "+arguments[3]+" <sup>seconds</sup></span> left until launch time" } else{ //else if target date/time met var displaystring="" //Don't display any text alert("Launch time!") //Instead, perform a custom alert } return displaystring } </script>

i php/js
Ovde sam namerno stavio where id = 4 tako pozovem jedan rekord, a na drugoj strani sa id 5 pozovem drugi rekord.Problem je što ne mohgu da iščitam oba tajmera odjednom već samo dobijem statično vreme iz tabele.
<?php  include('connect.php'); ?> <table>  <!--tr>   <td>Username</td>   <td>Time Left</td>  </tr--> <?php  $result = mysql_query("SELECT * FROM `counter` where id = 4  ");  while ($row = mysql_fetch_array($result)) {        $futuredate = $row['time_left'];     ?>  <tr>   <td><?php //echo $row['time_left'];?></td>   <td><div id="cdcontainer"></div>   <div id="cdcontainer"></div> <script type="text/javascript"> //cdLocalTime("ID_of_DIV_container", "server_mode", LocaltimeoffsetMinutes, "target_date", "opt_debug_mode") //cdLocalTime.displaycountdown("base_unit", formatfunction_reference) //Note: "launchdate" should be an arbitrary but unique variable for each instance of a countdown on your page: var launchdate=new cdLocalTime("cdcontainer",  "server-php", 0, "<?php echo $futuredate;?>",  "debugmode") launchdate.displaycountdown("days", formatresults2) </script></td>  </tr> <?php  }   ?> </table>

Kako da prikažem oba tajmera istovremeno?



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
Idi na vrh
offline
  • Pridružio: 16 Jan 2010
  • Poruke: 238
  • Gde živiš: Zemun

A da li tebi ta oba tajmera imaju isti id u bazi?



Idi na vrh
offline
  • PHP programer
  • Pridružio: 26 Okt 2007
  • Poruke: 1043
  • Gde živiš: u Apache

ehej Cvrle pozz Zagrljaj

nemaju ,naravno, evo slike


dešava se sledeće, ako je samo jedan record u bazi npr id=1, prikazuje njega, tj tajmer za taj rekord,kad dodam sledeći rekord koji je id =2, on prikazuje njegov tajmer/counter a treba da prikaže oba ili onoliko kauntera koliko ima i rekorda.

Ja iz baze dobijem ukupan broj zapisa ali ne i toliko kauntera.Npr,imam 2 rekorda a dobijem ovo


i query je naravno  $result = mysql_query("SELECT * FROM `counter`");

Idi na vrh
offline
  • Pridružio: 16 Jan 2010
  • Poruke: 238
  • Gde živiš: Zemun

Primetio sam da imaš sintaksnih grešaka, kada je HTML kod u pitanju.
<td><div id="cdcontainer"></div>   <div id="cdcontainer"></div>
Ovaj deo ti se nalazi u while petlji, tako da se id-ijevi dupliraju, a još si i ti upisao dva ista id-a. Ne možeš da dupliraš id nazive, mislim da i na taj način zbunjuješ JS kod koji treba da dodeli to preostalo vreme svakom divu sa određenim id-jem. Stavi neki brojač koji će promeniti naziv id-a i mislim da će proraditi.

Idi na vrh
offline
  • lnenad  Male
  • Stručni saradnik
    Web
  • Nenad
  • Arhitetak
  • Pridružio: 16 Jan 2007
  • Poruke: 2860
  • Gde živiš: Bijeljina

Upravo to sto ti je cvrle napisao Smile, tj. ja na brzaka ne vidim nista drugo.

Idi na vrh
offline
  • PHP programer
  • Pridružio: 26 Okt 2007
  • Poruke: 1043
  • Gde živiš: u Apache

@cvrlebg

ako misliš na zatvoren td tag, zatvoren je dole ispod js, ako misliš na tu sintaksu..

za id je stajao samo <div id="cdcontainer"> , ja sam mu dodao ovaj drugi.I pre nego što sam duplirao , čitao mi je kaunter za samo poslednji uneti rekord.

Kontam šta pričate u smislu istog id, ali neću valjda za svaki novi rekord fizički unositi novi div ID.

Tu treba da bude kao kad unosiš npr novu kategoriju u bazu, da se ona pridoda spisku kategorija, tako i ovde , da kad korisnik doda novi proizvod za aukciju npr., da se prikaže novi rekord sa novim tajmerom...

E sad sam ovde zapeo. Smile
cvrlebg :: Stavi neki brojač koji će promeniti naziv id-a i mislim da će proraditi.

Idi na vrh
offline
  • lnenad  Male
  • Stručni saradnik
    Web
  • Nenad
  • Arhitetak
  • Pridružio: 16 Jan 2007
  • Poruke: 2860
  • Gde živiš: Bijeljina

gfactory ::@cvrlebg
Kontam šta pričate u smislu istog id, ali neću valjda za svaki novi rekord fizički unositi novi div ID.


Jašta ćeš! I to ne samo to, moraćeš za svaki novi unos da uvedeš novu js funkciju koja aktivira novi counter. Dakle prvo pokupis upitom koliko imas brojaca koje treba prikazati, to stavis u promjenljivu npr. n.

Nešto ovako

<?php $t = 1; while ($t<$n){ ?>   <td>   <div id="cdcontainer<?php echo $t; ?>"></div> <script type="text/javascript"> //cdLocalTime("ID_of_DIV_container", "server_mode", LocaltimeoffsetMinutes, "target_date", "opt_debug_mode") //cdLocalTime.displaycountdown("base_unit", formatfunction_reference) //Note: "launchdate" should be an arbitrary but unique variable for each instance of a countdown on your page: var launchdate=new cdLocalTime("cdcontainer<?php echo $t; ?>",  "server-php", 0, "<?php echo $futuredate;?>",  "debugmode") launchdate.displaycountdown("days", formatresults2) </script></td> <?php $t++; } ?>

Idi na vrh
offline
  • PHP programer
  • Pridružio: 26 Okt 2007
  • Poruke: 1043
  • Gde živiš: u Apache

lnenad ::
<?php $t = 1; while ($t<$n){ ?>   <td>   <div id="cdcontainer<?php echo $t; ?>"></div> <script type="text/javascript"> //cdLocalTime("ID_of_DIV_container", "server_mode", LocaltimeoffsetMinutes, "target_date", "opt_debug_mode") //cdLocalTime.displaycountdown("base_unit", formatfunction_reference) //Note: "launchdate" should be an arbitrary but unique variable for each instance of a countdown on your page: var launchdate=new cdLocalTime("cdcontainer<?php echo $t; ?>",  "server-php", 0, "<?php echo $futuredate;?>",  "debugmode") launchdate.displaycountdown("days", formatresults2) </script></td> <?php $t++; } ?>


@lnenad hvala i tebi što si priskočio u pomoć... samo mi sad nije jasno, gde sad u ovom tvom kodu da stavim Query ... ja sam rekorde/tajmere zvao sa while loop ...baš sam u rebusu. GUZ - Glavom U Zid

Idi na vrh
offline
  • Pridružio: 16 Jan 2010
  • Poruke: 238
  • Gde živiš: Zemun

<?php  include('connect.php'); ?> <table>  <!--tr>   <td>Username</td>   <td>Time Left</td>  </tr--> <?php  $t = 1;  $result = mysql_query("SELECT * FROM `counter` where id = 4  ");  while ($row = mysql_fetch_array($result)) {        $futuredate = $row['time_left'];     ?>  <tr>   <td>   <div id="cdcontainer<?php echo $t; ?>"></div> <script type="text/javascript"> //cdLocalTime("ID_of_DIV_container", "server_mode", LocaltimeoffsetMinutes, "target_date", "opt_debug_mode") //cdLocalTime.displaycountdown("base_unit", formatfunction_reference) //Note: "launchdate" should be an arbitrary but unique variable for each instance of a countdown on your page: var launchdate=new cdLocalTime("cdcontainer<?php echo $t; ?>",  "server-php", 0, "<?php echo $futuredate;?>",  "debugmode") launchdate.displaycountdown("days", formatresults2) </script></td>  </tr> <?php $t++;  } ?> </table>

Ovako bi trebalo da izgleda.

Idi na vrh
offline
  • PHP programer
  • Pridružio: 26 Okt 2007
  • Poruke: 1043
  • Gde živiš: u Apache

Napisano: 13 Apr 2012 21:52

cvrlebg ::
Ovako bi trebalo da izgleda.


Ne samo da tako izgleda nego i radi opasno dobro!! Very Happy

Samo sam mu dao select * from counter i sad mi čita sve koje imam i svaki novi unos je kaunter.

@Inenad & @cvrlebg Zagrljaj

hvala puno na pomoći. Sve više piva dugujem momcima sa MC... Smile

p.s. odužiću se nekad. Zagrljaj

Dopuna: 14 Apr 2012 13:59

heh,rano sam se obradovao, ovo radi samo u Chrome, u IE i FF ne renderuje, prikaže
NaN days NaN hours NaN minutes NaN seconds preostalo vreme
http://izradasajtova.ag.rs/projekti/new_design/mysql_counter.php
sad to treba da premostim. Twisted Evil


Potreban je samo minut da se registrujete - da biste učestvovali u diskusiji:
Izaberite vaše korisničko ime [username] :
Vaša email adresa je [email] : Email adresa mora biti tačna!
Ukucajte željenu šifru [password] :
Ukucajte šifru ponovo [password again] :
Jezik [language] :




Ili se jednostavno uloguj preko Facebook-a:
Ko je trenutno na forumu
 

Ukupno su 694 korisnika na forumu :: 98 registrovanih, 17 sakrivenih i 579 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 1311 - dana 15 Nov 2012 21:40

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 4channer, _Sale, A kandic, Aemagedon001, airsuba, ante mpt, arandjicdrazen, arzak, At - Pui, benne, bigfoot2, bojank, Boris BM, BRATORIII, Chuck Norris, cika miki2, Cufo, damirZR, darios, djboj, Djokislav, Djokkinen, djonsule, dobri covek, drejk, E.L.I.T.E., faris.orman, Futurama, Gama, GrobarRomanticar, higuy, i.senica, Igor Antonic, ikan, ILGromovnik, ivan24, Jester, Joe Husaphet 2, klodovik, Kordon, krunc, KUZMAR, latex2, Lieutenant, Logic005, Lucije Kvint, Lunar Module, m4rk0, MarkoFTE, markus2, marre, mean_machine, menges, Mercury, mikrimaus, Mirjo, miroslavrakita, mislimdaimamnesto, MrCrow, mushroom, nebkv, Nemanja Opalić, Nenad Peic, Nikola Gajić, ninoslav1011, Novi, pajkan2, proka89, pustinjski_tolstolobik, raskoljnikov, respekt2, S2M, SAA fan, Sale.S, sara85, sasa762, Shone 89, SlobaBgd, Slobodan Filipović, soz, Sr.Stat., sremac983, sta cu kad ih volim, Stojanka Draskovic Ex Pop, Tasha, Toni, vasa.93, vathra, vazonja, Viceroy, Voja1978, Warhawk, zaratusta, zillbg, zixo, zobi, zrakomlat, Žan Klod vam dam
Siguran hosting