Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Różnica 2 wyników z MySQL (obecnego i poprzedniego).
Giluś
post 12.10.2012, 18:53:10
Post #1





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

Ostrzeżenie: (0%)
-----


Cześć, przy dodawaniu wyniku do MySQL wpisuję czas (funkcja time()wink.gif i przy wyświetleniu wyniku chciałbym wyświetlić różnicę między wysłanymi wiadomościami..

Zapytanie SQL:
  1. $wynik = mysql_query("SELECT * FROM czat_rec ORDER BY `czat_rec`.`date_rec` DESC") OR die('Błąd zapytania');


Przykładowe wyświetlenie - te które już zrobiłem:
Kod
19:19 User: Wiadomosc 5
1350062368

19:19 User: Wiadomosc 4
1350062364

19:19 User: Wiadomosc 3
1350062361

19:19 User: Wiadomosc 2
1350062356

19:19 User: Wiadomosc 1
1350062354


Te cyferki pod Wiadomościami to zapisany czas funkcją time(); i teraz chciałbym osiągnąć efekt:

Kod
19:19 User: Wiadomosc 5
1350062368
Czas: 4s (1350062368 - 1350062364 = 4)

19:19 User: Wiadomosc 4
1350062364
Czas: 3s (1350062364 - 1350062361 = 3)

19:19 User: Wiadomosc 3
1350062361
Czas: 5s (1350062361 - 1350062356 = 5)

19:19 User: Wiadomosc 2
1350062356
Czas: 2s (1350062356 - 1350062354 = 2)

19:19 User: Wiadomosc 1
1350062354
Czas: 0s (1350062354 - 1350062354 = 0)



Działa to na takiej zasadzie, że odejmuję obecny wynik od poprzedniego np.: User: Wiadomosc 2 - User: Wiadomosc 1, czas odstępu wychodzi 2s..

Jak takie coś zrobić ?.

Z góry bardzo dziękuje i pozdrawiam;)

Ten post edytował Giluś 12.10.2012, 18:55:30
Go to the top of the page
+Quote Post
ber32
post 12.10.2012, 19:31:54
Post #2





Grupa: Zarejestrowani
Postów: 332
Pomógł: 22
Dołączył: 6.07.2010

Ostrzeżenie: (0%)
-----


Spróbuj z microtime

http://php.net/manual/en/function.microtime.php


--------------------
Go to the top of the page
+Quote Post
Giluś
post 13.10.2012, 08:30:43
Post #3





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

Ostrzeżenie: (0%)
-----


Ok, ale jak zrobić tą różnice...

Pobieram tak wyniki:
  1. $wynik = mysql_query("SELECT * FROM czat_rec ORDER BY `czat_rec`.`date_rec` DESC") or die('Błąd zapytania');
  2. while($r = mysql_fetch_assoc($wynik))
  3. {
  4. $color = ($r['ranga'] == 4) ? 'red' : '#000';
  5.  
  6. echo '<p>'.$r['time'].' <font color="'.$color.'">'.$r['user'].'</font>: '.$r['message'].'</p>'.$r['date_rec'].'<hr>';
  7. }


I jak mam teraz zrobić różnice obecnego wyniku - poprzedniego wyniku ?.
Go to the top of the page
+Quote Post
b4rt3kk
post 13.10.2012, 09:56:28
Post #4





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Dodaj zapytanie, które pobierze czas z poprzedniego rekordu i odejmij jeden wynik od drugiego:

  1. SELECT kolumna_time FROM czat_rec WHERE id<$currentID LIMIT 0,1


Ten post edytował b4rt3kk 13.10.2012, 09:56:43


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
kefirek
post 13.10.2012, 11:02:06
Post #5





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

Ostrzeżenie: (0%)
-----


  1. $array=array();
  2. $wynik = mysql_query("SELECT * FROM czat_rec ORDER BY `czat_rec`.`date_rec` DESC") or die('Bł?d zapytania');
  3. while($r = mysql_fetch_assoc($wynik))
  4. {
  5. $array[]=$r;
  6. }
  7. foreach ($arr as $key => $value) {
  8. $color = ($value['ranga'] == 4) ? 'red' : '#000';
  9.  
  10. echo '<p>'.$value['time'].' <font color="'.$color.'">'.$value['user'].'</font>: '.$value['message'].'</p>'.$value['date_rec'].'<hr>';
  11.  
  12. if(isset($array[$key + 1]['time'])) {
  13.  
  14. $roznica = $value['time'] - $array[$key + 1]['time'];
  15.  
  16. } else {
  17.  
  18. $roznica = 0;
  19.  
  20. }
  21.  
  22.  
  23. echo '</br>roznica '.$roznica;
  24.  
  25.  
  26. }


Ten post edytował kefirek 13.10.2012, 11:02:48
Go to the top of the page
+Quote Post
Giluś
post 13.10.2012, 11:08:56
Post #6





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

Ostrzeżenie: (0%)
-----


Już sobie poradziłem zrobiłem to inaczej:

  1. while($r = mysql_fetch_assoc($wynik))
  2. {
  3. if (isset($previous)) {$czas = $r['date_rec'] - $previous;} else {$czas = 0;}
  4.  
  5. echo $czas;
  6.  
  7. $previous = $r['date_rec'];
  8.  
  9. }
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 12:04