Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zmiana pojedynczych rekordów w bazie MySQL wg szczególnego algorytmu
zbysiusp
post
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 11.07.2009

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


Witam!

Bardzo proszę o pomoc w rozwiązaniu następującego problemu. Algorytm jak dla mnie jest skomplikowany dlatego przedstawię oczekiwany sposób działania skryptu PHP opisowo i na rycinie.

Etap 0: Pobieramy 3 ostatnie rekordy z bazy danych z polami: ID, windseed (ten etap uzyskałem)
Etap 1: Jeżeli w najnowszym rekordzie nr 1 wartość "windspeed=0" nic nie rób (koniec)
Etap 2: Jeżeli w najnowszym rekordzie nr 1 wartość "windspeed>0" np. 5, zbadaj wartość "windspeed" w rekordzie nr 2.
Etap 3: Jeżeli w rekordzie nr 2 wartość "windspeed>0" np. 3 nic nie rób (koniec)
Etap 4: Jeżeli w rekordzie nr 2 wartość "windspeed=0", zbadaj wartość "windspeed" w rekordzie nr 3.
Etap 5: Jeżeli w rekordzie nr 3 wartość "windspeed=0" nic nie rób (koniec)
Etap 6: Jeżeli w rekordzie nr 3 wartość "windspeed>0" np. 7, wylicz średnią "windspeed" z rekordu nr 1 (5) i nr 3 (7) i wpisz ją (update) w miejsce 0 w rekordzie nr 2 "windspeed=6"

Oczekiwany sposób działania skryptu PHP

Dziękuję za pochylenie się nad tematem i pozdrawiam
zbysiusp
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
zbysiusp
post
Post #2





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 11.07.2009

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


Cytat(Pyton_000 @ 15.02.2017, 09:49:43 ) *


Dziękuję bardzo za kod. Wyszło tyle IF-ów bo oprócz windspeed dorzuciłem jeszcze 4 inne zmienne, ale z pewnością przekombinowałem.
Zamieszczam mój kod. Spójrz proszę na niego fachowym okiem i oceń.
  1. // Pobieramy ID najnowszego rekordu, aby ustalić jego numer potrzebny do dalszych obliczeń
  2. $wynik2 = mysql_query("SELECT ID FROM tab_czujniki_2 ORDER BY ID DESC LIMIT 1");
  3.  
  4. if(mysql_num_rows($wynik2) > 0) {
  5.  
  6. while($r2 = mysql_fetch_assoc($wynik2)) {
  7. $wynik_id = $r2['ID'];
  8. }
  9. }
  10.  
  11. // Pobieramy 3 najnowsze rekordy, pola: ID, czas_datetime, wind_speed_average do dalszych obliczeń
  12. $wynik = mysql_query("SELECT ID, czas_datetime, wind_speed_average, windgust, wind_direction_average, compass FROM tab_czujniki_2 ORDER BY ID DESC LIMIT 3");
  13. if(mysql_num_rows($wynik) > 0) {
  14.  
  15. while($r = mysql_fetch_assoc($wynik)) {
  16.  
  17. // wind_speed_average....................................
  18. if($wynik_id == $r['ID']) {
  19. $wynik_docelowy = $r['wind_speed_average'];
  20. $id_docelowy = $r['ID'];
  21. }
  22. if($wynik_id-1 == $r['ID']) {
  23. $wynik_docelowy1 = $r['wind_speed_average'];
  24. $id_docelowy1 = $r['ID'];
  25. }
  26. if($wynik_id-2 == $r['ID']) {
  27. $wynik_docelowy2 = $r['wind_speed_average'];
  28. $id_docelowy2 = $r['ID'];
  29. }
  30.  
  31. // windgust...............................................
  32. if($wynik_id == $r['ID']) {
  33. $wynik_sr_docelowy = $r['windgust'];
  34. }
  35. if($wynik_id-1 == $r['ID']) {
  36. $wynik_sr_docelowy1 = $r['windgust'];
  37. }
  38. if($wynik_id-2 == $r['ID']) {
  39. $wynik_sr_docelowy2 = $r['windgust'];
  40. }
  41.  
  42. // wind_direction_average.................................
  43. if($wynik_id == $r['ID']) {
  44. $wynik_sr_dir_docelowy = $r['wind_direction_average'];
  45. }
  46. if($wynik_id-1 == $r['ID']) {
  47. $wynik_sr_dir_docelowy1 = $r['wind_direction_average'];
  48. }
  49. if($wynik_id-2 == $r['ID']) {
  50. $wynik_sr_dir_docelowy2 = $r['wind_direction_average'];
  51. }
  52.  
  53. // compass ...............................................
  54. if($wynik_id == $r['ID']) {
  55. $wynik_sr_com_docelowy = $r['compass'];
  56. }
  57. if($wynik_id-1 == $r['ID']) {
  58. $wynik_sr_com_docelowy1 = $r['compass'];
  59. }
  60. if($wynik_id-2 == $r['ID']) {
  61. $wynik_sr_com_docelowy2 = $r['compass'];
  62. }
  63. }
  64. }
  65.  
  66. if($wynik_docelowy > 0 && $wynik_docelowy1 == 0 && $wynik_docelowy2 > 0){
  67.  
  68. $wynik_docelowy1 = ($wynik_docelowy + $wynik_docelowy2)/2;
  69. $wynik_sr_docelowy1 = ($wynik_sr_docelowy + $wynik_sr_docelowy2)/2;
  70. $wynik_sr_dir_docelowy1 = $wynik_sr_dir_docelowy2;
  71. $wynik_sr_com_docelowy1 = $wynik_sr_com_docelowy2;
  72.  
  73. $wynik = mysql_query("UPDATE tab_czujniki_2 SET wind_speed_average='$wynik_docelowy1', windgust='$wynik_sr_docelowy1', wind_events='1', wind_direction_average='$wynik_sr_dir_docelowy1', compass='$wynik_sr_com_docelowy1' WHERE id='$id_docelowy1'");
  74. }

Pozdrawiam
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 10.10.2025 - 12:09