Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: time() countdown
Forum PHP.pl > Forum > PHP
Waloch016
Kod:
  1. <body style="background:url('images/bg/wyscig.png')no-repeat left top fixed;
  2. background-size: 100% 100%;">
  3. <?
  4. include('includes/gora.php');
  5. if(!($_GET['scig'])){
  6. ?>
  7. <div style="width:100%; margin-top: 200px;">
  8.  
  9. <div id="wyscig"><br /><br /><br /><br /><br />Poziom 1<br /><a href='wyscig.php?scig=dalej&id=1'><img src="../images/przycisk.png" width="150" height="50" ></a></div>
  10. <div id="wyscig1"><? echo"".$countSec.""?></div>
  11. <div id="wyscig"><img src="../images/trasa.png" width="200" height="200"></div>
  12. </div>
  13. <?
  14. }
  15. elseif($_GET['scig'] == "dalej"){
  16. $try = $_GET['id'];
  17. $teraz = mktime();
  18. $cas = $teraz + 180;
  19. $diffTime = ($czas_w-$teraz); // Difference in time
  20. $countMin = floor(diffTime/60);
  21. $countSec = (diffTime-(countMin*60));
  22. $kierowca = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE id='$id_g' "))or die(mysql_error());
  23. $trasa = mysql_fetch_array(mysql_query("SELECT * FROM wyscig WHERE id='$try' "))or die(mysql_error());
  24.  
  25. $wygrana = $kierowca['vmax'] - $kierowca['do100'] - $kierowca['promile'] - $kierowca['zmeczenie'] + ( $kierowca['prowadzenie'] * 0.6 + $kierowca['hamowanie'] * 0.5 + $kierowca['biegi'] * 0.5 + $kierowca['koncentracja'] * 0.2 + $kierowca['szybkosc'] * 0.2 );
  26.  
  27. if($_GET['id'] > 20){
  28. echo"<script type='text/javascript'>window.alert('Podana trasa nie istnieje!');document.location.href = 'wyscig.php';</script>";
  29. }
  30. elseif($kierowca['czas_t'] > $teraz){
  31. echo"<script type='text/javascript'>window.alert('Trenujesz! Nie możęsz jednocześnei trenowac i walczyc na ulicach!');document.location.href = 'wyscig.php';</script>";
  32. }
  33. elseif($kierowca['czas_p'] > $teraz){
  34. echo"<script type='text/javascript'>window.alert('Pracujesz! Nie możesz w tym czasie się ścigać!');document.location.href = 'wyscig.php';</script>";
  35. }
  36. elseif($kierowca['czas_w'] > $teraz){
  37. echo"<script type='text/javascript'>window.alert('Bierzesz udział w wyścigu! Nie możesz się teraz ścigać!');document.location.href = 'wyscig.php';</script>";
  38. }
  39. /**elseif($kierowca['bak'] < $trasa['zabiera_bajury']){
  40. echo"<script type='text/javascript'>window.alert('Nie masz paliwa aby móć się ścigać');document.location.href = 'stacja_paliw.php';</script>";
  41. }**/
  42. elseif($kierowca['zmeczenie'] >= 100.00){
  43. echo"<script type='text/javascript'>window.alert('Jesteś padnięty odpocznij');document.location.href = 'wyscig.php';</script>";
  44. }
  45. elseif($wygrana > $trasa['win'] ){
  46. mysql_query("UPDATE users SET kasa=kasa+ '250', respekt=respekt+ '11', zmeczenie=zmeczenie+ '1', czas_w='".$cas."' WHERE id='$id_g' ");
  47. echo"<script type='text/javascript'>window.alert('Wygrałeś<br> '".$trasa['wygrana_kasa']."' <br>'".$trasa['wygrany_respekt']."'');document.location.href = 'wyscig.php';</script>";
  48. }
  49. else{
  50. mysql_query("UPDATE users SET kasa=kasa- '100', respekt=respekt- '5', zmeczenie=zmeczenie+ '1', czas_w='".$cas."' WHERE id='$id_g' ");
  51. echo"<script type='text/javascript'>window.alert('Przegrałeś');document.location.href = 'wyscig.php';</script>";
  52. }
  53.  
  54. }
  55. ?>
  56. <?
  57. include('includes/dol.php');
  58. ?>

Mianowicie. $countSec nie pokazuje mi czasu, nie odlicza. Jakieś pomysły??
rad11
  1. $countMin = floor($diffTime/60);
  2. $countSec = ($diffTime-($countMin*60));
Waloch016
Przeoczenie moje. To nie zmienia faktu niedziałania tego.
rad11
Proponuje uzywac <?php

  1. <div id="wyscig1"><?php echo"".$countSec.""?></div>


Zmien i powiedz czy cos sie poprawilo. Dodatkowo wydaje mi sie ze $countSec deklarujesz pozniej moze poprostu ta zmienna nie jest zadeklarowana.
Waloch016
nic a nic.
rad11
ok to teraz przed wywolaniem zrob:

  1. <?php var_dump($countSec);exit; ?><div id="wyscig1"><? echo"".$countSec.""?></div>


i powiedz wynik.
Waloch016
float(0 dla Sec
i float(3 dla Min
rad11
a jak tak zrobisz
  1. <?php echo $countSec; ?>
Waloch016
Dałem tak:

  1. <?include('includes/gora.php');
  2. $teraz = mktime();
  3. $czas_w = $teraz + 180;
  4. $diffTime = ($czas_w-$teraz); // Difference in time
  5. $countMin = floor($diffTime/60);
  6. $countSec = ($diffTime-($countMin*60));
  7. if(!($_GET['scig'])){
  8. ?>
  9. <div style="width:100%; margin-top: 200px;">
  10.  
  11. <div id="wyscig"><br /><br /><br /><br /><br />Poziom 1<br /><a href='wyscig.php?scig=dalej&id=1'><img src="../images/przycisk.png" width="150" height="50" ></a></div>
  12. <div id="wyscig1"><?php echo "".$countMin."" ?><? echo"".$countSec.""?></div>
  13. <div id="wyscig"><img src="../images/trasa.png" width="200" height="200"></div>
  14. </div>


Generalnie pokazuje mi. 3 min i 0 sek. To jest ok tyle że odliczanie nie działa . nawe przy odświeżaniu ustawiło sie jakby na stałę.

moze inaczej: Potrzebuje cos takiego.

Mam przycisk ktory statruje wyscig. jednosczesnie uaktualnia on czas_w w bazie. to sie dzieje bo klikajac od razu drugi raz wyskakuje mi komunikat ze biore udzial w wyscigu czyli tak jak chce.

Teraz w tym omencie potrzebuje

pobrac ten czas z bazy danych dodac do niego 180 sekund i wyswietlic odliczanie tych 3 minut obok przycisku zeby gracz nie musial na oko klikac czy juz moze sie dalej scigac. masz moze jakis inny sposob zapisu tego?? moj sposob to jedyne co mi do glowy wpada.
rad11
Zrob sobie tak:

  1. $data = strtotime(tutaj zwrocona godzina z bazy danych w formacie np: 19:20:00);
  2. $teraz = time();
  3. $do_przodu = strtotime('+5 seconds', $data); // tutaj masz 19:20:05 czyli counter ustawiony na 5 sekund ty sobie ustaw na +3 minutes
  4.  
  5. //tutaj jest aktualny czas / aktualny czas do przodu
  6. echo date('H:i:s', $teraz) . '/' . date('H:i:s',$do_przodu);
  7.  
  8. if($teraz >= $do_przodu){
  9. //czas sie skonczyl
  10. }else{
  11. //czas sie nie skonczyl
  12. }
Waloch016
Dziękuję wam za odpowiedzi. Natomiast twój sposób nie bardzo mi pasował. Zrobiłem po swojemu a wygląda tak:

  1. <div id="wyscig1" style="width:28%;"><?php
  2. $teraz = mktime();
  3. $kierowca = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE id='$id_g' "))or die(mysql_error());
  4. $czas = $kierowca['czas_w'];
  5. $pozostalo = $czas - $teraz;
  6. //dodajemy funkcję liczącą czas
  7. ?>
  8. <script type='text/javascript'>
  9. function liczCzas(ile) {
  10. godzin = Math.floor(ile / 3600);
  11. minut = Math.floor((ile - godzin * 3600) / 60);
  12. sekund = ile - minut * 60 - godzin * 3600;
  13. if (godzin < 10){ godzin = "0"+ godzin; }
  14. if (minut < 10){ minut = "0" + minut; }
  15. if (sekund < 10){ sekund = "0" + sekund; }
  16. if (ile > 0) {
  17. ile--;
  18. document.getElementById("zegar").innerHTML = godzin + ':' + minut + ':' + sekund;
  19. setTimeout("liczCzas("+ile+")", 1000);
  20. } else {
  21. document.getElementById("zegar").innerHTML = "zakonczono";
  22. }
  23. }
  24. </script>
  25. następny wyscig za <font color="#bf8d1f"><span id='zegar'></span> <?php echo "<script type='text/javascript'>liczCzas(".$pozostalo.")</script>"; ?></font>
  26. </div>
  27. <div id="wyscig"><img src="../images/trasa.png" width="200" height="200"></div>
  28. </div>


Dzięki za pomysł tak czy inaczej.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.