Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Kolorowanie danych z bazy MySQL
brzanek
post 16.09.2016, 10:31:59
Post #1





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


Witam mam problem jak mogę dodać odpowiednie kolory do wartości pobieranych z bazy danych.
np.
Pobieram temperaturę z bazy danych np: 20 stopni. Do tej wartości musi być zdefiniowany odpowiedni kolor tła. Dla temperatury np: 21 stopni powinien być przypisany inny kolor tła.
Zrobiłem tablicę kolorów
  1. $tempArray2=array(
  2. '#F6AAB1', '#F6A7B6', '#F6A5BB', '#F6A2C1', '#F6A0C7', '#F79ECD', '#F79BD4', '#F799DB', '#F796E2', '#F794EA',
  3. '#F792F3', '#F38FF7', '#EA8DF7', '#E08AF8', '#D688F8', '#CC86F8', '#C183F8', '#B681F8', '#AA7EF8', '#9E7CF8',
  4. '#9179F8', '#8477F9', '#7775F9', '#727BF9', '#7085F9', '#6D8FF9', '#6B99F9', '#68A4F9', '#66AFF9', '#64BBFA',
  5. '#61C7FA', '#5FD3FA', '#5CE0FA', '#5AEEFA', '#57FAF9', '#55FAEB', '#52FADC', '#50FBCD', '#4DFBBE', '#4BFBAE',
  6. '#48FB9E', '#46FB8D', '#43FB7C', '#41FB6A', '#3EFB58', '#3CFC46', '#40FC39', '#4FFC37', '#5DFC35', '#6DFC32',
  7. '#7DFC30', '#8DFC2D', '#9DFC2A', '#AEFD28', '#C0FD25', '#D2FD23', '#E4FD20', '#F7FD1E', '#FDF01B', '#FDDC19',
  8. '#FDC816', '#FDC816', '#FEB414', '#FEB414', '#FE9F11', '#FE9F11', '#FE890F', '#FE890F', '#FE730C', '#FE730C',
  9. '#FE5D0A', '#FE5D0A', '#FE4607', '#FE4607', '#FE2F05', '#FE2F05', '#FE1802', '#FE1802', '#FF0000', '#FF0000',);

Jak teraz to powiązać z wartościami pobieranymi z bazy danych.
W taki sposób pobieram wartości z bazy danych
  1. <td class='kolortemp2'>".$row['dzientempmax']."&deg;C</td>

Jak można to połączyć?

Ten post edytował brzanek 16.09.2016, 10:38:11
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
trueblue
post 16.09.2016, 10:40:23
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Kolory wrzuć albo do tablicy w php, albo do tablicy sql, wraz z zakresami (min, max, kolor).
W pierwszym przypadku wyszukujesz temperaturę mieszczącą się między wartościami elementów min,max danego elementu tablicy (i masz kolor).

W drugim podobnie, ale zapytaniem:
  1. SELECT z.kolor,z.minimum,z.maksimum FROM zakres AS z WHERE temperatura>=zakresy.minimum AND temperatura<zakresy.maksimum



--------------------
Go to the top of the page
+Quote Post
KsaR
post 16.09.2016, 10:44:25
Post #3





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


  1. echo $tempArray2[$row['dzientempmax']-1];

Swoją drogą możesz z wartości skasować "#" i dodać dopiero przy wyświetlaniu.


--------------------
Go to the top of the page
+Quote Post
brzanek
post 16.09.2016, 11:04:40
Post #4





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


Cytat(trueblue @ 16.09.2016, 11:40:23 ) *
Kolory wrzuć albo do tablicy w php, albo do tablicy sql, wraz z zakresami (min, max, kolor).
W pierwszym przypadku wyszukujesz temperaturę mieszczącą się między wartościami elementów min,max danego elementu tablicy (i masz kolor).

W drugim podobnie, ale zapytaniem:
  1. SELECT z.kolor,z.minimum,z.maksimum FROM zakres AS z WHERE temperatura>=zakresy.minimum AND temperatura<zakresy.maksimum


Zrobiłem tablicę w php
  1. $tempArray2=array(
  2. '-40' => '#F6AAB1',
  3. '-39' => '#F6A7B6',
  4. '-38' => '#F6A5BB',
  5. '-37' => '#F6A2C1',
  6. '-36' => '#F6A0C7',
  7. '-35' => '#F79ECD',
  8. '-34' => '#F79BD4',
  9. '-33' => '#F799DB',
  10. '-32' => '#F796E2',
  11. '-31' => '#F794EA',
  12. '-30' => '#F792F3',
  13. '-29' => '#F38FF7',
  14. '-28' => '#EA8DF7',
  15. '-27' => '#E08AF8',
  16. '-26' => '#D688F8',
  17. '-25' => '#CC86F8',
  18. '-24' => '#C183F8',
  19. '-23' => '#B681F8',
  20. '-22' => '#AA7EF8',
  21. '-21' => '#9E7CF8',
  22. '-20' => '#9179F8',
  23. '-19' => '#8477F9',
  24. '-18' => '#7775F9',
  25. '-17' => '#727BF9',
  26. '-16' => '#7085F9',
  27. '-15' => '#6D8FF9',
  28. '-14' => '#6B99F9',
  29. '-13' => '#68A4F9',
  30. '-12' => '#66AFF9',
  31. '-11' => '#64BBFA',
  32. '-10' => '#61C7FA',
  33. '-9' => '#5FD3FA',
  34. '-8' => '#5CE0FA',
  35. '-7' => '#5AEEFA',
  36. '-6' => '#57FAF9',
  37. '-5' => '#55FAEB',
  38. '-4' => '#52FADC',
  39. '-3' => '#50FBCD',
  40. '-2' => '#4DFBBE',
  41. '-1' => '#4BFBAE',
  42. '0' => '#48FB9E',
  43. '1' => '#46FB8D',
  44. '2' => '#43FB7C',
  45. '3' => '#41FB6A',
  46. '4' => '#3EFB58',
  47. '5' => '#3CFC46',
  48. '6' => '#40FC39',
  49. '7' => '#4FFC37',
  50. '8' => '#5DFC35',
  51. '9' => '#6DFC32',
  52. '10' => '#7DFC30',
  53. '11' => '#8DFC2D',
  54. '12' => '#9DFC2A',
  55. '13' => '#AEFD28',
  56. '14' => '#C0FD25',
  57. '15' => '#D2FD23',
  58. '16' => '#E4FD20',
  59. '17' => '#F7FD1E',
  60. '18' => '#FDF01B',
  61. '19' => '#FDDC19',
  62. '20' => '#FDC816',
  63. '21' => '#FDC816',
  64. '22' => '#FEB414',
  65. '23' => '#FEB414',
  66. '24' => '#FE9F11',
  67. '25' => '#FE9F11',
  68. '26' => '#FE890F',
  69. '27' => '#FE890F',
  70. '28' => '#FE730C',
  71. '29' => '#FE730C',
  72. '30' => '#FE5D0A',
  73. '31' => '#FE5D0A',
  74. '32' => '#FE4607',
  75. '33' => '#FE4607',
  76. '34' => '#FE2F05',
  77. '35' => '#FE2F05',
  78. '36' => '#FE1802',
  79. '37' => '#FE1802',
  80. '38' => '#FF0000',
  81. '39' => '#FF0000',
  82. );

Tak wywołuję to ale nie działa
  1. echo "<td style='color: ".$tempArray2.";'>".$row['dzientempmax']."&deg;C</td>";
Go to the top of the page
+Quote Post
nospor
post 16.09.2016, 11:20:53
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




przy kolorowaniu nie
$tempArray2

a:
$tempArray2[$row['dzientempmax']];

zakladam ze pod $row['dzientempmax'] masz
20

a nie
20 stopni
wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
KsaR
post 16.09.2016, 11:24:12
Post #6





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


No to tak jak pisałem tylko nie przemyślałem wcześniej wartości na minusie:

Do poprzedniego twojego kodu:
$tempArray2[abs($row['dzientempmax'])+($row['dzientempmax']<0 ? 0 : 40)];
Czyli, jak temp. Mniejsza od 0 to będzie wywołany klucz 0-40, jak 0+C° to 40+ klucz.

https://eval.in/643423

A do aktualnego możesz:

$tempArray2[$row['dzientempmax']];


--------------------
Go to the top of the page
+Quote Post
brzanek
post 16.09.2016, 11:33:30
Post #7





Grupa: Zarejestrowani
Postów: 429
Pomógł: 0
Dołączył: 8.11.2012

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


nospor tak mam 20

Ok wyświetla mi się jak dodałem taki kod
  1. echo "<td style='color: ".$tempArray2[$row['dzientempmax']].";'>".$row['dzientempmax']."&deg;C</td>";

Ale piszecie, że może być problem przy ujemnej temperaturze?

edit: sprawdziłem z ujemną wartością też działa tak więc dzięki.

Ten post edytował brzanek 16.09.2016, 11:39:39
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: 19.07.2025 - 19:37