Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zliczanie czasu pomiędzy zdarzeniami
Forum PHP.pl > Forum > Przedszkole
jakkolwiek
Witam wszystkich!

czytałem wiele tematów na forum i nie tylko i nie mogę znaleźć rozwiązania dla mojego problemu.
Potrzebuję napisać sobie skrypt, który będzie pomiędzy kliknięciem przycisku "start" zliczał czas
aż do kliknięcia przycisku "stop". Pomyślałem od razu o JS, ale niestety nie znam JS zupełnie,
dlatego też chciałbym całość skonstruować w PHP. Zatrzymałem się w momencie, gdzie skrypt zlicza
microtime od "start" do "stop" i wyświetla różnicę, jednak wynik w formie 0.944234 niewiele mi mówi
i nie bardzo wiem jak to przekonwertować na sekundy albo minuty. Próbowałem też odjąć godziny, w sensie

  1. <?php
  2. $start = date(&#092;"H:m:s\");
  3. $stop = date(&#092;"H:m:s\");
  4.  $xa = $stop - $start;
  5. ?>


ale wynik niestety też nie był zbyt czytelny ani zrozumiały. Bardzo proszę o podpowiedź jak to zrobić za pomocą PHP. Sprawa niby banalna, bo to praktycznie zwykły 'stoper', ale nie mogę sobie z tym poradzić. sad.gif


Pozdrawiam serdecznie!
P. M. R.

P.S. Tak się zastanawiam i chyba trochę zbyt pochopnie wybrałem dział. Jeżeli ktoś z moderatorów stwierdzi, że bardzo to pasuje do działu 'Przedszkole' to bardzo proszę o przeniesienie i przepraszam za omyłkę!
artega
Sprawdź ten kod winksmiley.jpg
  1. <?php
  2.  
  3. $start = time();
  4.  
  5. sleep(rand(1, 5));
  6.  
  7. echo "uplynelo ".(time()-$start)." sekund";
  8.  
  9. ?>
jakkolwiek
Nie, to nie tak. Po wypróbowaniu zwróciło mi: "upłynęło: 1216300231 sek".
Równie nieczytelny wynik miałem przy zastosowaniu microtime(),
pytanie teraz jak to przekonwertować np. na sekundy?
  1. <?php
  2. (time()-$start)*28*365*24*60*60 
  3.  
  4. ?>


nie ma innego sposobu?
Shili
Przecież ten kod, co podał Ci artega zwraca czas właśnie w sekundach.

Podaj swój kod może?
jakkolwiek
Cytat(Shili @ 17.07.2008, 15:29:12 ) *
Przecież ten kod, co podał Ci artega zwraca czas właśnie w sekundach.

Podaj swój kod może?


tak, w sekundach, tylko że od roku 1970.
Mogę podać mój kod, ale nie wiem co Ci to da. Ja nie chce gotowego rozwiązania tylko nakierunkowania, żebym
mógł sam dojść do rozwiązania winksmiley.jpg

  1. <body>
  2. <form action="<?php PHP_SELF; ?>" method=GET>
  3. <input type=text name=start value=<?php echo(date("H:m:s")); ?> disabled=true size=6><br>
  4. <input type="submit" name=sta value="start">
  5. </form>
  6.  
  7. <form action="<?php PHP_SELF; ?>" method=GET>
  8. <input type=text name=stop value=<?php echo(date("H:m:s")); ?> disabled=true size=6><br>
  9. <input type="submit" name=sto value="stop">
  10. </form>
  11. <?php
  12.  
  13. function microtime_float()
  14. {
  15. list($usec, $sec) = explode(" ", microtime());
  16. return ((float)$usec);
  17. }
  18.  
  19. if(isSet($_GET['sta'])) {
  20. $st = time();
  21. $time_start = microtime_float();
  22. usleep(100);
  23. $time = time();
  24. $godz1 = date(H);
  25. $min1 = date(m);
  26. $sec1 = date(s);
  27.  
  28.  
  29. }
  30.  
  31. if(isSet($_GET['sto'])) {
  32. $www = "883008000";
  33. $xwx = round(((time()-$st)/$www), 4);
  34. echo("<br><br>upłynęło: ".$xwx." sek");
  35. $time_end = microtime_float();
  36. $time = $time_end - $time_start;
  37.  echo('<br><br>niedostępne przez '.$time.' sekund');
  38.  $stop = time();
  39.  $rem = $stop - $time; 
  40.  $min = $time%(60*60);
  41. echo("<br><br><br>".$rem);
  42. echo("<br>".$min);
  43. $godz2 = date(H);
  44. $min2 = date(m);
  45. $sec2 = date(s);
  46.  $xa = $godz1 - $godz2;
  47.  $xb = $min1 - $min2;
  48.  $xc = $sec1 - $sec2;
  49. echo("<br><br><b>".$xa.":".$xb.":".$xc."</b>");
  50.  
  51. }  
  52.  
  53. ?>
nospor
Cytat
Nie, to nie tak. Po wypróbowaniu zwróciło mi: "upłynęło: 1216300231 sek".
blinksmiley.gif
Skopiuj kod dokladnie jak ci podano i zobacz dokladnie co ci pokazuje. On ci pokazuje roznice sekund miedzy jednym time() a drugim. Roznica ta w tym kodzie nie bedzie wieksz niz 5. Skoro dostales taki czas co pokazales, to cos namieszales.
jakkolwiek
Za Twoją radą nospor, zrobiłem sobie drugi plik na szkielecie jaki potrzebuje, ale przy wykorzystaniu tylko kodu od artegi i wynik mi zwrócił: "uplynelo 1216367652 sekund"

cały kod teraz wygląda tak:

  1. <body>
  2. <form action="<?php PHP_SELF; ?>" method=GET>
  3. <input type=text name=start value=<?php echo(date("H:m:s")); ?> disabled=true size=6><br>
  4. <input type="submit" name=sta value="start">
  5. </form>
  6.  
  7. <form action="<?php PHP_SELF; ?>" method=GET>
  8. <input type=text name=stop value=<?php echo(date("H:m:s")); ?> disabled=true size=6><br>
  9. <input type="submit" name=sto value="stop">
  10. </form>
  11. <?php
  12.  
  13. if(isSet($_GET['sta'])) {
  14. $start = time();
  15. sleep(rand(1, 5));
  16. }
  17.  
  18. if(isSet($_GET['sto'])) {
  19. echo "uplynelo ".(time()-$start)." sekund";
  20. }  
  21.  
  22. ?>


nie wiem co tu zrobiłem źle, realny czas pomiędzy wciśnięciem start a stop w tym przypadku to około 15 sekund.
nospor
blinksmiley.gif blinksmiley.gif blinksmiley.gif blinksmiley.gif blinksmiley.gif blinksmiley.gif
czy rozumiesz pojecie wklej dokladnie?
Przeciez ty nie wklejasz dokladnie a modyfikujesz pod swoje potrzeby. na dodatek modyfikujesz źle.
Ty masz dwa żądania do strony (realizowane przez dwa formularze) i myslisz ze skrypt ci zapamieta sam z siebie czas miedzy jednym żądaniem a drugim?
Do pamietania sluzy sesja

przenosze na przedszkole
artega
@jakkolwiek przydałoby się przewertować manual. Prosty przykład na podstawie Twojego kodu... filtrować dane z $_SERVER i $_POST już musisz sam
  1. <body>
  2. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  3. <input type="hidden" name="start" value="<?php echo isset($_POST['start']) ? $_POST['start'] : time(); ?>">
  4. <?php echo date("H:i:s", isset($_POST['start']) ? $_POST['start'] : time()); ?><br>
  5. <input type="submit" value="start">
  6. </form>
  7.  
  8. <?php
  9. if (isset($_POST['start']))
  10. {
  11. ?>
  12. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  13. <input type="hidden" name="start" value="<?php echo $_POST['start']; ?>">
  14. <input type="submit" name="stop" value="stop">
  15. </form>
  16. <?php
  17.  
  18. if (isset($_POST['stop']))
  19. {
  20. echo "uplynelo ".(time()-$_POST['start'])." sekund";
  21. }
  22. }
  23. ?>

Cytat
Do pamietania sluzy sesja

albo formularz winksmiley.jpg
nospor
Cytat
Do pamietania sluzy sesja

albo formularz
Albo ciastka. Nie oto mi chodzilo

Chodzilo oto, ze kolesiowi mowi sie jedno, ten robi co innego i mowi ze to co mu sie mowi to nie dziala dobrze. 3 osoby mowily mu jedno, a ten i tak robil swoje i ten tekst ze nie dziala... marnuje nasz czas takimi zagrywkami. no tak sie nie robi.

edit down:
Cytat
nie jestem programistą.
Ale co to ma do programowania? Jedna osoba mowi ci cos, ty robisz cos innego.
Przyklad nie z programowania
Ja mowie: weź wiadro, nalej wody i podlej kwiatki
A ty: bierzesz sitko, lejesz do niego wody i zanim podlejesz kwiatki to oczywiscie wszystko ucieknie. Przychodzi do mnie i mowisz ze moj sposob z wiadrem nie dziala. Na dodatek w rece masz jeszcze to sitko....
Naprawde do tego trzeba byc programistą by zrobic prostą rzecz o ktorej sie mowi?
jakkolwiek
Człowieku i po co się tak spinasz?
Nie bezczelnie, nie jestem programistą.

dzięki artega!
problem rozwiązałem przy pomocy Twojego kodu wcześniejszego, ale trochę inaczej podszedłem do sprawy, dzięki.

temat do zamknięcia jak coś.
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.