Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]zaznaczenie takich samych wyników
ghastblood
post 3.06.2012, 17:01:19
Post #1





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


skrypt wyświetla mi wyniki zawodników jak mogę zaznaczyć na czerwono zawodników którzy mają takie same wyniki?

  1. <?php
  2.  
  3. require_once "core.php";
  4.  
  5. $sql_wynik = mysql_query('SELECT * FROM zawodnik AS z JOIN kuchenreuter AS k ON k.id_za = z.id_zawodnika') or die(mysql_error());
  6.  
  7. while($r = mysql_fetch_array($sql_wynik, MYSQL_ASSOC)){
  8. $tab[] = $r;
  9. }
  10.  
  11. foreach ($tab as $a => $b) {
  12. $wynik[$a] = $b['wynik'];
  13. $uwagi[$a] = $b['uwagi'];
  14. $uwagi1[$a] = $b['uwagi1'];
  15.  
  16.  
  17. }
  18. array_multisort($wynik, SORT_DESC, $uwagi, SORT_ASC, $uwagi, SORT_DESC, $tab);
  19.  
  20.  
  21. $i=1;
  22. echo '<table border="1">';
  23. echo '<tr>';
  24. echo '<td>L.P</td>';
  25. echo '<td>Nazwisko</td>';
  26. echo '<td>Imie</td>';
  27. echo '<td>Wynik</td>';
  28. echo '<td>Uwagi</td>';
  29. echo '</tr>';
  30.  
  31. foreach ($tab as $a) {
  32. echo '<tr>';
  33. echo '<td>'.$i++.'</td>';
  34. echo '<td>'.$a['nazwisko_zawodnika'].'</td>';
  35. echo '<td>'.$a['imie_zawodnika'].'</td>';
  36. echo '<td>'.$a['wynik'].'</td>';
  37. if($a['uwagi'] > 0){
  38. echo '<td>'.$a['uwagi'].'</td>';
  39. }
  40. if($a['uwagi1'] > 0){
  41. echo '<td>'.$a['uwagi1'].'</td>';
  42. }
  43.  
  44.  
  45.  
  46. }
  47.  
  48.  
  49.  
  50. ?>


Ten post edytował ghastblood 3.06.2012, 17:03:49
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
tehaha
post 3.06.2012, 20:42:59
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


Cytat
podejrzewam że trzeba przelecieć funkcją sprawdzić jakie wyniki się powtarzają w tablicy i przy wyświetlaniu zaznaczyć na czerwono
ale jak to zrobić żeby sprawdzać wyniki z przedziału od 1 - 100 ? może if wrzucić w pętle for.


Nie zrozumiałem tego do końca, ale domyślam, się, że zawodnicy o takich samych wynikach mają być oznaczeni takim samym kolorem. Chyba najprościej będzie po prostu w pierwszej pętli dorzucić tablicę, gdzie przypiszemy kolor do wyniku. Tak więc dodajemy tablicę, gdzie wynik będzie kluczem, a kolor wartością. Kiedy już may tablicę gdzie do każdego wyniku mamy przypisany kolor to potem przy wyświetlaniu posługując się wynikem pobieramy ten kolor z tablicy. Jako klucza lepiej użyć hasz md5() z wartości wyniku, ponieważ wynik zapewne może być ułamkiem. Jeżeli chciałbyś, żeby każdy inny wynik był innym kolorem, to zamiast na sztywno przypisywać kolor w pętli while() możesz tam wstawić jakąś funkcje, która wylosuje kolor albo wygeneruje na podstawie wyniku. To co dodałem do Twojego kodu oznaczyłem //###########

  1. <?php
  2.  
  3. require_once "core.php";
  4.  
  5.  
  6.  
  7. //###########
  8. $colors = array();
  9. //###########
  10.  
  11.  
  12. $sql_wynik = mysql_query('SELECT * FROM zawodnik AS z JOIN kuchenreuter AS k ON k.id_za = z.id_zawodnika') or die(mysql_error());
  13.  
  14. while($r = mysql_fetch_array($sql_wynik, MYSQL_ASSOC))
  15. {
  16. $tab[] = $r;
  17.  
  18.  
  19. //###########
  20. $colorKey = md5($r['wynik']);
  21. $colors[$colorKey] = '#FF0000';
  22. //###########
  23.  
  24. }
  25.  
  26. foreach ($tab as $a => $b) {
  27. $wynik[$a] = $b['wynik'];
  28. $uwagi[$a] = $b['uwagi'];
  29. $uwagi1[$a] = $b['uwagi1'];
  30.  
  31.  
  32. }
  33. array_multisort($wynik, SORT_DESC, $uwagi, SORT_ASC, $uwagi, SORT_DESC, $tab);
  34.  
  35.  
  36. $i=1;
  37. echo '<table border="1">';
  38. echo '<tr>';
  39. echo '<td>L.P</td>';
  40. echo '<td>Nazwisko</td>';
  41. echo '<td>Imie</td>';
  42. echo '<td>Wynik</td>';
  43. echo '<td>Uwagi</td>';
  44. echo '</tr>';
  45.  
  46. foreach ($tab as $a)
  47. {
  48. //###########
  49. $colorKey = md5($a['wynik']);
  50. $color = $colors[$colorKey];
  51. //###########
  52.  
  53. echo '<tr>';
  54. echo '<td>'.$i++.'</td>';
  55. echo '<td>'.$a['nazwisko_zawodnika'].'</td>';
  56. echo '<td>'.$a['imie_zawodnika'].'</td>';
  57. //###########
  58. echo '<td><span style="color:'.$color.'">'.$a['wynik'].'</span></td>';
  59. //###########
  60. if($a['uwagi'] > 0)
  61. {
  62. echo '<td>'.$a['uwagi'].'</td>';
  63. }
  64. if($a['uwagi1'] > 0){
  65. echo '<td>'.$a['uwagi1'].'</td>';
  66. }
  67.  
  68.  
  69.  
  70. }
  71.  
  72.  
  73.  
  74. ?>
Go to the top of the page
+Quote Post
ghastblood
post 3.06.2012, 20:55:22
Post #3





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


twój kod koloruje na czerwono po prostu a zależy mi na tym żeby zaznaczył wyniki które się powtarzają np. zawodnik 1 ma wynik 90 i zawodnik 10 ma też 90 to na czerwono zaznaczy wynik zawodnika 1 i 10 a reszta będzie na czarno
Go to the top of the page
+Quote Post
tehaha
post 3.06.2012, 21:07:45
Post #4





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


ok chyba już rozumiem, czyli jak użytkownicy 1,4,8 mają wynik np. 50, to sa na czerwono, ale jednocześnie jeżeli 3,6,9,11 mają wynik 70 to też są na czerwono lub inny kolor. W tym przykładzie poniżej kolor zostanie przypisany dopiero jeżeli jest więcej niż jeden taki sam wynik.

  1. <?php
  2.  
  3. require_once "core.php";
  4.  
  5.  
  6.  
  7. //###########
  8. $colors = array();
  9. //###########
  10.  
  11.  
  12. $sql_wynik = mysql_query('SELECT * FROM zawodnik AS z JOIN kuchenreuter AS k ON k.id_za = z.id_zawodnika') or die(mysql_error());
  13.  
  14. while($r = mysql_fetch_array($sql_wynik, MYSQL_ASSOC))
  15. {
  16. $tab[] = $r;
  17.  
  18.  
  19. //###########
  20. $colorKey = md5($r['wynik']);
  21. if(isset($colors[$colorKey]) && $colors[$colorKey] === false)
  22. {
  23. $colors[$colorKey] = '#FF0000';
  24. }
  25. else $colors[$colorKey] = false;
  26.  
  27. //###########
  28.  
  29. }
  30.  
  31. foreach ($tab as $a => $b) {
  32. $wynik[$a] = $b['wynik'];
  33. $uwagi[$a] = $b['uwagi'];
  34. $uwagi1[$a] = $b['uwagi1'];
  35.  
  36.  
  37. }
  38. array_multisort($wynik, SORT_DESC, $uwagi, SORT_ASC, $uwagi, SORT_DESC, $tab);
  39.  
  40.  
  41. $i=1;
  42. echo '<table border="1">';
  43. echo '<tr>';
  44. echo '<td>L.P</td>';
  45. echo '<td>Nazwisko</td>';
  46. echo '<td>Imie</td>';
  47. echo '<td>Wynik</td>';
  48. echo '<td>Uwagi</td>';
  49. echo '</tr>';
  50.  
  51. foreach ($tab as $a)
  52. {
  53. //###########
  54. $colorKey = md5($a['wynik']);
  55. $color = $colors[$colorKey];
  56. //###########
  57.  
  58. echo '<tr>';
  59. echo '<td>'.$i++.'</td>';
  60. echo '<td>'.$a['nazwisko_zawodnika'].'</td>';
  61. echo '<td>'.$a['imie_zawodnika'].'</td>';
  62.  
  63. //###########
  64. if($color)
  65. {
  66. echo '<td><span style="color:'.$color.'">'.$a['wynik'].'</span></td>';
  67. }
  68. else
  69. {
  70. echo '<td>'.$a['wynik'].'</td>';
  71. }
  72. //###########
  73.  
  74.  
  75. if($a['uwagi'] > 0)
  76. {
  77. echo '<td>'.$a['uwagi'].'</td>';
  78. }
  79. if($a['uwagi1'] > 0){
  80. echo '<td>'.$a['uwagi1'].'</td>';
  81. }
  82.  
  83.  
  84.  
  85. }
  86.  
  87.  
  88.  
  89. ?>
Go to the top of the page
+Quote Post
ghastblood
post 3.06.2012, 21:13:01
Post #5





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


prawie dobrze nie wiem dlaczego ale pominęło wyniki 87 który jest 3 razy.

Ten post edytował ghastblood 3.06.2012, 21:18:31
Go to the top of the page
+Quote Post
tehaha
post 3.06.2012, 21:28:11
Post #6





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


A faktycznie, usuń ten kawałek "&& $colors[$colorKey] === false" tu nie ma porównania, w tablicy generowane są klucze na podstawie wyniku, jeżeli wynik pojawia się po raz pierwszy, czyli nie ma takiego klucza w tablicy to do klucza jest przypisywana wartość false, natomiast jeśli taki wynik już się pojawił i taki klucz istnieje to jest przypisywany kolor
Go to the top of the page
+Quote Post
ghastblood
post 3.06.2012, 21:31:23
Post #7





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


Dzięki wielkie już rozumiem o co chodzi jesteś moim mistrzem.

Pozdrawiam
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: 14.08.2025 - 06:57