Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Kolorowanie danych z bazy MySQL
Forum PHP.pl > Forum > Przedszkole
brzanek
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ć?
trueblue
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

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

Swoją drogą możesz z wartości skasować "#" i dodać dopiero przy wyświetlaniu.
brzanek
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>";
nospor
przy kolorowaniu nie
$tempArray2

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

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

a nie
20 stopni
wink.gif
KsaR
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']];
brzanek
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.
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.