Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]zaznaczenie takich samych wyników
Forum PHP.pl > Forum > Przedszkole
ghastblood
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. ?>
tehaha
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. ?>
ghastblood
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
tehaha
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. ?>
ghastblood
prawie dobrze nie wiem dlaczego ale pominęło wyniki 87 który jest 3 razy.
tehaha
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
ghastblood
Dzięki wielkie już rozumiem o co chodzi jesteś moim mistrzem.

Pozdrawiam
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.