Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Różnica 2 wyników z MySQL (obecnego i poprzedniego).
Forum PHP.pl > Forum > Przedszkole
Giluś
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;)
ber32
Spróbuj z microtime

http://php.net/manual/en/function.microtime.php
Giluś
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 ?.
b4rt3kk
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
kefirek
  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. }
Giluś
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. }
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.