Igrice i igre

Mysql js countdown(Rešeno)

1

Mysql js countdown(Rešeno)

Idi na vrh
offline
  • PHP programer
Uloguj se preko Facebooka da bi video sliku:
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: 225
  • Gde živiš: Zemun
Uloguj se preko Facebooka i postavi pitanje:
A da li tebi ta oba tajmera imaju isti id u bazi?

Idi na vrh
offline
  • PHP programer
Uloguj se preko Facebooka da bi video sliku:
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: 225
  • Gde živiš: Zemun
Uloguj se preko Facebooka i postavi pitanje:
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
Uloguj se preko Facebooka i postavi pitanje:
Upravo to sto ti je cvrle napisao Smile, tj. ja na brzaka ne vidim nista drugo.
Idi na vrh
offline
  • PHP programer
Uloguj se preko Facebooka i postavi pitanje:
@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
Uloguj se preko Facebooka i postavi pitanje:
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
Uloguj se preko Facebooka i postavi pitanje:
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: 225
  • Gde živiš: Zemun
Uloguj se preko Facebooka i postavi pitanje:

<?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
Uloguj se preko Facebooka i postavi pitanje:
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 312 korisnika na forumu :: 51 registrovanih, 4 sakrivenih i 257 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: alasseon, Aldin Balicevac, aleksmajstor, Andronik, awathorn, Bane_RS, Berzerk, Bojan5150, bokixl, Brano, Chuck Norris, dekao, deks007, Dixy2, Dragan Mačak Damljanović, felixTT, Georgius2, guta89, jozo, Kristian_KG, Majstor Ika, MB120mm, Miloš Pavlović 2, Misirac, Mixelotti, mrkanidja, MrNo, mustangkg, nedeljkovici, ok2, PACIJENT, proka89, Ranxerox, Recoba20, salesam, sasa76, snik, spektorsky, sremac983, Stefan Taddy Tasic, tachinni, tmanda323, USSVoyager, vathra, Viceroy, virked, VolimSamoNju, VP3987, vrabac2, Zoran Đikić, Žan Klod vam dam
VPS